[翻译]Learning Deep Features for Discriminative Localization

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[翻译]Learning Deep Features for Discriminative Localization相关的知识,希望对你有一定的参考价值。

参考技术A

英文原文请点 这里

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

最近Zhou等人的《Object detectors emerge in deep scene cnns》表明CNN的各个层的卷积单元实际上是物体检测器,尽管没有对物体的位置进行监督。尽管卷积层定位物体的能力很出色,但当用全连接层进行分类时,这种能力会丧失。最近,一些流行的全连接层和卷积层的神经网络,比如Network in Network(NIN)和GoogLeNet,已经提出通过避免使用全连接层的方式来最小化参数并且保持高性能的方法。

为了实现这一目标,NIN使用global average pooling来做正则化,避免训练过程中的过拟合。在我们的实验中,发现global average pooling的优势远不止正则化——实际上,只需要稍微调整一下,网络就可以保持卓越的定位能力,直到最后一层。这样的微调使辨别图像区域变得十分简单,即使对那些最初没训练的网络也是如此。如图1(a)所示,在物体分类上训练的CNN能够成功的将动作分类的区分区域定位为与人类交互的物体而非人类本身。

尽管我们的方法显得很简单,在ILSVRC的弱监督物体定位比赛中,我们最好的网络在测试集中达到了37.1%的top-5错误率,这与全监督的AlexNet达到的34.2%top-5错误率极其接近。此外,我们还证明所提方法中的深度特征可以很容易地用于其他数据集的分类、定位和概念发现(concept discovery)。

卷积神经网络在视觉识别任务中有着令人印象深刻的表现。近期的研究表明,尽管在图片级的标签上训练,CNN在定位上也有着卓越的能力。本文中,我们证明了只要使用正确的架构,就能将这种能力泛化到不仅仅是定位物体,而是标定图片中具体哪一个区域正在用于分辨物体。这里,我们讨论与这些研究最相关的两条主线:弱监督对象定位和可视化CNN的内部表示。

弱监督物体定位(Weakly-supervised object localization) 最近已经有很多用CNN做弱监督定位的研究了。Bergamo等人提出了一种“自己学习的(self-taught)”物体定位方法,为了实现物体定位,通过掩盖图片区域来寻找引起最大激活的区域。Cinbis等人用CNN特征结合多实例的学习定位物体。Oquab等人提出了一种能转换中级图像的方法,并且展示了一些物体的定位能通过评估CNN在多重叠区域的输出实现。但是,这些作者并没有对定位能力做评估。此外,这些方法虽然产生了想要的结果,但并不是端到端的训练,需要提前做一系列额外工作,然后输入网络来定位物体,这使它们很难泛化到真实世界的数据集。我们的方法是一个端到端的,而且只需要输入图片就可以定位物体。
与我们的方法最相近的是Oquab提出的基于global max pooling的方法。不同于global average pooling,他们用global max pooling来定位物体的点。但是,它们的定位局限于物体边缘的点,而不是确定物体的全部范围。我们认为虽然max和average很相似,但是平均池化更鼓励网络识别完整的物体区域。背后的原理是average pooling网络相比于max pooling识别整个物体的辨别性区域的损失更小。在3.2部分有详细的说明及验证试验。此外,不同于Oquab,我们证明了这种定位能力能够泛化,甚至能用于侦测网络没有训练过的数据。
我们使用class activation map来代表每个图中的激活图的权重,如第2部分所述。我们想要强调的是,global average pooling不是我们提出来的新技术,我们的创新点在于用它来精确定位区别性区域(discriminative localization)。我们相信,这种简单的技术可移植性很好,能应用于快速精确地解决很多计算机视觉中的定位问题。
可视化卷积神经网络: 最近有很多关于可视化卷积神经网络内部的研究,试图对其属性有更好的表现。Zeiler等人用反卷积网络来可视化激活每个单元的模式。Zhou等人发现CNNs被训练识别场景时会学习物体侦测,并证明了统一网络既能进行场景识别,又能进行物体定位。这些研究都只分析了卷积层,忽略了全连接层,因此是不全面的(国外论文好文艺,原文如是描述:thereby painting an incomplete picture of the full story)。通过移除全连接层并尽可能保持性能,能从头到尾更好的了解我们的网络。
Mahendran等人和Dosoviskiy等人通过转化不同层的深度特征分析了CNN的可视化解码。虽然这些方法可以转化全连接层,但是只展示了深层特征中什么信息被保留,并没有凸显出这些信息的相对重要性。不同于Mahendran和Dosoviskiy,我们的方法你能凸显出图片的那个区域是区别性区域。总的来说,我们的方法是对CNN的另一种深入呈现。(又是很文艺的说法:our approach provides another glimpse into the soul of CNN)

