Visualizing and Understanding Convolutional Networks论文研读

可视化与理解卷积神经网络

话在前面:《Visualizing and Understanding Convolutional Networks》,可以说是CNN领域可视化理解的开山之作,这篇文献告诉我们CNN的每一层到底学习到了什么特征,然后作者通过可视化进行调整网络,提高了精度。
这篇文献的目的,就是要通过特征可视化,告诉我们如何通过可视化的角度,查看你的精度确实提高了,你设计CNN学习到的特征确实比较牛逼。

摘要

大型卷积网络模型最近在ImageNet基准上展示了令人印象深刻的分类性能(Krizhevsky等人,2012)。然而,对于它们为什么表现得如此好,或者如何改进,还没有明确的理解。在本文中,我们解决了这两个问题。我们引入了一种新颖的可视化技术,它可以深入了解中间特征层的功能分类器的操作。在诊断角色中,这些可视化使我们能够找到在ImageNet分类基准上优于Krizhevsky等人的模型架构。我们还进行了消融研究,以发现不同模型层的性能贡献。我们表明,我们的ImageNet模型可以很好地推广到其他数据集:当softmax分类器经过重新训练时,它在加州理工学院-101和加州理工学院-256数据集上令人信服地击败了当前最先进的结果。

1.引言

卷积网络(convnets)在手写数字分类人脸检测等任务中表现出了优异的性能。在过去的一年里,一些论文表明,它们也可以在更具挑战性的视觉分类任务中表现出色。(Ciresan等人,2012年)展示了NORB和CIF AR-10数据集的最新性能。最值得注意的是,(Krizhevsky等人,2012)在ImageNet 2012分类基准上显示了创纪录的表现,他们的convnet模型实现了16.4%的错误率,而第二名的结果为26.1%。几个因素导致了这种新的兴趣
(i)提供更大的训练集,有数百万个标记的例子;
(ii)强大的图形处理器实现,使非常大的模型的训练变得实用,以及
(iii)更好的模型正则化策略,如dropout

在本文中,我们介绍了一种可视化技术,该技术揭示了在模型的任何层激发单个特征映射的输入刺激。它还允许我们在训练期间观察特征的演变,并诊断模型的潜在问题。我们提出的可视化技术使用多层反卷积网络(反卷积网络),如(泽勒等人,2011)所提出的,将特征激活投影回输入像素空间。我们还通过遮挡输入图像的部分来执行分类器输出的灵敏度分析,揭示场景的哪些部分对于分类是重要的。

1.1相关工作

可视化特征以获得对网络的直觉是常见的做法,但主要限于第一层,在那里可以投影到像素空间。在更高层,情况并非如此,解释活动的方法也是有限的。(Erhan等人,2009)通过在图像空间中执行梯度下降来最大化单元的激活,从而为每个单元找到最佳刺激。这需要仔细的初始化,并且不能给出任何关于单位不变性的信息。受后者的短板的激励,(乐等,2010)(扩展了(Berkes & Wiskott,2006)的一个想法)展示了如何在最优响应附近用数值计算给定单元的黑森数,给出了对不变性的一些见解。问题是,对于更高的层,不变性是极其复杂的,因此很难通过简单的二次近似来捕捉。相比之下,我们的方法提供了不变性的非参数视图,显示了来自训练集的哪些模式激活了特征映射。(Donahue等人,2013年)显示了可视化,识别数据集中负责模型中更高层的强激活的补丁。我们的可视化不同之处在于,它们不仅仅是输入图像的裁剪,而是自上而下的投影,这些投影揭示了每个面片内刺激特定要素地图的结构

2.方法

在整篇论文中使用标准的完全监督convnet模型,如(LeCun等人,1989)和(Krizhevsky等人,2012)所定义的。这些模型通过一系列层将彩色2D输入图像xi映射到不同类上的概率向量。每一层由(I)前一层输出(或者,在第一层的情况下,输入图像)与一组学习的滤波器的卷积组成;(ii)通过一个校正的线性函数(relu(x) = max(x,0))传递响应;(iii)[可选地]局部邻域上的最大池化,以及(iv)[可选地]局部对比度操作,该操作标准化特征地图上的响应。关于这些操作的更多细节,见(Krizhevsky等人,2012年)和(Jarrett等人,2009年)。网络的前几层是传统的全连接网络,最后一层是softmax分类器。图3显示了我们许多实验中使用的模型。

使用一个大的带标记的N个图像{x,y}来训练这些模型,其中标签yi是一个表示真实类的离散变量。网络的参数(卷积层中的滤波器、全连接层中的权重矩阵和偏差)是通过在整个网络中反向传播损耗对参数的导数,并通过随机梯度下降更新参数来训练的。

