Score-CAM:Score-Weighted Visual Explanations for Convolutional Neural Networks
会议:CVPR
时间:2020年
现有类激活图的方法大多基于梯度如Grad-CAM、Grad-CAM++,这些方法容易受到梯度饱和、梯度噪声等问题的影响。为此本文提出一个全新的post-hoc的类激活图方法Score-CAM。Score-CAM通过每个激活图在目标类上的前向传递分数来获得其权重,从而摆脱了对梯度的依赖,通过权重与激活图的线性组合得到最终结果。
1.Introduction
现有比较常用的解释卷积操作和CNN的方法可分为:Gradient visualization(梯度可视化)、Perturbation(扰动)和Class Activation Map (CAM,类激活图)。
基于梯度的方法将目标类别的梯度反向传播到输入层,以突出对预测影响较大的图像区域。但这些方法构建的显著图的质量普遍较低,而且仍然存在噪声[1]。基于扰动的方法通过扰动原始输入,观察模型预测的变化。为了找到最小区域,这些方法通常需要额外的正则化,并且需要计算时间成本。基于 CAM 的解释通过卷积层激活图的线性加权组合为单一输入提供视觉解释。但CAM需要额外的GAP层,而Grad-CAM和Grad-CAM++受到梯度噪声和爆炸消失等的局限性,效果同样不佳。为此,本文提出一个全新的方法Score-CAM。本文创新点总结如下:
- 本文介绍了一种名为 Score-CAM 的新型无梯度可视化解释方法,它弥补了基于扰动和基于 CAM 方法之间的差距,并以直观易懂的方式表示激活图的权重。
- 本文对 Score-CAM 生成的显著性地图在识别任务中的公平性进行了定量评估,结果表明 Score-CAM 能更准确地找出目标类别。
- 在可视化和定位任务上进行定量评估,并且在最后,我们介绍了其作为调试工具分析模型错误行为的有效应用。
2.Background
这里主要对"CAM"和"Grad-CAM"进行介绍,详见本人的其他文章。
然而,重新对激活图中各个通道进行审视后发现,与梯度信息相比,"信度增加(Increase of Confidence)"是量化信道重要性的更好方法,下面将先指出梯度方法存在的问题,最后对Increase of Confidence进行介绍。
2.1 Gradient Issue
Saturation Gradient(梯度饱和)
由于 Sigmoid 函数或 ReLU 函数零梯度区域的饱和问题,深度神经网络的梯度可能会产生噪音,并产生消失。其后果之一是输出相对于输入或内部层激活的梯度可能会产生视觉噪音,这也是将输入特征的重要性归因于输出的 Saliency Map 方法所面临的问题之一。下图显示了一个梯度视觉噪音的例子。
False Confidence(错误的置信度)
基于Grad-CAM的方法需要通过对特征图进行线性组合获得激活图。对于给定的两个特征图
A
l
i
A^i_l
Ali和
A
l
j
A_l^j
Alj,如果其对应的权重
α
i
c
>
α
j
c
\alpha_i^c > \alpha_j^c
αic>αjc,则认为对于类别
c
c
c,
α
i
c
\alpha_i^c
αic对应的输入区域的重要性要大于
α
j
c
\alpha_j^c
αjc对应的输入区域。但通过实验可以发现,权重较高的激活图对网络输出的贡献并非较高,如下图所示:
这种现象可能是由于梯度在网络中的全局池化操作以及梯度消失问题所引起的(在解释性方法中的传播过程中丢失了一些关键信息,从而影响了对模型决策和特征重要性的理解)。
3.Score-CAM:Proposed Approach
模型整体框架图如下图所示:
3.1 Methodology
之前的方法使用流入最后一个卷积层的梯度信息来表示每个激活图(特征图)的重要性,与之不同的是,本文将 “置信度增加”(Increase of Confidence)作为衡量激活图重要性的指标。前两个Definition是GAM和Grad-CAM的,这里就不重复介绍了。
Definition 3 (Increase of Confidence)
给定一个一般函数
Y
=
f
(
X
)
Y=f(X)
Y=f(X),其中输入向量
X
=
[
x
0
,
x
1
,
.
.
.
,
x
n
]
T
X=[x_0,x_1,...,x_n]^T
X=[x0,x1,...,xn]T,输出结果为一个标量
Y
Y
Y。对于一个已知的输入baseline
X
b
X_b
Xb,元素
x
i
x_i
xi的对预测为
Y
Y
Y的贡献度
c
i
c_i
ci(
i
∈
[
0
,
n
−
1
]
i \in [0,n-1]
i∈[0,n−1]),等于在
X
b
X_b
Xb中替换第
i
i
i个元素
x
i
x_i
xi后结果的变化量,可用如下公式表示:
c
i
=
f
(
X
b
∘
H
i
)
−
f
(
X
b
)
c_i=f(X_b\circ H_i)-f(X_b)
ci=f(Xb∘Hi)−f(Xb)
其中
H
i
H_i
Hi为与
X
b
X_b
Xb结构相同的向量,对于其中每个值
h
j
=
I
[
i
=
j
]
h_j=\mathbb{I}[i=j]
hj=I[i=j],
∘
\circ
∘表示Hadamard Product。
一些相关概念与Def3相同,例如DeepLIFT利用给定输入的输出与baseline的差异来量化各层传播的重要信号。在GradCAM++中同样存在两个比较相似的概念:Average Drop %和Increase in Confidence。为了衡量每个激活图的重要性,这里将Def3推广到通道级别,提出Channel-wise Increase of Confidence。
Definition 4
给定一个CNN模型
Y
=
f
(
X
)
Y=f(X)
Y=f(X),其中X为输入,Y为输出标量。这里选取一个卷积层
l
l
l,其对应激活图用
A
l
A_l
Al表示。其中
A
l
A_l
Al第
k
k
k个通道的激活图用
A
l
k
A_l^k
Alk表示。对于一个已知的输入
X
b
X_b
Xb,
A
l
k
A_l^k
Alk对Y的贡献度用下式表示:
C
(
A
l
k
)
=
f
(
X
∘
H
l
k
)
−
f
(
X
b
)
C(A_l^k)=f(X\circ H_l^k)-f(X_b)
C(Alk)=f(X∘Hlk)−f(Xb)
其中
H
l
k
=
s
(
U
p
(
A
l
k
)
)
H_l^k=s(Up(A_l^k))
Hlk=s(Up(Alk))
U
p
(
⋅
)
Up(\cdot)
Up(⋅)表示将
A
l
k
A_l^k
Alk上采样到输入图像大小,
s
(
⋅
)
s(\cdot)
s(⋅)为一个normalization公式,将输入矩阵每个元素映射至[0,1]。(这里我大致看了下源码,已知的输入
X
b
X_b
Xb应该是图像的原始输入,即使算出来C的值有正有负,最后经过softmax依然均为正数)
Use of Upsampling
CIC(Channel-wise Increase of Confidence) 首先对与原始输入空间中特定区域相对应的激活图进行上采样,然后利用上采样激活图对输入进行扰动。该激活图的重要性由屏蔽输入的目标分数得出。与文献[2]通过蒙特卡洛采样(Monte Carlo sampling)生成 N 个小于图像尺寸的掩码,然后将每个掩码上采样到输入尺寸不同,CIC 不需要生成掩码的过程。相反,每个上采样激活图不仅能呈现与内部激活图最相关的空间位置,还能直接作为掩码对输入图像进行扰动。
Smoothing with Normalization
Increase of Confidence的本质是创建一个二元mask H i H_i Hi,将其作用与输入的顶部,只保留输入中感兴趣的特征。然而,当感兴趣的不是输入图像中的一个像素,而是一个特定区域时,二进制掩码可能不是一个合理的选择。至于原因这里我认为是无法找到一个合适的阈值直接将图像二值化,阈值过大可能遗失过多特征图的信息,比如目标区域和上下文,阈值过小则有可能导致引入过多噪声信息。
因为,为了给激活图生成更平滑的掩码 H L k H_L^k HLk,这里将激活图中每个值归一化至[0,1],而不是直接将所有元素设置为二值,归一化公式如下:
s ( A l k ) = A l k − min A l k max A l k − min A l k s(A_l^k)=\frac{A_l^k-\min A_l^k}{\max A_l^k-\min A_l^k} s(Alk)=maxAlk−minAlkAlk−minAlk
最终,本文将Score-CAM总结为Definition 5,整体算法流程如下:
Definition 5(Score-CAM)
Score-CAM的类激活图
L
s
c
o
r
e
−
C
A
M
c
L_{score-CAM}^c
Lscore−CAMc的定义如下:
L
S
c
o
r
e
−
C
A
M
c
=
R
e
L
U
(
∑
k
α
k
c
A
l
k
)
L_{Score-CAM}^c=ReLU(\sum_k\alpha_k^cA_l^k)
LScore−CAMc=ReLU(k∑αkcAlk)
其中
α
k
c
=
C
(
A
l
k
)
\alpha_k^c=C(A_l^k)
αkc=C(Alk)
其中
C
(
⋅
)
C(\cdot)
C(⋅)表示对
A
l
k
A_l^k
Alk计算CIC分数。
与Grad-CAM类似,Score-CAM也将 ReLU 应用于映射的线性组合,因为Score-CAM只对对感兴趣的类别有积极影响的特征感兴趣。由于权重来自与目标类别激活图相对应的 CIC 分数,因此 Score-CAM 摆脱了对梯度的依赖。此外,Score-CAM可以用于网络中任意一层卷积层中。
3.2 Normalization on Score
该部分主要讨论在求得CIC分数后是否要使用softmax进行归一化。相关实验结果如下图:
可以看到,相对输出值(经过 softmax 处理后的,post-softmax)在归一化之后比绝对输出值(未经过 softmax 处理的,pre-softmax)更适合用来衡量相关性。文中解释为: softmax 能够将输出映射到概率分布上,更能反映不同类别之间的相对重要性,但我这里的直观的理解是可能有的特征图本身并不关注该类别,虽然计算出的权重相对其他特征图较小,但总值依然很大,这就导致在可视化时也会凸显出来,比如100和10与1.0和0.1的区别。
4.Experiments
本文实验使用VGG16网络和ILSVRC2012 val数据集。对于输入图像,resize为224x224x3,normalize时平均向量为[0.485, 0.456, 0.406],标准差向量为[0.229, 0.224, 0.225]。无额外的预处理。
4.1 Qualitative Evaluation via Visualization(定性评估)
4.1.1 Class Discriminative Visualization
该部分实验是通过可视化结果定性地评估模型效果,与8种基于梯度的、扰动地和CAM的SOTA方法进行比较,结果如下图所示:
可以看到Score-CAM的随机噪声要远少于Mask、RISE、Grad-CAM和Grad-CAM++,并且Score-CAM与其他基于梯度的方法相比,可以生成更平滑的显著图(smoother saliency maps)。
第二个实验则是证明Score-CAM具有类别判别性,如下图所示:
对于上图中,VGG16模型对于上图被识别为斗牛犬的预测置信度为49.6%,而识别为虎斑猫的为0.2%。从图中可以看到,Score-CAM能够正确地给出这两个类别的解释位置,尽管后者的预测概率远低于前者的概率。我们有理由期待 Score-CAM 能够区分不同的类别,因为每个激活图的权重都与目标类别的响应相关,这使得 Score-CAM 具有良好的类别区分能力。
4.1.2 Multi-Target Visualization
本实验用于证明Score-CAM对于多目标定位的有效性。结果如下图所示:
可以看到,Score-CAM和Grad-CAM++相比于Grad-CAM,能有识别多目标的图像,同时也可以看到 Score-CAM 的显著性图比 Grad-CAM++的更有针对性。
Score-CAM之所以能够识别多目标,是因为每个激活图的权重由其在目标类别上的得分来表示,当存在被识别目标时无论是几个物体,其权重分数只会收到类别分数的影响,因此模型预测的每个高置信度目标对象都能被独立突出显示。
4.2 Faithfulness Evaluation via Image Recognition
本实验通过图像识别衡量faithfulness。通过限制显著性图中正像素的数量(每次过滤50%的像素),衡量与未经过限制的图像之间置信度的差距。这里通过Grad-CAM++中提出的两个评价指标:Average Drop(
∑
i
=
1
N
max
(
0
,
Y
i
c
−
O
i
c
)
Y
i
c
×
100
\sum_{i=1}^N\frac{\max(0,Y_i^c-O_i^c)}{Y_i^c}\times100
∑i=1NYicmax(0,Yic−Oic)×100)和Average Increase(
∑
i
=
1
N
S
i
g
n
(
Y
i
c
<
O
i
c
)
N
\sum_{i=1}^N\frac{Sign(Y_i^c<O_i^c)}{N}
∑i=1NNSign(Yic<Oic)),其中
Y
i
c
Y^c_i
Yic表示对原始图像i预测为
c
c
c类的预测分数,
O
i
c
O_i^c
Oic表示将限制后图像作为输入的分数,
S
i
g
n
Sign
Sign为指示函数。结果如下表所示:
Score-CAM获得了31.5%的average drop和30.6%的average increase,远超于其他基于扰动和CAM的方法。在识别任务中的良好表现表明,Score-CAM可以成功地找出目标物体最容易区分的区域,而不仅仅是找到人类认为重要的部分。原文中特别注明:在此,我们不将其与基于梯度的方法进行比较,因为它们的视觉特性不同。
此外,这里还根据论文[2]对上述两个评价指标进行补充。通过不断删除和增加像素,查看预测类别置信度的变化程度,以证明显著性图中高分数的像素对网络预测的重要性(每次移除1%的像素)。实验结果如下图所示:
此外,在2000张图像上的平均结果如下表所示:
与基于梯度的CAM方法相比,Score-CAM在这两个指标上都取得了更好的性能。
4.3 Localization Evaluation
该实验主要考察Score-CAM激活图的定位能力。与其他目标定位的检测方法不同,该方法主要关注显著性图中有多少energy(可以理解为高亮区域)落在目标物体的边界框内。具体来说,首先用目标类别的边界框对输入图像进行二值化处理,内部区域赋值为 1,外部区域赋值为 0。然后,将其与生成的显著性图进行点乘法运算,并求和以获得目标边界框中的能量,公式如下:
P r o p o r t i o n = ∑ L ( i , j ) ∈ b b o x c ∑ L ( i , j ) ∈ b b o x c + ∑ L ( i , j ) ∉ b b o x c Proportion=\frac{\sum L_{(i,j)\in bbox}^{c}}{\sum L_{(i,j)\in bbox}^{c}+\sum L_{(i,j)\notin bbox}^{c}} Proportion=∑L(i,j)∈bboxc+∑L(i,j)∈/bboxc∑L(i,j)∈bboxc
由于ILSVRC数据集中存在很多目标占据很大一块区域,这会导致结果不准,因此这里手动删去目标区域占图像区域大于50%的图片和多目标图片。随机选择500张图像进行测试,结果如下表:
4.4 Sanity Check
[3]认为,仅仅依靠视觉评估可能会产生误导。有些显著性方法既独立于模型,也独立于数据生成过程。这里采用[3]中提出的模型参数随机化测试,比较 Score-CAM 在训练后的模型上的输出与随机初始化的相同结构的未训练网络的输出,以证明该算法确实反应模型的预测结果,结果如下图:
可以看到Grad-CAM、Grad-CAM++和Score-CAM均通过了合理性检查,同时可以发现Score-CAM结果对模型参数很敏感,因此可以反映模型的质量。
4.5 Applications
该部分主要讨论Score-CAM的实际应用。一个好的post-hoc可解释性方法,不仅要告诉人们模型的关注点,还要帮助研究人员分析模型。先前的工作更关注模型的定位,却忽略了对分析原始模型的有效性。本节将对其进行讨论。
第一个作用是探究模型是否收敛。本文观察到,即使模型的分类性能很差,Score-CAM 也能很好地完成定位任务,且随着分类性能的提高,显著性地图中的噪声会减少,并更多地集中在重要区域。噪声可以显示分类性能,如果生成的显著性图不再变化,则模型可能已经收敛。
第二个作用是帮助诊断模型预测错误的原因,并识别数据集偏差。在下图可以发现,模型错误地将标签为 "自行车"的图像分类为 “人”。
通过观察可以发现"人"与"自行车"是相关的,因为在训练集中,"人"出现在大多数 "自行车 "图像中,而 "人"区域是最容易分散注意力的部分,从而导致误分类。
参考文献
[1]. D. Omeiza, S. Speakman, C. Cintas, and K. Weldermariam. Smooth grad-cam++: An enhanced inference level visualization technique for deep convolutional neural network models. arXiv preprint arXiv:1908.01224, 2019.
[2]. V. Petsiuk, A. Das, and K. Saenko. Rise: Randomized input sampling for explanation of black-box models. arXiv preprint arXiv:1806.07421, 2018.
[3]. J. Adebayo, J. Gilmer, M. Muelly, I. Goodfellow, M. Hardt, and B. Kim. Sanity checks for saliency maps. In Advances in Neural Information Processing Systems, pages 9505–9515, 2018.