这一部分,我们描述了用CNN的global average pooling(GAP)生成class activation maps(CAM)的过程。某一确切分类的CAM代表了CNN用于做分类时所看的区别性区域的位置(如图3)。生成CAM的过程如图2。

全局平均池化层(GAP)VS全局最大池化层(GMP): 鉴于之前有的研究使用GMP做弱监督物体定位,我们认为很有必要直观地对比一下GAP和GMP的高亮区域的不同。比起GMP的鼓励网络只关注1个discriminaltive part,GAP更鼓励网络识别对象的整个范围。因为当求平均数时,这个值可以通过找所有discriminative part来最大激活而低激活减少了特定的输出。另一方面,对于GMP,所有图的低分区域(除了最有区分力的一个),都不会对得分有影响,因为你只取了max。我们在第三部分用ILSVRC数据集验证了此想法:GMP的分类性能与GAP相当,GAP的定位能力要强于GMP。

在这一部分,我们在ILSVRC2014数据集上评估了CAM的定位能力。我们先描述了实验的设置和用到的CNN网络,见3.1部分。然后在3.2部分验证了我们的技术不会在学习定位时对网络产生不利影响,并详细给出了弱监督对象定位的结果。

我们用下面这些流行的CNN网络评估CAM的影响:AlexNet,VGGnet和GoogLeNet。通常来讲,我们把这些网络的全连接层全部移除,替换为GAP,然后接一个softmax全连接层。
我们发现GAP前的最后一个卷积层有较高空间分辨率时网络的定位能力可以得到改善,我们之称为图分辨率(mapping resolution)。为了做到这一点,我们移除了一些网络的卷积层。具体来说,我们做了下面改动:对AlexNet,我们移除conv5之后的卷积层(pool5到prob),得到图分辨率(mapping resolution)为13x13。对VGGnet,我们溢出了conv5-3后的所有卷积层(pool5到prob),得到14x14的图分辨率。对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的验证集进行了评估,对于定位,我们在验证集和测试集上都做了评估。

我们先提供了在分类上的结果,以证明我们的方法没有对分类性能产生明显的不良影响。然后我们有证明了我们的方法在弱监督物体定位上十分有效。
分类: Tb.1总结了原始网络与我们的GAP网络的分类性能。我们发现多数情况下从各个网络中移除多余的网络层使分类性能下降了1%~2%。我们观察到AlexNet是移除全连接层后分类性能受影响最大的网络。作为补偿,我们在它的GAP层前添加了两个卷积层,得到AlexNet -GAP网络。我们发现AlexNet -GAP与AlexNet的性能相当。因此,总体而言,我们的GAP网络很大程度地保留了网络的分类性能。此外,与预期的一样,我们观察到GoogLeNet-GAP和GoogLeNet-GMP的分类性能相似。注意,为了在定位上得到好的表现,网络的分类性能很重要,因为它决定了网络是否能准确地分类和定位的边界。

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

