阅读:Learning Deep Features for Discriminative Localization

作者:Bolei Zhou, Aditya Khosla, Agata Lapedriza, Aude Oliva, Antonio Torralba

来源:CVPR2015

摘要 本文重新审视了《 Network in network》中提出的全局平均池化层(global average pooling),阐明了它是如何通过图片标签就能让卷积神经网络具有卓越的定位能力。虽然这项技术以前被当做正则化训练的一种方法,但是我们发现它实际构建了一种通用的适用于各种任务的能定位的深度表示。尽管global average pooling很简单,我们仍然能够在2014年的ILSVRC物体定位比赛中得到37.1%的top-5错误率,与CNN的34.2%top-5错误率非常接近。我们证明了我们的网络能在各种任务中区分图像区域进行定位,尽管没有经过(定位)训练。

注:本文核心提出:学习一种深度特征,可用于区分性(判别性)定位 (Discriminative Localization)

1 引言

卷积神经网络中每个卷积单元均有:检测目标,定位能力。网络在经过全连接层进行分类时,定位能力丢失。因此,有些网络架构,如googlenet和NIN(network in network),不再使用全连接层,这样的话,在降低性能情况下可以减少网络参数,避免过拟合。

为此,NIN中使用全局池化层进行正则化,避免训练过程中的过拟合。作者实验发现,global average pooling只需稍微调整,使得网络在最后一层之前都可以保持很好的定位能力。如下图示。在物体分类上训练的CNN能够成功的进行动作分类(action classification),判别区域(区分区域)定位为与人类交互的物体而非人类本身(这样才能很好的进行动作识别)

图1

1.1 相关工作

 CNN尽管在图片级的标签上训练,也有着很强的定位能力。本文证明了只要使用正确的架构,就能将这种能力泛化到不仅仅是定位物体,而且还可以标定出图片的判别区域(discrimination)。这里,文中讨论两条主线:弱监督对象定位可视化CNN的内部表示

弱监督目标定位:已有的CNN工作,如Bergamo等人提出了“self-taught”物体定位方法;Cinbis等人用CNN特征结合多实例......其他工作这里(略)。这些作者并没有对定位能力进行评估,也不是端到端的训练,还有其他的问题,使得它们很难泛化到真实世界的数据集。本文提出的方法是一个端到端的:只要输入图片就可以定位物体。

与本文方法最相近的是Oquab提出的基于global max pooling的方法。用global max pooling来定位物体的点。定位局限于物体边缘的点,而不是物体的全部范围。虽然max和average很相似,但是平均池化更鼓励网络识别完整的物体区域。背后的原理在于:在识别整个物体的判别性区域时,average pooling的损失更小。而且实验证明这种定位能力(average pooling)能够泛化,甚至能用于观测到网络没有训练过的问题。

文中使用class activation map(类激活图)来代表每个图像中的加权激活图,这里,global average pooling并不是一个新技术,文章的创新点在于使用它精确定位判别性区域(discriminative localization),且能应用于需要快速精确定位的很多计算机视觉问题。

CNN的可视化:最近的关于可视化CNN的研究,主要是通过可视化CNN的内部表示,以更好的理解CNN的性能。Zeiler等人用反卷积网络,针对激活每个单元的模式进行可视化。Zhou等人发现训练CNNs进行场景识别时,同时会学习到目标检测器,并证明了这个同一个网络在一次前向传播中,可时同时进行场景识别和目标定位。这些研究都只分析了卷积层,忽略了全连接层,因此是不完整的。但是,通过移除全连接层并尽可能保持网络性能,能更加全面的了解网络结构。

Mahendran等人和Dosoviskiy等人通过转化不同层的深度特征,进而分析CNN的可视化编码。虽然这些方法可以转化全连接层,但他们仅展示了深层特征中被保留的信息,也没有凸显这些信息的重要性。本文的方法能凸显出图片的判别性区域,可以说是CNN精髓的另一种呈现。

2. Class Activation Mapping(类激活映射)

该部分描述了用CNN的global average pooling(GAP)生成class activation maps(CAM类激活图)的过程。某一特定类的CAM表示出了CNN用于分类时的判别性图像区域(如图3)。

图2(下图)显示了生成CAM的过程。

图2 预测的类别分数被映射回先前的卷积层以生成类别激活图(CAM),CAM凸显了特定类的判别性区域 

文中使用了与NIN和GoogLeNet相似的网络结构——网络的大部分都是卷积层,仅在最后的输出层之前(分类时为softmax层)对这些卷积特征图应用global average pooling层,并将它们作为(得出分类结果的)全连接层的特征。给定这种简单的连接结构,我们可以识别出图片各个区域的重要性----把输出层的权重投射卷积特征图,我们称这种技术为类激活映射CAM)。

图2中,全局平均池化层输出最后一个卷积层中每个单元的特征图(feature map)的空(域)平均值。这些值的加权和用于生成最后的输出。类似,我们计算最后一个卷积层的特征图的加权和来获得我们的CAM。我们在下面用更规范的方式描述使用softmax的情况。同样的技术可以用于回归或其他损失函数。

 给定一个图像,用f_k(x,y)表示最后一个卷积层在空间坐标(x,y)中的激活单元k。则,对每个单元k,执行GAP后,则为F^k,即\Sigma _{x,y}f_k(x,y)。因此,给定类c,softmax的输入为,S_c,即\Sigma _k\omega _k^cF_k,其中,\omega _k^c是单元k中对应类别c的权重。最终,softmax对应类别c的输出P_c\frac{exp(S_c)}{\Sigma _cexp(S_c)}。这里忽略了偏置项:明确地把softmax的偏差项置为0,因为它几乎对分类性能没有影响。

 将F^k代入类分数S_c,可得:

