深度学习之可视化ZFNet-解卷积

  • 为什么提出
    • 提出的背景
  • 基本的思想及其过程

为什么提出

提出的背景


 由于AlexNet的提出,大型卷积网络开始变得流行起来,但是人们对于网络究竟为什么能表现的这么好,以及怎么样能变得更好尚不清楚,因此为了针对上述两个问题,提出了一个新颖的可视化技术来一窥中间特征层的功能以及分类的操作。


基本的思想及其过程

 可视化技术揭露了激发模型中每层单独的特征图,也允许观察在训练阶段特征的演变过程且诊断出模型的潜在问题。
 可视化技术用到了多层解卷积网络,即由特征激活返回到输入像素空间。
 同时进行了分类器输出的敏感性分析,即通过阻止部分输入图像来揭示那部分对于分类是重要的。
 这个可视化技术提供了一个非参数的不变性来展示来自训练集的哪一块激活哪个特征图,不仅需要裁剪输入图片,而且自上而下的投影来揭露来自每块的结构激活一个特征图。
 可视化技术依赖于解卷积操作,即卷积操作的逆过程,将特征映射到像素上。由于解卷积是一种非监督学习,因此只能作为已经训练过的卷积网的探究,不能用作任何学习用途。
 下图为卷积过程以及解卷积过程。
深度学习之可视化ZFNet-解卷积_第1张图片
深度学习之可视化ZFNet-解卷积_第2张图片
非池化:池化操作是非可逆的,但是我们可以用一组转换变量switch在每个池化区域中通过记录最大值的位置来获得一个近似逆。在解卷积网中,非池化操作使用这些转换来放置上述最大值的位置,保存激活的位置,其余位置都置0。
纠正:卷积网中使用非线性的ReLU来修改特征图来确保特征图总是正值。为了获得在每层的有效(也应该是正值)的特征重建,也在解卷积网中利用了ReLU。
滤波:解卷积网中利用卷积网中的相同的滤波器的转置应用到纠正过的特征图中,而不是上层的输出。也就是对滤波器进行水平方向和垂直方向的翻转。从高层向下投影使用转换变量switch,这个转化变量switch产生自向上的卷积网的最大池化操作。由于重建由一个单独的激活获得,因此也就只对应于原始输入图像的一小块。
深度学习之可视化ZFNet-解卷积_第3张图片
 上图左半部分是一个解卷积层,右半部分为一个卷积层。解卷积层将会重建一个来自下一层的卷积特征近似版本。图中使用switc来记录在卷积网中进行最大池化操作时每个池化区域的局部最大值的位置,经过非池化操作之后,原来的非最大值的位置都置为0。
预处理:网络对输入图片进行预处理,裁剪图片中间的256x256区域,并减去整个图像每个像素的均值,然后用10个不同的对256x256图像进行224x224的裁剪(中间区域加上四个角落,以及他们的水平翻转图像),对以128个图片分的块进行随机梯度下降法来更新参数。起始学习率为 102 ,动量为0.9,当验证集误差停滞时,手动调整学习率。在全连接网络中使用概率为0.5的dropout,并且所有权值都初始化为 102 ,偏置设为0。
  在训练时第一层的可视化揭露了一些占主导的因素,为了了解这些,我们采用重新归一化每个卷积层的滤波器,这些滤波器的均方根值超过了一个固定半径的 101 。这是非常关键的,尤其是在模型中的第一层,因为输出图片大约在[-128,128]的范围内。
特征可视化:每个特征单独投影到像素空间揭露了不同的结构能刺激不同的一个给定的特征图,因此展示了它对于变形的输入内在的不变性。下图即在一个已经训练好的网络中可视化后的图。
深度学习之可视化ZFNet-解卷积_第4张图片
 由上图可以看到第二层应对角落和其他边缘或者颜色的结合;第三层有更加复杂的不变性,捕捉到了相似的纹理;第四层显示了特定类间显著的差异性;第五层显示了有显著构成变化的整个物体。
  训练时的特征演变过程:外表突然的变化导致图像中的一个变换即产生了最强烈的激活。模型的底层在少数几个epoches就能收敛聚集,然而上层在一个相当多的epoches(40-50)之后才能有所变化,这显示了让模型完全训练到完全收敛的必要性。可以由下图看到颜色对比度都逐步增强。