我们观察到我们的GAP网络表现优于所有使用GoogLeNet-GAP的方法,达到了top-5上最低定位错误率43%,没有用任何一个带标注的边界框上训练就能达到这样表现的网络是前所未有的。我们也可以看到CAM方法明显优于反向传播的方法(比较结果见图6(b))。此外,我们发现GoogLeNet-GAP比GoogLeNet的定位性能更好,尽管得到的分类没有GoogLeNet好。我们是认为GoogLeNet(7x7)的低分辨率导致它丢失了精确地定位能力。最后,我们发现GoogLeNet-GAP比GoogLeNet-GMP表现更杰出,它的合理范围说明了average pooling在识别物体范围上比max pooling更重要。

为了进一步比较我们的方法与现有的弱监督和全监督CNN方法,我们评估了GoogLeNet-GAP在ILSVRC的测试集上的表现。使用一个稍微不同于上的边界框选择策略:我们选择两个边界框(一松一紧),一个从top 1st和2nd预测类的CAM中选择,一个从top 3rd预测类的CAM中选择。我们发现这种启发式方法对改善验证集表现很有帮助,表现在表3种陈列。启发式的弱监督GoogLeNet-GAP在达到top-5错误率37.1%,与全监督的AlexNet(34.2%)十分接近。虽然令人印象深刻,但如果想用同样的结构得到与全监督的网络相同的性能,还有的路要走(如,弱监督的GoogLeNet-GAP vs 全监督的GoogLeNet)。

CNN的更高层(比如AlexNet的fc6,fc7)已经被证明能提取到很有效的通用特征(generic features),其在各种个图片数据集上都有极好的性能。这里,我们证明了我们的GAP CNN学到的特征可以很好地作为通用特征,识别出用于分类的区别性区域,尽管没有针对这些特定任务进行训练。为了得到与softmax层相似的权重,我们在GAP的输出上简单训练了一个SVM。
首先,对比我们的方法与一些基准模型在下面场景及物体分类任务中的表现:SUN397 [27], MIT Indoor67[18], Scene15 [11], SUN Attribute [17], Caltech101[6], Caltech256 [9], Stanford Action40 [28], andUIUC Event8 [12]。实验设置与 B. Zhou, A. Lapedriza, J. Xiao, A. Torralba, and A. Oliva.Learning deep features for scene recognition using places database. In Advances in Neural Information Processing Systems,2014. 一样。表5对比了我们最好的网络GoogLeNet-GAP提取的特征与AlexNet的fc7提取的特征和GoogLeNet的ave pool提的特征比较。

在这一部分,我们将提取到的通用定位深度特征用于在CUB-200-2011数据中识别200种鸟类。这个数据集包含11788张图片,5994张训练集,5794张测试集。我们选择这个数据集是因为它也包含边界框注解,能让我们评估我们定位的能力。表4总结了结果。

我们发现,GoogLeNet-GAP与现有方法表现相当,在没有用任何带边界标记的数据训练过的情况下得到了全图(full-image)63%的准确率。使用边界框训练时,准确率增加至70.5%。现在,给出我们网络的定位能力,可以用3.2部分(即阈值)的方法先标出训练集和测试集中鸟的边界框,然后我们用GoogLeNet-GAP从边界框内提取特征来训练和测试。我们发现性能提高至了67.8%。在细粒度识别中,定位能力非常重要,因为类别之间的差别是极细微的,如果有更集中的裁剪区域,则会带来更好的区分度。
此外,我们发现GoogLeNet-GAP能准确定位41%的交并比为0.5(IoU,两个边界框的重叠度)的鸟,其他的只有5.5%(不确定翻译,原文为as compared to a chance performance of 5.5%)。我们在图7中足了一些可视化,进一步验证了我们方法的定位能力。