S_c=\Sigma _k\omega _k^cF_k=\Sigma _k\omega _k^c\Sigma _{x,y}f_k(x,y)=\sum_{x,y}\sum_k\omega _k^cf_k(x,y)      (1)

定义M_c为类别c的类激活图,则M_c中的每个(空间)元素为:

 M_c(x,y)=\sum_k\omega _k^cf_k(x,y)                                                            (2)

因此,有    S_c=\Sigma _{x,y}M_c(x,y),其中M_c(x,y)表示空间网格(x,y)激活对该图像划分为类别c的重要性。

直观地讲,期望每个单元能够被它感受野内的某个可视化模式激活。f_k就是显现这种可视化模式的投影图。类激活图简单地说,就是不同空间区域出现的这些可视化模式的线性加权和。通过在类激活图上简单地执行上采样,至输入图像的大小,即能看出与特定类最相关的区域。

上图中显示了相关示例--即用上述方法输出的CAM。对于不同类别的图像的判别区域均高亮显示。(母鸡和狗的用于分类的判别性区域是头部区域)

上图显示,用一张图使用不同类别的c生成的CAM的差异。即,同一张图,不同类别具有不同的判别性区域。(上述图像,类别标签为宫殿,判别性区域在下面,若为圆顶体育场dome,判别性区域在顶部),与作者的预期是一致的

可以看到不同类的区别性区域已经高亮。在图4,我们展示了同一张图用不同类别的c生成的CAM图的不同之处。我们发现即使是同一张图,对不同类的区别性区域也不同。这说明我们的方法与预期一样。我们在前面的部分证明了这一点

全局平均池化(GAP)和全局最大池化(GMP):之前有的研究使用GMP做弱监督物体定位,作者认为突出强调GAP和GMP的直观差异性是很重要:GAP损失鼓励网络识别物体的范围,而GMP鼓励网络仅识别出1个判别性部分(discriminaltive part)。这是因为:在对一个图(map,即由卷积操作得到的结果)求平均时,是通过找到物体的所有判别性部分,低的激活会减少特定图的输出。而GMP,所有图的低分区域(除了最有区分力的一个),都不会对得分有影响,因为只取了一个最大值。后续实验进行了验证:GMP的分类性能与GAP相当,GAP的定位能力要优于GMP

3. 弱监督物体定位

本部分在ILSVRC2014数据集上评估了CAM的定位能力。描述了实验配置及用到的CNN网络,同时验证了本文提出的技术在学习定位时不会影响分类性能。

3.1实验设置

作者在流行的CNN(如AlexNet,VGGnet和GoogLeNet)上评估了使用CNN的影响:对每种网络,我们将最终输出前的全连接层,替换为GAP加上一个全连接softmax层,

结果发现,当GAP前的最后一个卷积层有较高空间分辨率(称为mapping resolution)时,网络的定位能力会有所改善。因此,实验中移除了一些网络的几个卷积层(可以提高最后卷积层的分辨率)。具体如下:(1) AlexNet,移除conv5之后的层(即,pool5到prob),得到图分辨率(mapping resolution)为13x13(2)VGGnet,移除conv5-3之后的层(即,pool5到prob),得到14x14的图分辨率(3)GoogLeNet,移除inception4e后的层(pool4到prob),得到14x14的图分辨率。对上述的每个网络,我们都添加一个3x3,步长为1,padding为1的具有1024个单元的卷积层,然后接一个GAP层和一个softmax层。最后对每个网络在ILSVRC的用于分类的1.3M个1000类的训练图片进行微调(fine-tuned),分别产生最终的AlexNet-GAP,VGGnet-GAP和GoogLeNet-GAP。

从分类上,将上述网络与初始的AlexNet,VGGnet和GoogleNet进行比较,也提供了Network in Network的结果。对于定位,与初始的GoogLeNet和NIN进行了比较,还用反向传播代替了CAM。此外,为了比较average pooling和max pooling,作者也提供了用max pooling训练的GoogLeNet的结果(GoogLeNet-GMP)。

作者使用相同的误差度量(top-1,top-5)作为ILSVRC对分类和定位的评估指标。对于分类,对ILSVRC的验证集进行了评估,对于定位,在验证集和测试集上都做了评估。

3.2 实验结果

作者首先提供目标分类的结果,以证明该方法不会对分类性能产生明显的不良影响。随后又证明了该方法在弱监督物体定位上的有效性。

分类:表1归纳了初始网络与作者的GAP网络的分类性能。作者发现大多情况下从各个网络中移除多余的层次,会导致较小的分类性能的下降:1%~2%。同时,观察到AlexNet在移除全连接层后分类性能影响最大。作为补偿,作者在它的GAP层前添加了2个卷积层,得到AlexNet*-GAP网络,AlexNet*-GAP与AlexNet的性能相当。因此,总体而言,文中的GAP网络很大程度地保留了网络的分类性能。此外,与预期的一样,作者观察到GoogLeNet-GAP和GoogLeNet-GMP有相似的分类性能。注意,为了实现较高的定位性能,网络的分类性能就非常重要,因为它涉及到网络是否能准确地分类和准确定位边界。

定位:为了进行定位,需要生成一个边界框,以及与之关联的物体类别。为了从CAM生成一个边界框,使用了简单阈值技术来分隔热图(heapmap):首先用大于CAM最大值的20%的值分隔区域。然后再用覆盖分割图中最大连通分量做一个边框。作者把预测的top-5全部如此标记出来。图6(a)展示了这项技术生成的示例边框。在ILSVRC验证集上的定位性能见表2,输出示例见图5。

 

 



 


 


 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值