【论文阅读】Learning Deep Features for Discriminative Localization

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的区域(即对分类最重要的,最具判别力的区域)。

【论文阅读】Learning Deep Features for Discriminative Localization_第1张图片

作者仅使用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。

【论文阅读】Learning Deep Features for Discriminative Localization_第2张图片

如图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=kwkcFk,其中 w k c w_k^c wkc是权重。可以认为 w k c w_k^c wkc表示了 F k F_k Fk对分类c的重要性。最终再经过softmax得到类别c的分类概率: P c = e x p ( S c ) ∑ c e x p ( S c ) P_c=\frac{exp(S_c)}{\sum_cexp(S_c)} Pc=cexp(Sc)exp(Sc)。这里没有考虑偏置项,或者可以认为偏置项为0。

S c S_c Sc可以进行如下变换:

S c = ∑ k w k c F k = ∑ k w k c ∑ x , y f k ( x , y ) = ∑ x , y ∑ k w k c f k ( x , y ) S_c=\sum_kw_k^cF_k=\sum_kw_k^c\sum_{x,y}f_k(x,y)=\sum_{x,y}\sum_kw_k^cf_k(x,y) Sc=kwkcFk=kwkcx,yfk(x,y)=x,ykwkcfk(x,y)

即对每个位置先乘以权重w再求和,结果不变。于是可以定义类别c的class activation map M c M_c Mc,这个map的每个位置的值如下:

M c ( x , y ) = ∑ k w k c f k ( x , y ) M_c(x,y)=\sum_kw_k^cf_k(x,y) Mc(x,y)=kwkcfk(x,y)

因此有 S c = ∑ x , y M c ( x , y ) S_c=\sum_{x,y}M_c(x,y) Sc=x,yMc(x,y)。所以, M c ( x , y ) M_c(x,y) Mc(x,y)直接表明了位置 ( x , y ) (x,y) (x,y)处的激活值对于图像属于类别c的重要性

我们知道,feature map中每个通道都会识别一种特定的visual pattern,即 f k f_k fk表示这种visual pattern的存在性。Class activation map就是对这些不同位置的visual pattern的存在性进行加权求和。通过将class activation map上采样到输入图片相同尺寸,我们就可以得出图片中每个区域对它被分为某个分类的重要程度(即对图片中对分类贡献最大的区域进行可视化)。图3显示了每张图片中对分类最重要的区域。

【论文阅读】Learning Deep Features for Discriminative Localization_第3张图片

图4显示了同一张图片对不同分类的CAMs,可以发现对不同分类重点区域也不一样。

【论文阅读】Learning Deep Features for Discriminative Localization_第4张图片

Global average pooling (GAP) vs global max pooling (GMP)

作者认为,使用GAP进行训练可以鼓励网络分辨出对于分类最重要的物体范围,而使用GMP(全局最大池化,即选择feature map中最大的一个值保留)则会让网络分辨出图像中仅一个最重要的位置。这是因为,GAP后的值来自于图像中所有discriminative parts,而GMP中只关注一个最大值,其余低一点的值都被忽略了。

由于二者的这个差别,GAP和GMP在分类任务上表现相似,但在检测任务上GAP比GMP表现要好许多。

【论文阅读】Learning Deep Features for Discriminative Localization_第5张图片

Experiments

你可能感兴趣的:(论文阅读,计算机视觉,图像处理,深度学习,卷积神经网络)