这一部分,探索我们的技术是否能识别一般元素或出物体外的图片模式,比如文本或者更高维的概念。给一些包含普通概念的图片,我们想确定网络认为哪些区域是重要的,以及是否符合输入模式。我们使用了与以前相似的方法:在GoogLeNet-GAP网络的GAP层训练了一个线性SVM,并使用CAM技术识别重要区域。我们用我们的深度特征做了三个模式的实验,结果在下方总结。注意在这种情况下,我们不需要拆分训练集和测试集——只用CNN做视觉模式探索。
发现场景中信息丰富的物体: 我们从SUN数据集[27]中抽取10个包含至少200个完全注解图像的场景类别,从而产生总共4675个完全注解的图片。我们针对每个场景类别训练一对一线性SVM,并使用线性SVM的权重计算CAM。图9绘制了预测风景类别的CAM,并列出了两个场景类别的CAM高激活区域中高频覆盖的前6个物体。我们发现高激活区域经常对应于指示特定场景类别的物体。

弱监督文本检测器: 我们用350个Google Street View图片训练弱监督文本检测器,positive set包含SVT数据集的文本,negative set包含从SUN数据集种随意采样的室外风景图片。如图11所示,我们的方法没使用边界框注解就准确地标出了文本区域。

视觉问题回答:(Interpreting visual question answering) 我们用我们的方法标出与 B. Zhou, Y. Tian, S. Sukhbaatar, A. Szlam, and R. Fergus.Simple baseline for visual question answering. arXivpreprint arXiv:1512.02167, 2015. 中提出的视觉问题答案相关的深度特征。在Open-Ended track中,整体准确率为55.89%。如图12所示,我们的方法标出了与预测答案相关的图像区域。

Zhou等人展示了CNN不同层的卷积单元可以作为视觉概念检测器,识别诸如纹理和材质之类的low-level concepts和物体或者场景这些high-level concepts。深入神经网络,这些单元变得越来越有识别能力。但是,很多网络由于全连接层,变得很难确定识别不同类的不同单元起到的重要性。这里,使用GAP和排序的softmax权重,可以直接可视化这些单元对给定类的识别的重要性。这里我们将其称为CNN的指定类单元(class-specific units)。
图13展示了AlexNet*-GAP的指定类单元,分别在ILSVRC数据集做物体识别(top)和Places Database做风景识别(bottom)。我们使用与Zhou等人相似的处理估计接收区域和分割最后一个卷积层的每个单元的激活图。然后我们简单地使用softmax的权重来对每个单元做指定类的排序。从图中我们可以看出到底是哪个单元将物体分类的区别性区域标记了出来。例如,检测狗脸和体表皮毛的单元对分类湖地猎犬很重要,检测沙发、桌子和壁炉的单元对分类客厅很重要。 因此我们可以推断CNN实际上学习了一个单词包,每个单词都是一个特定类区别性区域的单元。 这些特定于类的单元的组合可以指导CNN对每个图像进行分类。

本文针对使用GAP的CNN网络提出了一个叫做CAM的通用技术,这个技术可以让做过分类训练的CNN网络学会进行物体定位,不需要进行额外的边界框注解训练。CAM可以可视化预测类在任何给定图片上的得分,标出CNN检测到的物体的区别性区域。我们在ILSVRC上评估了我们的方法,进行了弱监督物体定位,证明了我们的全局平均池化层的CNN可以进行准确的物体定位。此外,我们证明了CAM定位技术可以推广到其他视觉识别任务中,也就是说,我们的技术可以生成通用的用于定位的深层特征,可以帮助其他用CNN做任务的研究人员,作为他们理解区别性区域的基础。

paper 124:转载无监督特征学习——Unsupervised feature learning and deep learning

来源:http://blog.csdn.net/abcjennifer/article/details/7804962

无监督学习近年来很热,先后应用于computer vision, audio classification和 NLP等问题,通过机器进行无监督学习feature得到的结果,其accuracy大多明显优于其他方法进行training。本文将主要针对Andrew的unsupervised learning,结合他的视频:unsupervised feature learning by Andrew Ng做出导论性讲解。

 

