MMLAB学习-Gard-CAM可视化方法

可视化模型背景

Gard-Cam方法目的是为了看到在模型训练过程中,我们的模型到底在关注哪些地方。如果一个模型分类总是分别。那么它一定把重点关注到了不重要的特征,Gard-Cam方法就可以看到在训练过程中我们的模型到底在关注哪些地方。
如图当我们在分类猫和狗时,通过Gard-Cam就可以知道模型在分类的时候关注点在哪一块。

当把它分类成猫的时候,它关注的特征一定在猫的身上
当把它分类成狗的时候,它的关注点一定在狗的身上,如下图所示
MMLAB学习-Gard-CAM可视化方法_第1张图片

原理

当我们经过一系列的卷积操作得到的特征图,我们想知道这些特征图上的哪些点对我们的分类作用更大,比如当分类是猫的时候,这些特征图上的哪些点对我分类是猫的时候贡献比较大。 我们这里可以遍历每个点,求每个点对我贡献有多大,这里其实就是一个反向传播,求每一个特征图每一个点对我分类的贡献值多大。就是我们需要做的事。

MMLAB学习-Gard-CAM可视化方法_第2张图片公式中的c表示是第几个类,yc表示是c这个类别的得分值,k的意思是第几个特征图,假设我们经过一系列的卷积得到了一个 7 * 7 * 512 的特征图,α(c,k)的意思是每个特征图的权重是多少,i,j表示的是特征图的大小,Z就是 i * j。意思就是我们要计算每个特征图影响,每个特征图计算每个点的重要程度求和再取平均,这些值算的结果大,就说明对这个类别的贡献比较大。
MMLAB学习-Gard-CAM可视化方法_第3张图片
这个公式就说最终算的结果,我们再把我们之前算的每个特征图的影响再放到特征图当中,就可以知道每个特征图发挥的作用,在做一个累加。再通过relu函数把所有大于0 的贡献都加入到图中。

MMLAB学习-Gard-CAM可视化方法_第4张图片这里简单来说如果第一张特征图A的地方贡献比较大,第二张特征图B的地方贡献比较大,加在一起这些地方的贡献程度也会相加,简单来说如下图所示,简单画了一下。
MMLAB学习-Gard-CAM可视化方法_第5张图片

应用

这两张图片分别是护士和医生,当模型训练有偏差的时候可以看到,模型的注意力在脸上,显然模型的注意力不应该在脸上。当训练正常的时候可以看到模型关注的地方在医生和护士所使用工具上
MMLAB学习-Gard-CAM可视化方法_第6张图片

mmcls任务中使用

配置参数

MMLAB学习-Gard-CAM可视化方法_第7张图片配置完参数就可以直接运行看结果
MMLAB学习-Gard-CAM可视化方法_第8张图片
蓝色表示关注点比较少,偏红色表示关注点比较大

总结

一般在模型训练结束可以用GARD-CAM的方法查看我们的模型在训练过程中关注点是否正确,也可以查看模型中不同层数的关注点,但一般只关注最后一层。
原论文:Grad-CAM: Visual Explanations from Deep Networks
via Gradient-based Localization

你可能感兴趣的:(#,MMLAB,深度学习,人工智能)