Deep Inside Convolutional Networks Visualising Image Classification Models and Saliency Maps
会议:ICLR
时间:2014年
本文可以说是通过梯度计算类激活图的开山之作,主要提出两个基于计算类得分相对于输入图像梯度的可视化技巧:第一种方法生成的图像能使类别得分最大化,从而将 ConvNet 捕捉到的类别概念可视化,查看使每类预测置信度最大的图像。第二种方法是针对给定图像和类别,计算类激活图。并且,本文在最后还对基于梯度的基于反卷积的模型进行了讨论。
1. Introduction
前面首先介绍了可解释性的重要性,并简要介绍了现有可解释性方法如DeconvNet,之后引出本文尝试对一个在ImageNet上训练的分类网络进行可视化,贡献如下:
- 首先,证明了通过对输入图像进行数值优化,可以获得 ConvNet 分类模型的可视化效果。需要注意,本网络是以有监督的方式进行训练的,因此可以知道最终全连接分类层中的哪个神经元应该最大化以可视化感兴趣的类别(在无监督的情况下,必须使用单独的注释图像集来找出负责特定类别的神经元)。
- 其次,本文提出一种利用分类 ConvNet 的单次反向传播,计算给定图像中给定类别的空间支持率(其实我理解的就是反向传播的权重)的方法。
- 最后本文还证明了基于梯度的可视化方法可以推广到基于反向传播重构的方法。
2. Class Model Visualisation
本节介绍第一个可视化方法。给定一个已学习的分类网络和一个想要识别的类,可视化算法通过数值方法构建出使网络预测为该类别置信度最大的图像。
假设 S c ( I ) S_c(I) Sc(I)表示分类网络预测图像 I I I为类别 c c c的分数(置信度)。这里使用 L 2 L_2 L2norm调整图像,通过下式使 S c S_c Sc分数最大:
arg max I S c ( I ) − λ ∥ I ∥ 2 2 . \arg\max_IS_c(I)-\lambda\|I\|_2^2. argImaxSc(I)−λ∥I∥22.
其中
λ
\lambda
λ为正则化系数(我猜测这里
L
2
L_2
L2norm的作用是在保证置信度取得最大的前提下,减小图像的复杂性,使图像更加自然,因为越复杂的图像可能越无法清晰表示特征)。通过反向传播方法可以找到一个局部最优的图像
I
I
I。此优化过程和卷积神经网络的训练十分相似,其通过反向传播优化各个网络层的权重,但不同之处在于本优化是针对输入图像进行的,而权重则固定为训练阶段找到的权重。在初始化阶段,使用zero图像(在网络的训练阶段,使用的图像为零均值化(标准化的一种简化,仅要求均值为0, 对标准差不要求)图像。),然后将训练集均值图像作为结果,对于每个类的可视化结果如下图所示:
需要注意的是这里使用的类分数
S
c
S_c
Sc是没有经过Norm的,即没有经过softmax。因为在使用softmax后,指定类别分数变大的原因,有可能不是因为学习到的图像能使目标类分数变大,而是让其他类分数变小,最后softmax出来的值同样能保证指定类别的分数最大。因此,本文对
S
c
S_c
Sc进行优化,以确保优化只集中在类别
c
c
c上。
3. Image-Specific Class Saliency Visualisation
本节介绍另一种可视化技巧,也就是类激活图。给定一张图片 I 0 I_0 I0和类别 c c c和一个分类网络,类分数公式为 S c ( I ) S_c(I) Sc(I)。
这里先简单介绍一个样例以表明本文动机,首先考虑类别为 c c c的线性分数模型:
S c ( I ) = w c T I + b c S_c(I)=w_c^TI+b_c Sc(I)=wcTI+bc
其中图像 I I I用一个一维向量表示, w c w_c wc和 w b w_b wb分别表示模型的权重向量和偏置。在这种情况下,很容易看出 w w w中元素的大小决定了 I I I对应的像素对于 c c c类的重要性。
而在卷积神经网络中,类分数 S c ( I ) S_c(I) Sc(I)是一个关于 I I I的高度非线性的公式,因此上面的推理不能立即适用。然而在给定图像 I 0 I_0 I0的情况下,可以通过计算一阶泰勒展开,用 I 0 I_0 I0附近的线性函数来近似 S c ( I ) S_c(I) Sc(I):
S c ( I ) ≈ w T I + b S_{c}(I)\approx w^{T}I+b Sc(I)≈wTI+b
其中 w w w是 S c S_c Sc相对于图像 I I I,在点 I 0 I_0 I0上的导数。
w = ∂ S c ∂ I ∣ I 0 w=\left.\frac{\partial S_c}{\partial I}\right|_{I_0} w=∂I∂Sc I0
结合上面来看,也就是说,偏导数越大则表示该部分越重要。
而另一种关于偏导数越大对应位置的像素越重要的解释是:导数的大小指示了哪些像素需要最小的改变,以对类别得分产生最大的影响。换句话说,导数的绝对值越大,表示改变相应像素值的影响越大,从而对类别得分产生更显著的变化。这种解释帮助我们理解哪些像素对于影响特定类别的识别结果最为敏感。
3.1 Class Saliency Extraction
给定图像 I 0 I_0 I0(包含m行n列)和类别 c c c,类显著图 M ∈ R m × n M \in R^{m \times n} M∈Rm×n的计算公式如下:
首先通过反向传播找到导数 w w w。然后,通过重新排列向量 w w w的元素得到显著性图。在不考虑通道(灰度图)的情况下, w w w(也就是梯度图)的数量等于 I 0 I_0 I0中像素的数量,因此显著图可以表示为 M i j = ∣ w h ( i , j ) ∣ M_{ij}=|w_{h(i,j)}| Mij=∣wh(i,j)∣,其中 h ( i , j ) h(i,j) h(i,j)为 w w w的元素索引,对应图像的第i行和第j列。而对于RGB图像来说,假设图像 I I I中像素 ( i , j ) (i,j) (i,j)的颜色通道 c c c与 w w w中索引为 h ( i , j , c ) h(i,j,c) h(i,j,c)的元素相对应。为了得出每个像素$ (i, j) 的单类显著性值,本文取所有颜色通道中 的单类显著性值,本文取所有颜色通道中 的单类显著性值,本文取所有颜色通道中w 的最大值: 的最大值: 的最大值:M_{ij}=\max_c|w_{h(i,j,c)}|$。
此方法的优势在于:1.无需额外的标注信息 2.计算速度快(只需要单次反向传播)
但需要注意的是,按照文中的介绍,这里的显著图是直接根据梯度来可视化的,而不是计算权重对feature map进行加权。
实验结果如下图所示:
3.2 Weakly Supervised Object Localisation
本节主要探索其在弱监督目标定位任务上的有效性,由于很多基于CAM的论文都对其进行了讨论,这里就不过多介绍。
4. Relation to Deconvolutional Networks
本节将对基于梯度的可视化算法和基于反卷积的算法建立一个连接进行讨论。这里认为,基于梯度的方法和基于反卷积的方法是近似或等价的,下面将分别从卷积部分、pooling部分和ReLU进行讨论。
对于卷积层 X n + 1 = X n ⋆ K n X_{n+1}=X_{n}\star K_{n} Xn+1=Xn⋆Kn,其中 ⋆ \star ⋆应该是表示卷积符号。梯度计算公式为 ∂ f / ∂ X n = ∂ f / ∂ X n + 1 ⋆ K n ^ \partial f/\partial X_n=\partial f/\partial X_{n+1}\star \hat{K_n} ∂f/∂Xn=∂f/∂Xn+1⋆Kn^,其中 K n K_n Kn和 K n ^ \hat{K_n} Kn^分别表示卷积核和flipped后的卷积核。与翻转核的卷积完全对应于计算DeconvNet中的第n层的重构 R n R_n Rn: R n = R n + 1 ⋆ K n ^ R_{n}=R_{n+1}\star\widehat{K_{n}} Rn=Rn+1⋆Kn ,因此在卷积上是等价的。
对于ReLU激活层 X n + 1 = m a x ( X n , 0 ) X_{n+1}=max(X_n,0) Xn+1=max(Xn,0),梯度计算公式为: ∂ f / ∂ X n = ∂ f / ∂ X n + 1 1 ( X n > 0 ) \partial f/\partial X_{n}=\partial f/\partial X_{n+1}1\left(X_{n}>0\right) ∂f/∂Xn=∂f/∂Xn+11(Xn>0),其中 1 1 1为指示函数。这里与反卷积的过程有些许不同。反卷积的ReLU重构函数为: R n = R n + 1 1 ( R n + 1 > 0 ) R_{n}=R_{n+1}1(R_{n+1}>0) Rn=Rn+11(Rn+1>0),这里使用 R n + 1 R_{n+1} Rn+1指导输出重建,而不是 X n X_n Xn。
最后是对于max-pooling层 X n + 1 ( p ) = max q ∈ Ω ( p ) X n ( q ) X_{n+1}(p)~=~\max_{q\in\Omega(p)}X_n(q) Xn+1(p) = maxq∈Ω(p)Xn(q),其中,输出特征图的元素 p p p是通过汇集输入的相应空间邻域$Ω§ 计算得出的。而对于梯度计算, 计算得出的。而对于梯度计算, 计算得出的。而对于梯度计算,\partial f/\partial X_n(s)=\partial f/\partial X_{n+1}§\mathbf{1}(s=\arg\max_{q\in\Omega§}X_{n}(q)) ,(上式的意思就是找到 ,(上式的意思就是找到 ,(上式的意思就是找到X_n 中每个 中每个 中每个\Omega§$中最大的部分反向传播,其他部分省略)这里argmax对应DeconvNet中max-pooling的“switch”机制。
因此,可以得出结论,除了ReLU层,使用DeconvNet计算近似特征映射重建 R n R_n Rn相当于使用反向传播计算导数 ∂ f / ∂ X n \partial f/\partial X_{n} ∂f/∂Xn。因此可以认为,基于梯度的方法是DecovNet的推广。
此外可以认为,类激活图的方法是对全连接层中的神经元**(对应类别的)**进行可视化,而不是卷积层中的神经元。