Deep Residual Learning for Image Recognition 图像识别中的深度残差学习网络
残差结构
Residual learning:让网络层拟合H(x)-x,而非H(x)
注:整个building block仍旧拟合H(x),注意区分building block与网络层的差异,两者不一定等价
网络退化
网络退化(degradation problem)
越深的网络拟合能力越强,因此越深的网络训练误差应该越低,但实际相反
原因:并非过拟合,而是网络优化困难
- CIFAR-10上用20层和56层的类VGG的plain网络的训练错误和测试错误率
- 左图为plain网络 右图为ResNet,明显看出ResNet网络越深错误率越小
- 左图:18层右图: 34层网络
//蓝色框:可认为是额外增加层
思考:若蓝色框里的网络层能学习到恒等映射,34层网络至少能与18层网络有相同性能
问:如何让额外的网络层更容易的学习到恒等映射?
答: skip connection == residual learning == shortcut connectio
- 左图为plain网络随着层数的加深错误率反而上升,中间图为ResNet,右图表示ResNet也不能太深
ShortCut mapping
当网络层的输入与输出维度变化时,直接将输入引到输出再相加是行不通的,所以需要对identity部分做一个修改
Identity与F(x)结合形式探讨:
1.A-全零填充:维度增加的部分采用零来填充,分辨率大的部分采取池化下降为匹配的分辨率
2.B-网络层映射:当维度发生变化时,通过网络层映射(例如:1 * 1卷积)特征图至相同维度
3.C-所有Shortcut均通过网络层映射(例如:1 * 1卷积)
- Shortcut mapping有利于梯度传播
ResNet结构
ResNet结构
划分为6个stage
1.头部迅速降低分辨率2.4阶段残差结构堆叠3.池化+FC层输出
残差结构堆叠两种方式
Basic:两个3 * 3卷积堆叠
Bottleneck:利用1 * 1卷积减少计算量
Bottleneck:第一个1*1下降1/4通道数第二个1+1提升4倍通道数
实验结果及分析
混淆矩阵概念
混淆矩阵(Confusion Matrix)常用来观察分类结果,其是一个N*N的方阵,N表示类别数。
混淆矩阵的行表示真实类别,列表示预测类别。例如,猫狗的二分类问题,有猫的图像10张,狗的图像30张,模型对这40张图片进行预测,得到的混淆矩阵为
类别 | 阿猫 | 阿狗 |
---|---|---|
阿猫 | 7 | 3 |
阿狗 | 10 | 20 |
从第一行中可知道,10张猫的图像中,7张预测为猫,3张预测为狗,猫的召回率(Recall)为7/10 = 70%,
从第二行中可知道,30张狗的图像中,8张预测为猫,22张预测为狗,狗的召回率为20/30 = 66.7%,
从第一列中可知道,预测为猫的17张图像中,有7张是真正的猫,猫的精确度(Precision)为7 / 17 = 41.17%
从第二列中可知道,预测为狗的23张图像中,有20张是真正的狗,狗的精确度(Precision)为20 / 23 = 86.96%
模型的准确率(Accuracy)为 (7+20) / 40 = 67.5%
可以发现通过混淆矩阵可以清晰的看出网络模型的分类情况,若再结合上颜色可视化,可方便的看出模型的分类偏好。