Visualizing and Understanding Convolutional Networks
CNN领域可视化理解的开山之作。
这篇文献告诉我们CNN的每一层到底学习到了什么特征,然后作者通过可视化进行调整网络,提高了精度。
网络结构
与AlexNet类似
通过反卷积实现可视化
- unpooling:利用switches表格记录每个最大值的位置,在该位置填回最大数值,其余位置填0。
- Relu:直接利用ReLU函数,仍然确保输出为非负数。
- 反卷积:利用相同卷积核的转置作为核,与输入做卷积运算。
反卷积
输入图像大小为4x4,卷积Kernel为3x3, 没有Padding,Stride为1, 则输出图像的大小为2x2。
输入矩阵可展开为16维向量,记作X,输出矩阵可展开为4维向量,记作Y,卷积运算可表示为
Y = C X Y = CX Y=CX
C其实就是如下的稀疏矩阵:
若输入图像大小2×2,则首先展开成(4,1)大小的向量,反卷积运算可表示为:
X = C T ? Y X=C^T*Y X=CT?Y
可视化结果
结论:
1.层数越高,所提取的特征越抽象
- Layer1和2 颜色、边缘、轮廓
- Layer3 纹理特征
- Layer4 类别之间的差异
- Layer5 同类之间的差异
2.特征学习的过程
经过一定次数的迭代之后,底层特征趋于稳定,但更高层特征要更多次迭代才能收敛。
- 在训练网络的时候,不要着急看结果,看结果需要保证网络收敛。
3.特征不变性。
平移和尺度变化并不影响CNN的分类结果,但CNN无法对旋转产生良好的鲁棒性。
结构的选择
- filter 11×11 strides 4 -> filter7×7 strides 2
遮挡测试
当关键区域发生遮挡时,分类器性能急剧下降。
相关性分析
解释物体部件之间的相关性,比如人脸中眼睛和鼻子的空间位置的关系。
实验
1.ImageNet 2012
14.8%的Top-5准确率,比当时公开的数据都要精确,且只用了12年的dataset。
最终发现删除6、7层全连接层,错误率只有轻微提升,删掉两层卷积层错误率也没有明显提升,但删除这四层之后,错误率急剧提升。
2.特征泛化能力
在不改变模型1~7层训练结果,只训练softmax层的情况下,又进行了Caltch-101、Caltch-256、PASCAL VOC 2012三个库的测试。
总结:
- 模型的深度很重要,虽然这也增加了过拟合的可能。
- 可适当精简层,特别是全连接层。
- 在扩充训练集的时候,调整图像角度是关键。
- 可以先进行其他数据记得预训练。