深度学习经典网络解析图像分类篇(三):ZFNet

深度学习经典网络解析图像分类篇(三):ZFNet

  • 1.背景介绍
  • 2. ZFNet网络
    • 2.1 ZFNet网络架构
    • 2.2 ZFNet要点
      • 2.1 通过反卷积可视化
      • 2.2 CNN的平移和缩放不变性
      • 2.3 可视化特征学习的过程
    • 2.4 卷积的工作原理
  • 3. ZFNet总结

1.背景介绍

  ZFNet在2013年 ILSVRC 图像分类竞赛获得冠军,错误率11.19% ,比去年的AlexNet降低了5%,ZFNet是由 Matthew D.Zeiler 和 Rob Fergus 在 AlexNet 基础上提出的大型卷积网络。ZFNet解释了为什么卷积神经网络可以在图像分类上表现的如此出色,以及研究了如何优化卷积神经网络。ZFNet提出了一种可视化的技术,通过可视化,我们就可以了解卷积神经网络中间层的功能和分类器的操作,这样就就可以找到较好的模型。ZFNet还进行消融实验来研究模型中的每个组件,它会对模型有什么影响。
  对应论文:《Visualizing and Understanding Convolutional Networks》
深度学习经典网络解析图像分类篇(三):ZFNet_第1张图片

2. ZFNet网络

2.1 ZFNet网络架构

  ZFNet网络结构和AlexNet保持一致,但是卷积核的大小和步长发生了变化。
  主要改进:

   ➢ 将第一个卷积层的卷积核大小改为了7×7
   -➢ 将第二、第三个卷积层的卷积步长都设置为2
   ➢ 增加了第三、第四个卷积层的卷积核个数。

深度学习经典网络解析图像分类篇(三):ZFNet_第2张图片深度学习经典网络解析图像分类篇(三):ZFNet_第3张图片
深度学习经典网络解析图像分类篇(三):ZFNet_第4张图片

2.2 ZFNet要点

2.1 通过反卷积可视化

  可视化可以理解卷积网络的操作需要解释中间层的特征活动。ZFNet提出了一种新颖的方法来将这些活动映射回输入像素空间,显示最初在特征映射中引起给定激活的输入模式。ZFNet使用反卷积网络(deconvnet)实现此映射。反卷积网络可以被认为是一个使用相同组件(过滤,池化)的逆向的卷积模型,即不是将像素映射到特征,而是将特征映射到像素。,它们不会用于任何学习能力,仅作为对已经训练好的卷积网络的探索。
深度学习经典网络解析图像分类篇(三):ZFNet_第5张图片
   如上图所示,为了检查一个卷积网络,网络的每个层都附有一个反卷积网络,提供了一条返回图像像素的连续路径。首先,将输入图像呈现给卷积网络并通过所有层计算特征。为了检查给定卷积网络的激活,我们将图层中的所有其他激活设置为零,并将特征图作为输入传递给附加的反卷积网络层。然后我们依次反池化、纠正和过滤以重建下面的层中的活动,从而产生所选择的激活。 然后重复这一过程,直到达到输入像素空间。

  反池化:池化的逆运算,但可以用一组转换变量switch在每个池化区域中通过记录最大值的位置来获得一个近似逆。在反卷积网中,反池化操作使用这些转换来放置上述最大值的位置,保存激活的位置,其余位置都置0。

  纠正:卷积网中使用非线性的ReLU来修改特征图来确保特征图总是正值。为了获得在每层的有效(也应该是正值)的特征重建,也在反卷积网中利用了ReLU。

  滤波:反卷积网中利用卷积网中的相同的滤波器的转置应用到纠正过的特征图中,而不是上层的输出。也就是对滤波器进行水平方向和垂直方向翻转。从高层向下投影使用转换变量switch,这个转化变量switch产生自向上的卷积网的最大池化操作。由于重建由一个单独的激活获得,因此也就只对应于原始输入图像的一小块。

  可视化结果:
  下图显示了培训完成后模型的特征可视化。 可以发现通过CNN学习后,学习到的是具有辨别性的特征,比如要我们区分人脸和狗,那么通过CNN学习后,背景部位的激活度基本很少,我们通过可视化就可以看到我们提取到的特征忽视了背景,而是把关键的信息给提取出来了。Layer 1、Layer 2学习到的特征基本上是颜色、边缘等低层特征;Layer 3学习到的是纹理特征,比如上面的一些网格纹理;Layer 4学习到的则是比较有区别性的特征,比如狗;Layer 5学习到的则是具有辨别性关键特征

2.2 CNN的平移和缩放不变性

  不变性意味着即使目标的外观发生了某种变化,但是你依然可以把它识别出来。平移是一种几何变换,表示把一幅图像或一个空间中的每一个点在相同方向移动相同距离。比如对图像分类任务来说,图像中的目标不管被移动到图片的哪个位置,得到的结果(标签)应该是相同的,这就是卷积神经网络中的平移不变性。
为什么CNN具有平移不变性?

  简单地说,卷积+最大池化约等于平移不变性
  卷积:图像经过平移,相应的特征图上的表达也是平移的。
  池化:比如最大池化,它提取感受野中的最大值,如果最大值被移动了,但是仍然在这个感受野中,那么池化层也仍然会输出相同的最大值。
