使用可视化的方式解释为什么卷积网络表现如此好

本篇文章记录我阅读Visualizing and Understanding Convolutional Networks论文。

目录

  • 使用Deconvnet可视化feature map
  • occlusion 实验
  • correspondence 分析
  • experiments
  • in a nutshell

前言

作者对模型(Krizhevsky, A., Sutskever, I., and Hinton, G.E. Im-
agenet classification with deep convolutional neural
networks. In NIPS, 2012)进行了修改,架构图如下:
在这里插入图片描述
以下的部分都是基于这个模型进行。

使用Deconvnet进行可视化

Deconvnet可以简单理解为反向的卷积神经网络,里面包含了卷积运算。反向卷积是为了从特征图的激活值(ReLU的输出或池化后的值)映射回到图像空间,为了直观,首先给出Deconvnet的架构图
在这里插入图片描述
对于池化部分,模型使用最大池化,我们为了还原,在模型前向过程中,我们记录最大池化的最大元素的位置,以这样的方式来近似原来的输入。对于ReLU (restified linear unit)因为它的表达式是 r ( x ) = m a x ( 0 , x ) r(x)=max(0,x) r(x)=max(0,x),所以我们直接使用这个函数即可,当然你可能会问对于负数没法还原怎么办?你能够这样理解,如果能够完全还原的话得到的就会是原始图片中的某一个patch(PS:作者是将strongest activation映射回到图片空间,而不是整个特征图,可以通过将其他的activations设为0实现),而卷积部分只关注正数部分,因为对于负数部分,经过修正线性单元后都变为了0,所以从这一点来说,我们还原的也是卷积层所看见的或者所表达的。对于反卷积的做法,文中引用了这篇paper(Zeiler, M., Taylor, G., and Fergus, R. Adaptive decon-
volutional networks for mid and high level feature
learning. In ICCV, 2011.)。关于去卷积过程,网上有很多资料,这里不详细说明(可参考去卷积和卷积)。其实去卷积就是通过设置padding,然后只需要垂直和水平transpose filters,最后进行卷积运算即可。这个也是一种近似,不能够还原回去,因为你在进行卷积的过程就把filter region里面的元素合为了一个,有一点的信息损失,这同样是卷积层所actually看见的。
这里给出一些作者的结果:
在这里插入图片描述
作者是对每一层layer随机选取一个feature map子集,然后对于每一张图片选择最大的激活值去映射回到图片空间。上图是第5layer的一些结果。
我们可以得到一些信息从上面的结果来说:
特征层越高就拥有更强大的不变性,这个不变性体现在两点,一个是不同图片之间,以及一个图片的旋转、平移和放缩变化所对应的图片。对于不同图片之间,例如上图中的row-1,col-2,某一个feature map关心的是图片中的某一discriminant part,在row-1,col-2中对应的是grass,我们能看见一块绿在左边的特征映射中,而不是前景中的人物、动物之类。你再看其他的feature maps的映射,可以发现其他的feature maps关注的就不再是背景,而是前景对象的轮廓之类。所以一个特征图表达的内容并不是图片的全部,它能够处理不同的deformation图片,而产生相同的东西,比如这里的grass,由于feature map对不同图片关注了相同的东西,所以这就是高层feature map在不同图片之间的特征不变性,也说明了我们的网络提取的特征不是随机的,是真的能够学习到某一个特征的,是有一定依据的。还有一种是图片的变形,在训练时,作者他们对图片进行了垂直平移、缩放和旋转。并分析了这些图片与原始图片之间第1层和第7层特征向量的欧氏距离,发现最后一层特征的欧氏距离对于平移和缩放具有一定的不变性(呈线性),而第一层在当图片发生很小的变化时,特征向量之间的欧氏距离变化很大(指数型变化),不变性很差。
在这里插入图片描述
横向分别是图片集、第1层欧氏距离与变化度的函数、第7层欧氏距离与变化度的函数、正确类别对应的预测概率;纵轴是不同的变换,从上至下,依次是垂直平移、放缩、旋转。
PS:后期会上传自己的复现代码

occlusion 实验