关键词:unsupervised learning,feature extraction,feature learning,Sparse Coding,Sparse DBN,Sparse Matrix,Computer Vision,Audio Classification,NLP

 

Unsupervised feature learning and deep learning 是斯坦福大学机器学习大牛Andrew Y Ng. 近年来研究的主要领域,他在今年的一份工作Building high-level features using large scale unsupervised learning中就通过unsupervised learning解决了从only unlabeled data上建立高维feature detectors的问题。

 

 

 

=========================第一部分:传统方法Pattern Recognition=========================

通常的,我们进行pattern recognition是这样的:

技术分享

对于不同类别的feature extraction都是必备的一部分,computer进行detection的 perception就是这样的:

技术分享

 

下面分别就这三类问题,<Object detection><Audio Classification><NLP>进行经典feature回顾:

技术分享

 

技术分享

 

技术分享

 

 

人类的视觉系统、听觉系统 应该说是非常之complex,如果想要获得我们视觉系统看到的东西(computer perception),有两种方法:

一种方法就是描述出我们的视觉系统在观察object的时候提取的那些特征(比如各种不同物体间的parts在2D、3D中的内容,是哪些特征让我们看出物体的区别,object parts之间的连接关系等)。

另一种方法更为general,我们能否挖掘出一个general 的 算法,它可以揭示大多数perception的形成(换言之,就是揭示一种人眼从看到识别出的算法)。

不知道这里我讲明白没?

没的话可以参考下下面两段:

We can try to directly implement what the adult visual (or audio) system is doing. (E.g., implement features that capture different types of invariance, 2d and 3d context, relations between object parts, …). 
Or, if there is a more general computational principal/algorithm that underlies most of perception, can we instead try to discover and implement that?  

对于下面的audio,和图像是一样的道理,我们能不能用一种算法学习出其feature,对一幅图像或者一段audio进行描述?

技术分享

 

对于图像,最直观的描述方法及就是用pixels,传统的方法为supervised learning, 给定一组正样本和一组负样本,通过提取feature训练进行学习,并进行识别测试:

技术分享

不同于有监督学习,Unsupervised learning通过训练一些列有label的和无label的数据集学习一幅图像中的feature(学习出什么样的feature是motocycle的,什么样的feature是car的)……

技术分享

 

那么,怎样学习有哪些feature呢?下面先介绍unsupervised learning中的一种方法——Sparse Coding,读者可以试着和前面我讲过的压缩感知系列相结合来想想看。

 

 

 

 

=================第二部分:Sparse Coding——A unsupervised learning Algorithm=================

Sparse Coding 是 Unsupervised Learning Algorithm中的一种,可以用于Feature learning.

 

技术分享

下面是我对Sparse Coding的解释,做的笔记……

技术分享

 

用Sparse Coding的例子进行说明。

比如在图像的Feature Extraction的最底层要做Edge Detector的生成,那么这里的工作就是从Natural Images中randomly选取一些小patch,通过这些patch生成能够描述他们的”基“,也就是右边的8*8=64个basis组成的basis(具体选取基的方法可以参考我的两篇文章——压缩感知初识压缩感知之HelloWorld),然后给定一个test patch, 我们可以按照上面的式子通过basis的线性组合得到,而sparse matrix就是a,下图中的a中有64个维度,其中非零项只有3个,故称”sparse“。

 

这里可能大家会有疑问,为什么把底层作为Edge Detector呢?上层又是什么呢?这里做个简单解释大家就会明白,之所以是Edge Detector是因为不同方向的Edge就能够描述出整幅图像,所以不同方向的Edge自然就是图像的basis了……

而上一层的basis组合的结果,上上层又是上一层的组合basis……(具体请往下看)

如下图所示:

技术分享

其他的例子同理:注意看下面的文字(第二条)

