目录
网络架构
与CAM相比,GradCAM引入了梯度,同时可以用全连接网络进行训练,而不用将FC替代为GAP层。输入image通过CNN提取特征,经过FC Layer后得到某一类的logit,对其求导数,将每个channel的经过GAP处理,即可得到每一个channel对应的权重,再与channel对应相乘再累加,通过ReLU即可得到GradCAM的热力激活图。
通过反向传播,可以得到输入图像求导后的粗粒图,而如果与由GradCAM产生的细粒图相乘,可得到Guided GradCAM,虽然分辨率上存在一定缺陷,但依然能够反映出class discrimination的效果。同样的道理,在图像分类、图像描述、视觉问答、强化学习等方面也可通过这样的方式分析。
样例分析
比较(b)与(h),发现类别分别为猫、狗时相差不大,而结合GradCAM算法之后,从(d)与(j)可以看出class discrimination。此外,进行消融实验,如对图像特定位置进行遮挡时,从(e)与(k)蓝色部分可以看出具体哪些位置对最终识别结果较为敏感。当使用ResNet实现时,从(f)与(l)可以看出,网络越深时,识别范围越大。
利用这种方式,我们还可以分析神经网络为何会出现识别错误的结果。
以(a)为例,当Ground truth为volcano时,神经网络预测结果为sandbar,通过提取出Guided GradCAM可以发现,此时神经网络提取的图像特征为前景,而实际上我们希望的识别范围是图片的远景,因此可以通过该方式逐步调整权重,直至得到正确识别结果。
对一张图片进行解释,使用GradCAM能够使关键物体高亮显示,而对同一张图片进行不同解释时,也能够使对应的关键物体高亮显示,利用高亮部分,可以实现以人为核心的Machine Teaching,具有很高的科研意义和商业价值。
俗话说:正难则反,如果我们把GradCAM中梯度的计算过程中取反,则能够得到识别某一类时最不敏感的部分,从(b)能够发现,当图像ground truth为猫时,关于狗的部分则为不敏感部分,同理能应用到(c)中图像ground truth为狗的情况。
优缺点分析
优点
1. 不需要使用GAP层,不需要修改模型结构,不需要重新训练
2. 可对卷积神经网络的中间层进行分析
3. GradCAM是在CAM基础上的进一步推广,具有性能的兼容性和优越性
4. 能够更好地进行细粒度图像分类,识别结果具有class discrimination,同时可以应用到以人为核心的Machine Teaching中
缺点
例如,当分析深层网络的底层部分对识别结果的关注度时,可以发现识别界限是模糊的。 同样如果分析浅层网络的底层部分对识别结果的关注度时,发现识别界限也是模糊的。以此,引出GradCAM的缺点。
GradCAM++
现实中,一张图片可能存在同一类的多个物体,对于GradCAM而言,此时只能绘制出一块热力图,而GradCAM++由于权重系数并非通过平均得到,因此能够关注到同一类的所有物体。
比较GradCAM与GradCAM++可以发现,GradCAM在一个channel上每个像素点的权重系数是通过平均后得到,即大小都是相同的,这意味着feature map上的关注度一致,而GradCAM++的权重系数引入(是一个关于二次偏导,三次偏导的系数),则能够解决该问题。
ScoreCAM
ScoreCAM总共包含两个CNN网络,一路通过CNN后进行上采样,得到的结果与原图像进行相乘,然后通过CNN,通过FC Layer后最终再与上采样结果线性结合,则能够解决GradCAM中只进行BP而不进行前向预测的问题。
LayerCAM
在GradCAM中,由于深层网络的细粒度图像分辨率低,浅层网络的粗粒度图像不能反映class discrimination,从而引出LayerCAM,该算法在不论深层网络还是浅层网络时,既能够满足高分辨率的同时,也能够实现class discrimination。
比较分析(a)—(e),自然能够发现LayerCAM呈现的优势。