深度学习之可视化ZFNet-解卷积_第5张图片
特征不变性:一般来说,小的变化对于模型的第一层都有非常大的影响,但对于最高层的影响却几乎没有。对于图像的平移、尺度、旋转的变化来说,网络的输出对于平移和尺度变化都是稳定的,但却不具有旋转不变性,除非目标图像时旋转对称的。下图为分别对平移,尺度,旋转做的分析图。
深度学习之可视化ZFNet-解卷积_第6张图片
 上图按行顺序分别为对5类图像进行不同程度的垂直方向上的平移、尺度变换、旋转对输出结果影响的分析图。按列顺序分别为原始变换图像,第一层中原始图片和变换后的图片的欧氏距离,第7层中原始图片和变换后的图片的欧氏距离,变换后图片被正确分类的概率图。
  可视化不仅能够看到一个训练完的模型的内部操作,而且还能帮助选择好的网络结构。
 ZFNet的网络结构实际上与AlexNet没有什么很大的变化,差异表现在AlexNet用了两块GPU的稀疏连接结构,而ZFNet只用了一块GPU的稠密连接结构;同时,由于可视化可以用来选择好的网络结构,通过可视化发现AlexNet第一层中有大量的高频和低频信息的混合,却几乎没有覆盖到中间的频率信息;且第二层中由于第一层卷积用的步长为4太大了,导致了有非常多的混叠情况;因此改变了AlexNet的第一层即将滤波器的大小11x11变成7x7,并且将步长4变成了2,下图为AlexNet网络结构与ZFNet的比较。
深度学习之可视化ZFNet-解卷积_第7张图片
深度学习之可视化ZFNet-解卷积_第8张图片
 在稍微更改了第一层之后,分类性能提升了,下图为两个网络结构可视化特征图。
深度学习之可视化ZFNet-解卷积_第9张图片
 上图(a)为没有经过裁剪的图片经过第一个卷积层后的特征可视化图,注意到有一个特征全白,(b)为AlexNet中第一个卷积层特征可视化图,(c)为ZFNet中第一个卷积层可视化图,可以看到相比前面有更多的独特的特征以及更少的无意义的特征,如第3列的第3到6行,(d)为AlexNet中第二个卷积层特征可视化图,(e)为ZFNet中的第二个卷积层特征可视化图,可以看到(e)中的特征更加干净,清晰,保留了更多的第一层和第二层中的信息。
 可能看到现在,我们一直存在一个疑问,那就是,整个模型它自己清楚目标在图像中的具体位置吗?
  可以用实验来证明一下,即用一个灰色小方块来挡住图像中的目标,然后再观测输出的分类情况来分析,如下图
深度学习之可视化ZFNet-解卷积_第10张图片
 上图为对三个不同的测试图片中的不同位置用灰色小方块进行掩盖后,观测分类输出的改变情况。第一列(a)为原始测试图片,第二列(b)为某个区域被灰色小方块掩盖后的网络结构中第五层的特征图,第三列(c)为将第五层的特征图投影到输入图像的可视化图像,第一行表明最强烈的特征表现在狗狗的面部区域,(d)为正确分类概率的图,(e)为最有可能的标签。
 上述结果表明,如果图像中的目标被遮挡,那么被正确分类的概率会显著降低,这表明这种可视化与激发特征图的图像结构式真正对应上的。即大概能知道位置。
 为了更进一步探究在深度模型中如何对同一类物体的不同图像进行一致性分析
 对五张小狗(同一类)的不同图片的不同区域进行掩盖,然后进行分析观察探究深度模型是对一类物体的那部分进行一致性分析的过程。如下图
深度学习之可视化ZFNet-解卷积_第11张图片
 上图中按列的顺序都是依次遮挡住左眼,右眼,鼻子等
 对于每幅图像i,计算: ϵli=xlix¯li ,其中 xli x¯li 各自代表第l层中原始和被遮挡的图像,然后计算成对的图像(i,j): Δl=5i,j=1,ijH(sign(ϵli),sign(ϵlj)) ,H为汉明距离,即汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。所以得到的值越小,则有更好的一致性。下图对第5层和第7层的特征图中为2,3,4列以及其他随机遮挡情况进行分析的 Delta 的得分情况,得分越低代表有更好的一致性。
深度学习之可视化ZFNet-解卷积_第12张图片
 由上图可以观察到,在第5层随机遮挡的情况比其他眼睛鼻子被遮挡的情况一致性分析较差,而第7层中,这四类却都差不多,那是因为底层判别的是一类物体共有的部分,而高层判别的是类别中不同的品种这种更高维的部分了

你可能感兴趣的:(深度学习,深度学习)