CNN层数越高不变性越强,但是不具有旋转不变性。

  下图按行顺序分别为对5类图像进行不同程度的垂直方向上的平移、尺度变换、旋转对输出结果影响的分析图。a1为原始变换图像,a2是原始图片的欧氏距离,a3是经过7层变换后的图片的欧氏距离,a4是变换后图片被正确分类的概率图。

2.3 可视化特征学习的过程

  下图显示了,在网络训练过程中,每一层学习到的特征是怎么变化的,上面每一整张图片是网络的某一层特征图,然后每一列有8个小图片,分别表示网络epochs次数为:1、2、5、10、20、30、40、64的特征图:
深度学习经典网络解析图像分类篇(三):ZFNet_第6张图片

  1. 仔细看每一层,在迭代的过程中的变化,出现了sudden jumps;
  2. 从层与层之间做比较,我们可以看到,低层在训练的过程中基本没啥变化,比较容易收敛,高层的特征学习则变化很大。
  3. 从高层网络conv5的变化过程,我们可以看到,刚开始几次的迭代epochs,基本变化不是很大,但是到了40~50的迭代epochs的时候,变化很大。
    深度学习经典网络解析图像分类篇(三):ZFNet_第7张图片

  再上图中(a):经过裁剪的图片经过第一个卷积层后的特征可视化图。一个特征占主导地位。(b):AlexNet在卷积后的第一层特征。(c):ZFNet在卷积后的第一层特征。较小的步长(2 vs 4)和卷积核尺寸(7x7 vs 11x11)导致更多有效特征和更少的无效特征。(d):AlexNet在第二层卷积后特征的可视化。(e):ZFNet第二层卷积后特征的可视化。它们更干净,没有(d)中可见的混叠伪影。

2.4 卷积的工作原理

  CNN到底是如何来学习图像特征的?如果给一张狗的照片,背景是家具,那么卷积是如何确定狗在图像中的位置的?ZFNet进行了消融实验:使用用灰色方块覆盖场景的不同部分
  深度学习经典网络解析图像分类篇(三):ZFNet_第8张图片
  上图使用了三个测试示例,a列是原始被遮盖的图像,b列是被灰色小方块掩盖后的网络结构中第五层的特征图,c列是把第五层的特征图(b)反卷积的可视化图像,我们可以看到每幅图像的特征区域。d列为正确分类概率的图,e列是分类的概率。

  更进一步探究在深度模型中如何对同一类物体的不同图像进行一致性分析:
  对五张不同种类的小狗的图片的不同区域(依次遮挡住左眼,右眼,鼻子等)进行掩盖,然后进行分析观察探究深度模型是对一类物体的那部分进行一致性分析的过程:

深度学习经典网络解析图像分类篇(三):ZFNet_第9张图片
  在5个不同的狗图像中的不同物体部分的对应性。眼睛和鼻子的得分较低 (与随机物体部分相比),这表明模型隐含地建立了某种形式的对应关系,在模型的第5层,各部分的对应关系。在第7层,这些分数更加相似,也许是由于上层试图区分不同品种的狗。
这表明底层判别的是一类物体共有的部分,而高层判别的是类别中不同的品种这种更高维的部分

3. ZFNet总结

  ZFNet的结构与AlexNet一致,为什么能够下降五个点?这让我们对神经网络里面的每一个神经元或者卷积在做什么有了更深入的理解。

  ZFNet将第一个卷积层大小改成7×7了,原来是11×11,第一个卷积层大大小改小了以后,最大作用就是能感受更细致的东西,我们知道11×11是大尺度的模板,它检测的一般都是比较粗旷粒度的系列的特征,比较细节的特征一般不太看,所以这个时候呢第一层卷积用大模板去套的时候就丢掉了很多细节信息。所以ZFNet将第一个卷积层大小改成7×7为后面层的更好的特征学习奠定了基础。

  ZFNet增加了第三层和第四层卷积核个数。通过反卷积可视化以后发现,第三层、第四层的卷积核已经有一些语义概念的这种结构元素了,就是他那个描述的元素,就像前面几幅图刚才看到前面那个他们有一定的结构,有意义、有语义信息了。如果这个时候我的卷积核的个数太少了,能记住的语义结构就很少,就是能学习到的语义结构就很少,如果这一层有512个卷积核的话,就能描述512种模式结构。如果这一层只有384个卷积核,那我能描述的结构只有384个,这么多物体只记得384个模板不太够用。所以ZFNet扩张了这一层的卷积核的个数,当然这不是拍脑袋想的,是他发现了这一层第三层和第四层已经开始不再是基元,结果我们认为世界的基元总是很少的,它的组合能组合出任意复杂的东西,所以基元不需要那么多东西,但是到了高层概念以后,他已经有基元组合的概念。已经有很多了,组合起来东西有很多种,结果你仅靠384个是记不住的。

  总体上来说,ZFNet反卷积操作实现对中间层的可视化,ZFNet针对可视化结果对网络结构进行改进

你可能感兴趣的:(#,图像分类篇,深度学习,神经网络,机器学习,算法)