Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)

reference link: http://blog.csdn.net/whiteinblue/article/details/43312059

本文是Matthew D.Zeiler 和Rob Fergus于(纽约大学)13年撰写的论文,主要通过Deconvnet(反卷积)来可视化卷积网络,来理解卷积网络,并调整卷积网络;本文通过Deconvnet技术,可视化Alex-net,并指出了Alex-net的一些不足,最后修改网络结构,使得分类结果提升。

摘要:

CNN已经获得很好的结果,但是并没有明确的理解为什么CNN会表现的这么好,或者CNN应该怎样修改来提升效果。同构本文的可视化技术,可以很好地“理解”中间的特征层和最后的分类器层。通过类似诊断(可视化+“消除”研究ablation study)的方式,这种可视化技术帮助我们找到了超越Alex-net的结构,本文还通过在ImageNet上训练,然后在其他数据集上finetuning获得了很好的结果。

反卷积

文章所用结构与12年Krizhevsky et al的结构相同,如图1。卷积之后利用激活函数进行矫正,再利用Max-pooling进行降采样,最后通过几层全连接层进行分类,最终得到结果。

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第1张图片图1

与之不同的是:1.由于在单块GPU运行,所以将之前3.4.5层的稀疏连接变成稠密连接;2.改变了卷积核大小和步长(根据可视化的结果)

通过反卷积Deconvnet实现可视化:

在每个卷积层都加上了一个反卷积层。在卷积、ReLU、Max-pooling之后,不仅输出给下一层用作输入,也为反卷积提供输入。而反卷积层依次进行unpooling、ReLU和反卷积。见图2。

Unpooling:在max-pooling中利用switches表格记录每个最大值的位置,然后在unpooling中奖该位置填回最大数值,其余位置填0。

ReLU:直接利用ReLU函数,仍然确保输出为非负数。

反卷积:利用相同卷积核的转置作为核,与输入做卷积运算。

训练过程跟以前一样,仍然是从256*256中截取中心和边框五,224*224切片再进行中心翻转,batchsize128,学习率0.01,采用dropout策略。所有权值初始0.01,偏置为0。

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第2张图片图2

在进行试验过程中,发现:

1.层数越高,所提取的特征越抽象,如图3。层2展示了物体的边缘和轮廓,颜色等,层3展示了纹理,层4层5开始体现类与类的差异。

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第3张图片Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第4张图片图3

2.经过一定次数的迭代之后,底层特征趋于稳定,但更高层特征要更多次迭代才能收敛,如图4。

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第5张图片图4

图示分别是迭代1.2.5.10.20.30.40.64次迭代之后的结果。

3.特征不变性,如图5。层数越低,很小的变化都能导致输出特征的变化,但层数越高,影响的结果较小。在最终的正确概率中,略微的位移和缩放都不会改变正确率,但卷积网络无法对旋转产生良好的鲁棒性(如果有良好的对称性,则正确率会产生频率一定的波动)。

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第6张图片图5

列1表示图像变化(垂直移动、缩放和旋转),列2表示层1中原始图像特征向量与改变后特征向量的欧氏距离,列3为层7中的欧氏距离,列4是最后分类器输出正确的概率。

结构选取

第一层卷积核从11*11调整为7*7,步幅大小从4调整为2,优化了最后的结果。

遮挡敏感性

研究图片内部哪个区域产生的作用最大,所以进行了遮挡实验。

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第7张图片图6

列1表示图像被随机遮挡,列2表示第五层特征图最强输出,列3带黑框为被遮挡后特征向量投影到像素空间,列4为被遮挡后分类的正确率,列5为被遮挡后最可能的分类。

列1表示图像被随机遮挡,列2表示第五层特征图最强输出,列3带黑框为被遮挡后特征向量投影到像素空间,列4为被遮挡后分类的正确率,列5为被遮挡后最可能的分类。

图片内特征相关性分析

对图片内某些特征进行遮挡,如图7。

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第8张图片图7

对图片内某些特征进行遮挡,如图7。

然后计算遮挡前与遮挡后的差值:QQ截图20141017103136

 

l是层号,QQ截图20141017113016表示在l层中,图i在进行遮挡前与遮挡后的差值。通过Δ来计算特征的相关性。QQ截图20141017101207

 

Sign为符号函数,H为汉明距离,如果Δ值越小,则该操作所遮挡的图像特征和图像其他特征的相关性越高。最后得出结果如表1。

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第9张图片表1

与随机进行遮挡相比,遮挡眼睛和鼻子所得到的Δ值较小,证明眼睛和鼻子与图片内部其他特征存在相关性。特别的,与层5相比,在层7中的Δ值普遍不大,证明在高层中,已经不关注图像的部件级特征,而更关注品类等高级信息。

实验

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第10张图片表2

在通过复现了网络(表中(a))之后,通过改变卷积核大小、步幅和特征图大小(第一层卷积核从11*11调整为7*7,步幅大小从4调整为2,最终达到了14.8%的Top-5准确率,比当时公开的数据都要精确,且只用了12年的dataset。

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第11张图片表3

表3删除了一些层和参数来验证不同的层和参数会对结果造成什么影响,在每个删除后都会进行重新训练。最终发现删除6、7层全连接层,错误率只有轻微提升,删掉两层卷积层错误率也没有明显提升,但删除这四层之后,错误率急剧提升,这可能表明总体深度对模型很重要。扩大全连接层基本无效,扩大卷积层有一点提升,但扩大他们会导致过拟合。

特征泛化能力

在不改变模型1~7层训练结果,只训练softmax层的情况下,又进行了Caltch-101、Caltch-256、PASCAL VOC 2012三个库的测试。还应用到了其他分类器。

Caltch-101库:如表4。重新训练的准确率并不高,但经过ImageNet数据训练后的网络比历史最好成绩还要好2.2%

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第12张图片表4

Caltch-256库:如表5。重新训练的准确率并不高,但经过ImageNet数据训练后的网络比历史最好成绩还要好19%。

Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net)_第13张图片表5

Caltch-256库:如表6。重新训练的准确率并不高,但经过ImageNet数据训练后的网络比历史最好成绩还要好19%。



你可能感兴趣的:(Deep learning学习笔记(2):Visualizing and Understanding Convolutional Networks(ZF-net))