技术分享

下图所示为从为标号的audio上学习出的20个基函数(如小波变换):

技术分享

 

 

 

 

===================第三部分:Learning Features Hierachy & Sparse DBN===================

所建立的自动feature学习过程是一个自底向上逐渐学习features的sparse coding过程:

技术分享

 

技术分享

以Sparse DBN:Training on Faces为例,这里从下向上依次是上图的hierarchy的Input Image,Model V1(Edge Detector),Model V2(Object Parts),Model V3(Object Models),具体讲解见下面我做的笔记:

技术分享

下面是对上图的解释,请对照着看:

图中所示最下方的24个basis function用于Edge Detection, 比如最左上角的那个基用于检测85°的edge;

中间的32个基(Object Parts)分别是 eye detector, nose detector……其之所以为基是因为,一张face可有这些parts组合而成;

最上面一层的24个基就是face model了。

 

==========================

在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就会completely different了:

技术分享

当训练数据由4类图像组成时,上层提取出的feature会不同,最终生成的object model也会包含4类图像特定的模型:

技术分享

下图是动作识别上,不同算法的准确率比较:

技术分享

Sparse DBN on Audio同理,对于一个Spectrogram,逐层提取feature过程如下图所示:

技术分享

 

技术分享

 

技术分享

 

 

 

===================第四部分:技术问题——Scaling Up===================

技术分享

进行Pattern Recognition的一个重大问题就是特征提取,而上面这幅图中我们可以看出不同算法在Features数目不同的情况下,其交叉验证(Cross Validation在ML第六课中讲过)的Accuracy,可见feature越多,给出的参考信息越多,所得accuracy一般越好。那么,有哪些方法进行feature的挖掘使得scaling up呢?有兴趣的可以研究研究,互相交流下哈!

 

技术分享

 

 

 

 

===================第五部分:Learning Recursive Representations===================

这部分我们主要以NLP为例,看一下怎么样递归的进行语义分析,自然语言组成:

首先我们看下用多维向量(图中简化为2维)表示一个单词的形式:

技术分享

 

一句话:The cat sat on the mat. 进行自底向上的feature学习,可以发现,有的neuron上有意义,如图中箭头所指的那个neuron就不make sense.

技术分享

 

training process:Parsing a Sentence

技术分享

 

就这样recursively选择make sense的neuron成为该层新的神经元:

技术分享

 

我们在每层选取有意义的神经元后建立起最终的句型:

技术分享

 

好了,说完了NLP的parsing sentence问题,我们回头来看image processing(IP), 其实,他们的道理相同,都是找到make sense的小patch再将其进行combine,就得到了上一层的feature,递归地向上learning feature。该图中,上面是NLP,下面是IP。

技术分享

 

 

 

===================小结===================

最后我们对Unsupervised feature Learning做一个小结:

•  Features 由 机器学习,而非人为指定

•  找到perception下隐藏的feature基

•  Sparse coding 和 deep learning在CV和Audio Recogization上的识别率非常好,几乎是state of art的程度。

 

 

 

Reference :

http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

Deep Learning

Sparse DBN (Deep Belief Nets)

 

A tutorial on Deep Learning

 

 

 

关于Machine Learning更多的学习资料将继续更新,敬请关注本博客和新浪微博Sophia_qing

 

以上是关于[翻译]Learning Deep Features for Discriminative Localization的主要内容,如果未能解决你的问题,请参考以下文章

Feature Learning based Deep Supervised Hashing with Pairwise Labels

A Discriminative Feature Learning Approach for Deep Face Recognition

Center Loss - A Discriminative Feature Learning Approach for Deep Face Recognition

Feature Transfer Learning for Deep Face Recognition with Long-Tail Data 论文阅读笔记

Feature Transfer Learning for Deep Face Recognition with Long-Tail Data 论文阅读笔记

Deep Learning Tutorial (翻译) 之 RBM