本文主要是介绍论文阅读-《Learning Deep Features for Discriminative Localization》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转自:http://blog.csdn.net/yaoqi_isee/article/details/62214648
收录于CVPR2016
关于全连接层不能保持spatial information的理解
相比全连接层,卷积层是一个spatial-operation,能够保持物体的空间信息(translation-variant)。比如一个物体原来在左上角,卷积之后的结果feature-map在左上角的激活值大。如果这个物体移动到右下角,那么卷积之后的feature-map同样会在右下角的激活值比较大。但是对于全连接层来说,它是将feature-map所有位置的信息综合之后输出,和物体的具体位置在哪里无关,比如一张图,人在左上角和右下角得到的fc层的输出应该是一致的(因为后面就接softmax分类了)本文的contribution
Revisit the global average pooling,and sled light on how it explicitly enables the convolutional neural network to have remarkable localization ability despite being trained on image-level labels行文思路
1 背景提出:卷积神经网络里面的每一个卷积单元其实都扮演着一个个object detector的角色,本身就带有能够定位物体的能力。但是这种能力在利用全连接层进行classification的时候就丢失了。因此,像那些全卷积的神经网络,比如googlenet,都在避免使用全连接层,转而使用global average pooling,这样的话不仅可以减少参数,防止过拟合,还可以建立feature map到category之间的关联。2 作者想法:global average pooling(gap)不仅仅是一个regularizer,还能够将卷积层的定位能力一直保持到最后一层。即使这个网络是训练来进行分类的,我们也可以在feature map上获取那些对于分类具有区分性(discriminative)的区域。比如对于一张分类成自行车的图片来说,feature map上面在车轮子,车把这样地方的激活值就会比较大。而且这种网络的训练是end-to-end的,只需要训练classification的网络,我们就可以在forward的时候获取localization的信息。
3 技术方法:class activation map
上面这张图是作者实验中设计的网络结构,其实就是把原来的一个fc层替换成了GAP层,之后接一个fc层用来分类。首先可以训练一个分类的网络,然后利用训练得到的最后fc层的参数作为权重,对前面的conv层的feature map进行加权平均,最后就得到了class activation map。(w1,w2…,wn)是对gap之后的特征进行加权平均,其实也就是对gap之前的每一层feature map进行加权平均。比如说我们可以拿出负责预测澳大利亚犬的那组参数(w1,w2,,,wn),对前面的最后一个卷积层的n张feature map进行加权,就可以得到澳大利亚犬的class activation map,这张map上激活值越大的地方,表示这个地方又有可能是属于澳大利亚犬,对这张class activation map求平均,其实就是这张图属于澳大利亚犬的概率,也就是图上的灰色圆对应的值。我们去找class activation map上的热区,其实就是在对物体进行定位。
上面这张图截取了top-5预测类别对应的CAM,可以看到,对于不同的类别,网络可以找到各自的具有区分性或者有信息量的区域,比如对于palace,更多的集中在正面的围墙建筑,对于dome的话,就集中在圆屋顶那个位置。同样,对于狗和鸡的分类,热区更多地集中在他们的头部。对于杠铃,则几种在两边的铁块上。- 实验:为了验证class activation map的定位能力,作者做了一系列的实验。主要就是把经典的AlexNet,VggNet,GoogleNet紧接着最后一个卷积层的全连接层替换成GAP。首先作者验证了这种修改不会明显损害网络的分类性能。
上面进行各个网络的对比可以看到,GAP组的classification error会有降低,但是幅度不大。然后作者验证了CAM具有不错的定位能力
为了利用CAM进行定位,作者以CAM里面最大值的20%作为threshold对CAM进行分割,然后去最大的那个连通的component的外接框作为预测框。table2里面作者拿自己的方法和利用backpropogation的方法进行对比,整体更好。同时作者拿自己的方法和全监督的方法进行对比,就作者弱监督最好的结果和全监督里面AlexNet的结果比较接近。其中heuristic的选择bounding box的方法是,对于前两位概率高的分类类别,各选择一个tight和一个loose的预测框,对于第三名,选择一个loose的预测框,共5个。
上一行表示场景的图片以及这些场景中最经常出现的物体,对应的频率。下一行表示这些场景对应的CAM,以及热区属于各个物体的频率。可以看到对于餐厅,CAM在桌椅,吊灯以及盘子这些区域的激活值比较大,对于浴室,CAM在浴缸,水龙头这些地方的激活值比较高。4 总结
神经网络里面不同层的卷积单元都扮演者视觉特征检测器的角色,从底层的视觉特征,比如边缘,角点;到高层的视觉模型,比如物体或者是场景。最后把这些东西综合起来进行分类。我们可以把最后一个卷积层看成是一个词典。每一张feature map对应检测输入中的一个单词,如果有,就在对应位置有高的激活值。后面的fc层其实就是利用这个词典进行分类。比如对于自行车分类器,他对于车轮,车把,车座这三个单词会赋予高的权值,对其他的单词权值很低,那么当他检测到输入图片的词向量在车轮,车把,车座这三个单词的置信度很高的时候,就会把这张图判断成自行车。- 实验:为了验证class activation map的定位能力,作者做了一系列的实验。主要就是把经典的AlexNet,VggNet,GoogleNet紧接着最后一个卷积层的全连接层替换成GAP。首先作者验证了这种修改不会明显损害网络的分类性能。
这篇关于论文阅读-《Learning Deep Features for Discriminative Localization》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!