2.1 Visualization with a Deconvnet

理解卷积的操作需要解释中间层中的特征活动。我们提出了一种将这些活动映射回输入像素空间的新方法,显示了最初是什么输入模式导致了特征映射中的这些活动。我们用反卷积网络(反卷积网络)进行这种映射(泽勒等人,2011)。反卷积网络可以被认为是一个卷积模型,它使用相同的组件(过滤、合并),但方向相反,因此不是将像素映射到特征,而是相反。在(泽勒等人,2011年)中,反卷积神经网络被提出作为执行无监督学习的一种方式。在这里,它们不用于任何学习能力,只是作为一个已经训练好的卷积的探针。
为了检查卷积,反卷积被附加到它的每个层,如图1(顶部)所示,提供了返回图像像素的连续路径。首先,向卷积显示输入图像,并计算各层的特征。为了检查给定的卷积激活,我们将图层中的所有其他激活设置为零,并将特征映射作为输入传递给附加的反卷积层。然后我们连续地(I)unpool,(ii)rectify和(iii)filter来重建下面的层中引起所选激活的活动。然后重复这一过程,直到达到输入像素空间。

反卷积可视化以各层得到的特征图作为输入,进行反卷积,得到反卷积结果,用以验证显示各层提取到的特征图。举个例子:假如你想要查看Alexnet 的conv5提取到了什么东西,我们就用conv5的特征图后面接一个反卷积网络,然后通过:反池化、反激活、反卷积,这样的一个过程,把本来一张1313大小的特征图(conv5大小为1313),放大回去,最后得到一张与原始输入图片一样大小的图片(227*227)。

Unpooling:
在卷积中,最大池化操作是不可逆的,但是我们可以通过记录池化过程中最大激活值的坐标位置。然后在反池化的时候,只把池化过程中最大激活值所在的位置坐标的值激活,其它的值置为0,当然这个过程只是一种近似,因为我们在池化的过程中,除了最大值所在的位置,其它的值也是不为0的。请参见图1(底部)了解该程序的图示。
Rectification:
卷积使用relu非线性函数,校正特征图,从而确保特征图总是正的。为了在每一层获得有效的特征重建(也应该是正的),我们通过一个relu非线性函数传递重建的信号。
Filtering:
卷积使用学习过的卷积核来卷积来自前一层的特征图。为了反向,反卷积网络使用相同滤波器的转置版本,但应用于校正后的地图,而不是下面图层的输出。实际上,这意味着垂直和水平翻转每个过滤器
从更高的层向下投影时,会使用卷积中最大池化产生的开关设置。由于这些开关设置是给定输入图像特有的,因此从单次激活获得的重构类似于原始输入图像的一小部分,结构根据它们对特征激活的贡献来加权。由于模型是有区别地训练的,它们隐含地显示了输入图像的哪些部分有区别的。请注意,这些投影不是模型的样本,因为不涉及生成过程。
在这里插入图片描述
附在卷积层(右)上的反卷积层(左)。反卷积网络将从下面的层重建convnet特征的近似版本。下图:反卷积网络中反池化操作的图示,使用的开关记录了convnet中汇集期间每个汇集区域(彩色区域)中本地最大值的位置。

3.训练细节

我们现在描述将在第4节中可视化的大型卷积模型。图3所示的架构类似于(Krizhevsky等人,2012年)用于ImageNet分类的架构。一个不同之处是,在Krizhevsky的第3、4、5层中使用的稀疏连接(由于模型被分成两个GPU)在我们的模型中被密集连接所取代。
如第4.1节所述,在检查图6中的可视化后,得出了与层1和层2相关的其他重要差异。
该模型在ImageNet 2012训练集(130万个图像,分布在1000个不同的班级)上进行训练。每个RGB图像都经过预处理,将最小尺寸调整为256,裁剪中心256x256区域,减去每个像素的平均值(所有图像),然后使用10个大小为224x224的不同子裁剪(角落+中心,水平翻转)。小批量大小为128的随机梯度下降用于更新参数,从102的学习率开始,结合动量项0.9。当验证错误停滞不前时,我们在整个培训过程中手动调整学习率。辍学率(Hinton等人,2012年)用于完全连接的层(6和7),比率为0.5。所有权重初始化为102,偏差设置为0
如图6(a)所示,在训练期间第一层卷积核的可视化揭示了它们中的一些占主导地位。为了解决这个问题,我们对卷积层中均方根值超过固定半径10*-1*的每个卷积核进行重整。这是至关重要的,尤其是在模型的第一层,输入图像大致在[-128,128]范围内。如(Krizhevsky等人,2012),我们产生多个不同的crops和每个训练例子的翻转,以增加训练集的大小。我们在70个时代后停止了训练,这在一个GTX580 GPU上花费了大约12天,使用了基于(Krizhevsky等人,2012)的实现。

