ResNet_v2¶
论文Identity Mappings in Deep Residual Networks通过推导和实验证明了恒定式映射(Identity Mapping)的重要性,同时发现将批量预处理(BN)和激活函数(ReLU)作用于卷积操作之前(进行预激活)能够使得训练更容易
翻译论文地址:[译]Identity Mappings in Deep Residual Networks

BasicBlock实现¶
- 实现文件:
py/lib/models/resnet/basic_block_v2.py
其实现流程调整如下:
# 后激活
x -> Conv(3x3) -> BN -> ReLU -> Conv(3x3) -> BN -> (+x) -> ReLU
# 预激活
x -> BN -> ReLU -> Conv(3x3) -> BN -> ReLU -> Conv(3x3) -> (+x)
Bottleneck实现¶
- 实现文件:
py/lib/models/resnet/bottleneck_v2.py
其实现流程调整如下:
# 后激活
x -> Conv(1x1) -> BN -> ReLU -> Conv(3x3) -> BN -> ReLU -> Conv(1x1) -> BN -> (+x) -> ReLU
# 预激活
x -> BN -> ReLU -> Conv(1x1) -> BN -> ReLU -> Conv(3x3) -> BN -> ReLU -> Conv(1x1) -> (+x)
ResNet_v2实现¶
- 实现文件:
py/lib/models/resnet/resnet.py
训练¶
比较ResNet-101_v2和ResNet-101
- 数据集:
voc 07+12 - 迭代次数:
100 - 批量大小:
96(train)48(test)
-
图像预处理:
- 训练:缩放+随机裁剪+随机水平翻转+颜色抖动+随机擦除+数据标准化
- 测试:缩放+
Ten Crop+数据标准化
-
损失函数:标签平滑正则化,平滑因子
0.1 - 优化器:
Adam,学习率3e-4,权重衰减3e-5 - 学习率策略:
warmup(共5轮)+余弦退火(95轮)
训练结果¶



完整训练日志参考训练日志
检测精度¶
Top-1 AccuracyResNet-101: 90.66%ResNet-101_v2: 90.85%
Top-5 AccuracyResNet-101: 99.35%ResNet-101_v2: 99.48%
Flops和参数数目¶
resnet-101_v2: 15.668 GFlops - 169.926 MB
resnet-101: 15.668 GFlops - 169.942 MB
小结¶
| CNN Architecture | Data Type (bit) | Model Size (MB) | GFlops (1080Ti) | Top-1 Acc(VOC 07+12) | Top-5 Acc(VOC 07+12) |
|---|---|---|---|---|---|
| ResNet-101 | 32 | 169.942 MB | 15.668 | 90.66% | 99.35% |
| ResNet-101_v2 | 32 | 169.926 MB | 15.668 | 90.85% | 99.48% |
从训练结果来看,采用预激活的ResNet模型能够更快的训练;另外,和之前的ResNet-18/34/50的训练结果相比,ResNet-101能够得到更高的准确率
进一步训练方向:
- 更大批量训练
- 更多数据集训练
- 使用预训练模型