作者也进行了遮挡性实验,通过一个灰色方块去遮挡图片的某一个部分,e.g脸、鼻子。进行这个实验的目的是为了证明卷积神经网络是真的识别到了对象的位置,而不是利用surrounding context。对于原始图片在模型的layer5的最大值特征图我们叫做strongest feature map(应该是将某一feature map的所有激活值相加得到的数进行比较),如下图所示,第一列的图是遮挡的示意图,第二列的图是对于不同遮挡位置的strongest feature map激活值的和,例如中间的部分为蓝色,表示了当灰色盒子在狗的头部时,这个特征图的激活值变得很小(越红越大,越蓝越小),第三列是原始图在layer5 strongest feature map的像素空间的投影,黑框表示该图片的投影,其他的三个表示其他图片,这里给出strongest feature map的像素空间的映射是为了说明此特征图关注的东西是什么,这与第二列的结果应该是一致的。第四列表示对于不同遮挡位置的分类器的正确类别的预测概率值,例如当我们使用灰盒子遮住狗的头,那么狗这个类别的预测概率值变得很小,说明了狗头对于分类器分类的重要性,这里注意一下,row-2,col-4和row-2,col-2蓝色部分有点不一样,因为分类器关注的是layer5的所有feature maps,可能其他的feature maps会关注汽车的轮子,而最后分类器认为轮子比起text feature 更重要,所以row-2 col-4在轮子那里变得很蓝。最后一列就是说不同的遮挡位置模型的预测类别是什么,深蓝代表正确类别,比如row-1,灰色盒子遮挡很多地方,除了脸部,我们都能够正确预测它为狗,而row-2在很多地方的遮挡都会使得模型不能够预测正确。
在这里插入图片描述

correspondence 分析

这一部分就是检查是否模型能够建立不同图片的相同部位的对应关系,比如不同的人都有鼻子,他们在模型中是否能够得到相对应的表达呢? θ i l = x i l − x ~ i l \theta^l_i = x^l_i − x̃^l_i θil=xilx~il , where x i l x^l_i xil and x ~ i l x̃^l_i x~il are the
feature vectors at layer l l l for the original and occluded
images respectively.然后我们计算在不同图片中 θ i l \theta^l_i θil值之间的Hamming距离之和,如果越小,说明一致性越强,反之则弱,为了有一个参照,从下图的第5列开始在不同图片中进行随机遮挡,期望得到一个更大的hamming距离,实验结果分别在layer5和layer7进行,从layer5中说明了有一定的一致性,在更高层可能是由于遮挡某一特定部位和随机遮挡并没有影响分类,而分类器更多关注了分类,所以结果差不多。
在这里插入图片描述

experiments

作者在这一部分验证了自己的模型比Krizhevsky的模型效果更优;然后有进行了模型修改的实验,包括修改层的尺寸、删除层等,说明了model需要一定深度才能够很好的分类;然后又使用pretrained ImageNet model在另外的三个数据集上进行了实验,仅仅是训练softmax层,效果不错,前两个数据集打败了当前最好的模型;最后作者将分类器插入到卷积层的每一层后面进行实验,这个证明了伴随特征等级的加深(特征层的加深),他们能够学到更强的特征。

In a nutshell

这一部分作者总结了自己的这篇paper,并提到如果使用不同的损失函数(能够关注图片中的多个对象),那么这个model能够应用到目标检测任务中去。在第一层的特征中,可能是一些边缘信息,而第二层是对第一层的特征进行组合,可能得到有趣的花纹,第三层对第二层的特征进行组合可能得到物体的某一部分,这样下一层的特征是上一层特征的更高抽象,因为在得到下一层的feature map时是需要计算上一层所有的feature maps的,具体学习到什么样的特征是由参数决定的,每一个卷积层都实现了又一次的特征的整合。关于感受野的问题(PS:感受野指的是当前卷积层所能够“看到”的原始图片的大小。),伴随着层数加深,卷积层的感受野越来越大,但是一般只要最后的feature map的 W和H任意一个不为0,那么看到的图片都不是完整的原始图片,而是原始图片的一个part。对于池化层的作用主要是为了降低计算复杂度和增加平移不变性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值