4.Convnet Visualization

Feature Visualization:
图2显示了训练完成后我们模型的特征可视化。然而,对于给定的特征图,我们显示的不是单一的最强激活,而是前9个激活。分别映射到每个像素空间揭示了激发给定特征图的不同结构,因此显示了其对输入变形的不变性。,我们还显示了相应的图像块的可视化。这些比可视化有更大的变化,因为后者只关注每个patch内的判别结构。例如,在第5层第1行第2列中,这些patch似乎没有什么共同之处,但可视化显示,该特定要素图侧重于背景中的草,而不是前景对象。
每一层的投影显示了网络中特征的层次性质。第2层响应拐角和其他边缘/颜色连接。第3层有更复杂的不变性,捕捉相似的纹理(例如网格模式(第1行,第1列);案文(R2、C4))。第4层显示了显著的变化,但更具体的类别:狗脸(R1,C1);鸟腿(R4,C2)。第5层显示了具有显著姿势变化的整个对象,例如键盘(R1,C11)和狗(R4)
Feature Evolution during Training:
图4可视化了在投影回像素空间的给定特征图内的最强激活(跨越所有训练示例)的训练期间的进展。外观上的突然跳跃是由图像的变化引起的,而最强的激活是由图像的变化引起的。可以看到模型的较低层在几个时期内聚合在一起。然而,上层只是在相当多的时期(40-50)后才发展起来,这表明需要让模型训练,直到完全收敛。
Feature Invariance:
图5示出了5个样本图像被不同程度地平移、旋转和缩放,同时观察来自模型顶层和底层的特征向量相对于未变换特征的变化。小的变换在模型的第一层有戏剧性的效果,但是在顶部特征层的影响较小,对于平移和缩放是准线性的。网络输出对于平移和缩放是稳定的。一般来说,输出不是旋转不变的,除了旋转对称的对象(如娱乐中心)。

4.1. Architecture Selection

虽然一个训练好的模型的可视化提供了对其操作的洞察,但是它也可以首先帮助选择好的架构。通过可视化克里哲夫斯基等人的架构的第一层和第二层(图6(b)和(d)),各种问题是显而易见的。第一层滤波器混合了极高和极低的频率信息,几乎不覆盖中频。此外,第二层可视化显示了由第一层卷积中使用的大跨距4引起的混叠伪影。为了解决这些问题,我们(I)将第一层滤波器的尺寸从11x11减小到7x7,并且(ii)使卷积的步长为2,而不是4。如图6©和(e)所示,这种新的体系结构在第一层和第二层特征中保留了更多的信息。更重要的是,它还提高了分类性能,如第5.1节所示

4.2. Occlusion Sensitivity

对于图像分类方法,一个自然的问题是,模型是真正识别图像中对象的位置,还是仅仅使用周围的环境。图7试图通过用灰色方块系统地遮挡输入图像的不同部分,并监控分类器的输出来回答这个问题。这些示例清楚地显示了模型正在场景内定位对象,因为当对象被遮挡时,正确类别的概率显著下降。图7还示出了来自顶部卷积层的最强特征图的可视化,以及作为遮光器位置的函数的该图中的活动(在空间位置上求和)。当遮挡器覆盖可视化中出现的图像区域时,我们会看到特征图中的活动明显减少。这表明可视化真正对应于刺激该特征图的图像结构,因此验证了图4和图2中所示的其他可视化。

4.3. Correspondence Analysis

深度模型不同于许多现有的识别方法,因为没有明确的机制来建立不同图像中特定对象部分之间的对应关系(例如,面部具有眼睛和鼻子的特定空间配置)。然而,一个有趣的可能性是,深层模型可能在隐式计算它们。为了探索这一点,我们以正面姿势随机抽取了5张狗的图像,并在每张图像中系统地遮挡了面部的相同部分(例如,所有的左眼,见图8)。对于每个图像I,我们计算:?l i = xl i,其中xl i和xl i分别是原始图像和遮挡图像在l层的特征向量。然后我们测量这个差向量的一致性?在所有相关图像对(I,j)之间:l=P5 i,j=1,i6=jH(符号(?l i),符号(?l j)),其中H为汉明距离。较低的值表示由掩蔽操作导致的变化的更大的一致性,因此不同图像中相同对象部分之间的更紧密的对应(即,遮挡左眼以一致的方式改变特征表示)。在表1中,我们使用l = 5和l = 7层的特征,将面部的三个部分(左眼、右眼和鼻子)的分数与对象的随机部分进行比较。相对于随机对象区域,第5层特征的这些部分的较低分数表明模型确实建立了某种程度的对应关系。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值