Abstract
研究了全局平均池化(global average pooling, GAP),分析了它如何仅仅使用图像级标签训练就能使CNN具有出色的定位能力(localization ability)。作者发现,尽管GAP若为一种正则化手段被提出(来自Network in Network),但它其实建立了一种具有定位能力的表示 ,可以显示出CNN在一张图片中关注到的区域。作者仅使用GAP和图像级标签(即仅使用图像标签进行弱监督语义分割),在ILSVRC2014的目标检测任务上取得了37.1%的top-5错误率。
Introduction
先前的工作表明CNN具有类似目标检测的定位能力(文章题目:Object detectors emerge in deep scene cnns.),即可以定位到图片中的物体,但一旦后面接全连接层进行分类,这种能力就消失了。许多卷积网络如NiN和GoogLeNet没有使用全连接层。
Global average pooling最初是在NiN中作为一种正则化方法提出的(避免过拟合)。但在作者本文的实验中,发现GAP层不仅有这个作用,而且可以保存CNN的这种localization ability。如图所示,仅使用分类标签训练的CNN就可以定位到图像中最discriminative的区域(即对分类最重要的,最具判别力的区域)。
作者仅使用GAP和图像级标签(即仅使用图像标签进行弱监督语义分割),在ILSVRC2014的目标检测任务上取得了37.1%的top-5错误率,接近当时的全监督方法。
Method
Class Activation Mapping
提出Class Activation Map(CAM)。某一类的CAM指出了CNN识别此类时最重要(discriminative)的图像区域。
作者使用类似NiN和GoogleNet的网络结构,即包含若干卷积层,在最后的输出层(如分类用的softmax层)之前,在最后一个卷积层的feature map上使用global average pooling,并将输出通过一个全连接层获取分类预测。
可以通过将输出层的权重投影回卷积层feature map来获取不同图像区域(region)的重要性,这就是class activation mapping。
如图2所示,GAP将最后一个卷积层的feature map在空间上取平均。然后人通过对GAP后的向量元素进行加权求和(即一个全连接层)获取分类logit。与这个过程类似,可以通过计算最后一个卷积层的feature map的加权和来获取class activation maps。
f k ( x , y ) f_k(x,y) fk(x,y)表示最后一个卷积层中的第k个通道在位置 ( x , y ) (x,y) (x,y)的激活值(即最后一层feature map中通道k、位置 ( x , y ) (x,y) (x,y)处的值)。经过GAP后的输出为 F k = ∑ x , y f k ( x , y ) F_k=\sum_{x,y}f_k(x,y) Fk=∑x,yfk(x,y)。所以对于一个给定的分类c,softmax层的输入(class score) S c = ∑ k w k c F k S_c=\sum_kw_k^cF_k Sc=