会议:CVPR
时间:2016年
本文在实验过程中发现,全局平均池化层(Global Average pooling)能够在图像级别对要检测的目标进行有效定位,并提出一个全新的方法class activation maps(CAM)。
1.Introduction
Zhou等人[1]最新的研究结果发现,即使在没有提供物体位置监督信息的情况下,卷积神经网络(CNN)各层的卷积核依然能够充当物体检测器的作用,也就是卷积操作本身能保留位置信息(假设一直狗出现在图像的左上角,那么最后一层卷积层和狗相关的卷积核,左上角的值应该也会很高)。但在分类任务中,后续的全连接层会导致这种位置信息的丢失。
而由于全连接层本身具有参数量大,容易过拟合等问题,因此[2]提出全局平均池化(Global Average pooling)作为结构正则化项,方式训练过拟合。本文实验中发现,除上述功能外,GAP能够对物体进行定位,并将信息一直保留到网络的最后一层。通过此能力,可以得到在对某物体进行分类时,原始图上最重要的区域,如下图所示。
尽管此方法很简单,但其作为弱监督任务,在ILSVRC benchmark(一个分类+回归找到box任务)上取得了37.1% top-5的错误率,与AlexNet全监督任务的34.2%错误率十分接近。此外,本方法的深层特征可定位性同样能应用于其他分类等任务中。
2.Related Work
这里本文主要讨论了两个最相近的研究方向:弱监督目标定位weakly-supervised object localization和可视化CNN的内部表示visualizing the internal representation of CNNs。
weakly-supervised object localization这里讨论的最重要一点是为什么要使用global average pooling而不是global max pooling。主要由于GMP的定位仅限于位于物体边界的一点,而不是确定物体的全部范围(GMP在反向传播时会忽略非最大位置的梯度,损失了一部分位置信息,而GAP则不会)
visualizing the internal representation of CNNs则主要表明一些方法通过反卷积等手段查看每个卷积核的激活模式。
3.Class Activation Mapping
本节将对CAM的实现进行详细介绍。CAM的主要作用是针对特定的类别,在原图像中识别该类别的判别图像区域,如下图所示:
整个模型的结构图如下图所示,全局池化输出最后一层卷积层各单元特征图的空间平均值。之后通过一个线性层计算各特征图对该类输出的权重,并对特征图加权求和,最后获得类激活映射class activation maps。
以下是本文的数学符号描述。
对于给定的一张图像,用表示最后一层卷积层输出的feature map中,第个激活单元(我感觉指通道channel)的处的空间位置。之后,对于第个通道得到的结果使用全局池化,得到(第个channel的求和值,这里没加平均是因为系数为常数,不影响后续结果),即。因此,对于给定类别,输入至softmax得到类别分数,其中表示特征图(通道)对类别的贡献度。本质上,表示中对类别的重要程度。最终每个类经过softmax的输出用表示,计算公式为。这里不考虑偏执项,应该就是只考虑不考虑偏置项。
通过将带入到类分数,可以得到以下公式:
这里定义为类别的class activation map类激活图,定义为以下公式:
因此并且直接表示空间网格(x, y)激活对图像类别的重要性。
直觉上,基于前面的工作[1,3],我们期望每个通道都被其感受野中的某些视觉模式激活,因此这里就表示这种视觉模式的映射(这里视觉模式就是我认为就是从图像中提取的一类视觉特征)。本文根据加权求和的方式将处于不同空间位置的视觉模式进行融合,并且可以通过简单的上采样的方式将类激活图映射至原始图像的维度,以在原图中识别与特定类别最相关的图像区域。图2为每张图像分数最大的类的类激活图,而下图则为同一张图像不同预测类别的类激活图。
此外,本文还在这里讨论了Global average pooling(GAP)和Global max pooling(GMP)的差距,本文认为GMP会促使网络仅识别one discriminative part,而GAP则会使网络识别整个物体的范围。因为在计算average时会对关键区域范围内所有特征都存在影响,而计算max则只会对最大值的部分特征产生影响(其他部分由于max,导致无梯度),因此两种计算方式分类性能接近,但定位性能是不同的。
3.Weakly-supervised Object Localization
Object Localization定位竞赛指检测目标类别的同时回归出目标所在位置(画框),也就是分类+回归的任务。使用数据集为ILSVRC 2014 benchmark dataset。
3.1 Setup
本文使用多种网络框架如AlexNet,VGGnet和GoogLeNet,并且移除了最后输出的全连接层,替换为一个GAP层加一个全连接softmax层。并且本文发现当GAP之前的最后一个卷积层具有更高的空间分辨率(我们称之为映射分辨率)也就是得到的feature map具有更高分辨率时,网络的定位能力得到了提高,保留了更多定位信息,因此在实验过程中移除了部分网络的多个卷积层,将feature map维度变为14x14。
3.2 Results
本文在分类和定位任务上分别进行了对比实验
Classification:结果如表1所示,可以看到将线性层替换为GAP后,不同网络均存在一定衰减。此外,本文对AlexNet进行改进,在GAP之前添加了两个卷积层,从而得到AlexNet*-GAP网络。总结,用GAP改动后,分类准确率略微下降,但依然保留绝大部分分类性能。
Localization:由于并没有回归分支,因此为了生成边界框,本文选取CAM中值最大的20%的像素构建一个连通块,之后根据连通块构建能覆盖全部区域的边界框。实验结果如表2所示,可视化对比如下图所示
此外,本文还与多个weakly-supervised和fully-supervised方法进行了对比,证明本方法用弱监督同样能达到较好的效果,如下表:
4.Deep Features for Generic Localization
本节主要讨论使用GAP获得的特征与从高层次CNN得到的特征一样,同样具有很强的语义信息,可以用于其他任务。本实验在SUN397 , MIT Indoor67, Scene15, SUN Attribute, Caltech101, Caltech256, Stanford Action40, and UIUC Event8多个数据集上使用线性SVM进行对比,结果如下表所示:
Ave pool和gap的GoogLeNet取得了最好的结果,并且虽然GoogLeNet-GAP具有更少的卷积层,但依然能取得近似的结果。也就是说GoogLeNet-GAP的特征与sota方法相比也十分具有竞争性。
此外,本文还探索使用CAM技术的GoogLeNet-GAP生成的定位图在不同数据集下是否能提供有用的信息,结果如下图所示:
上述通用判别定位的结果可以说明,CAM能够在其他通用任务或其他数据集定位。
4.1 Fine-grained Recognition
本节主要探索CAM在细粒度识别上的作用,此处使用CUB-200-2011鸟类数据集,实验结果如下所示:
可以看到,使用GoogLeNet-GAP带Box标签的结果达到70.5%,而使用章节3.2的方法没有任何标注的结果为63.0%。这里本文将CAM定位后的区域根据3.2方法,对Box进行裁剪(减少背景部分的影响),重新训练网络(也就是定位->裁剪->分类)。可以看到,这种方法训练后的模型结果能达到67.8%。这种定位能力对于细粒度识别尤其重要,因为类别之间的区别是微妙的,并且具有更集中的图像裁剪可以更好地识别。(弱监督接近监督水平)
此外,这里对比CAM生成的box与鸟类box的gt的对比,通过计算两个box的IoU,大于0.5则认为预测成功。CAM最终生成的box结果达到41.0%,远远大于随机生成的5.5%。
4.2 Pattern Discovery
该部分主要介绍CAM的能够对一些模式进行挖掘,这里我不详细记笔记了,主要列举文中出现的几个例子:1.Discovering informative objects in the scenes也就是自动发现场景中一些重要的物体。2:Concept localization in weakly labeled images短语概念弱监督定位,也就是用短语概念使其在图中定位到。3.Weakly supervised text detector弱监督文字区域检测。4.Interpreting visual question answering,视觉问答VQA。
5.Conclusion
本文提出一个用于CNN的类激活图技术,这使得经过分类训练的CNN网络能够在不使用任何边界框注释的情况下学习执行对象定位。类激活图允许在任何给定的图像上可视化预测的类分数,突出显示CNN检测到的对象部分。并且在ILSVRC等benchmark中也证明了CAM对于定位的有效性。此外,本文还证明CAM定位技术可以推广到其他视觉识别任务,即CAM能够产生通用的可定位深度特征,以帮助其他研究人员理解cnn在任务中关注的区域。
6.缺点
1.必须要有GAP层,否则需要将最后分类线性层改为GAP层后重新训练。
2.只能分析最后一层卷积层的输出,无法分析中间层。
3.由于池化(下采样)的方式引入了平移不变性,因此也就意味着失去了长和宽方向的位置信息,因此在CAM热力图中不适用带池化的卷积神经网络。
4.仅限图像分类任务,对于一些多模态任务或强化学习等用此方法行不通。
7.补充知识
由于生成的热力图大小为7x7或14x14,本文可以使用双线性插值的方法恢复至原始大小。
参考文献
[1] B. Zhou, A. Khosla, A. Lapedriza, A. Oliva, and A. Torralba. Object detectors emerge in deep scene cnns. International Conference on Learning Representations, 2015.
[2] M. Lin, Q. Chen, and S. Yan. Network in network. International Conference on Learning Representations, 2014.
[3] M. D. Zeiler and R. Fergus. Visualizing and understanding convolutional networks. Proc. ECCV, 2014.
[4] https://www.bilibili.com/video/BV1Ke411g7gm/?spm_id_from=333.788&vd_source=25d1a12ff92265ad29209fc06224b83d
新人入门可解释性,如有错误还请大家多多指正!