CAM
CAM
Learning Deep Features for Discriminative Localization, CVPR2016
贡献:
- 奠定了可解释分析、显著性分析的基石
- 同一张图像,根据不同类别绘制不同的热力图
-
潜在的注意力机制
-
弱监督学习 (图像分类模型 -> 完成定位)
1. 引言和相关工作
- 卷积神经网络中卷积单元充当目标检测器。但使用全连接层分类时,这种显著定位物体的能力丧失。
- NIN 提出了 GAP (全局平均池化), 其优势不仅体现在正则化,更关键的在于,它能保持网络的定位能力到最后一层。
- GAM 可用于弱监督目标定位。
两篇多实例学习弱监督目标定位
“R. G. Cinbis, J. Verbeek, and C. Schmid. Weakly supervised object localization with multi-fold multiple instance learning. IEEE Trans. on Pattern Analysis and Machine Intelligence, 2015. 1, 2”
“P. O. Pinheiro and R. Collobert. From image-level to pixellevel labeling with convolutional networks. 2015. 1, 2”
2. Class Activation Mapping 类激活映射
分析:
- 类别 c 的线性分类 l o g i t logit logit 分数:
S c = ∑ k ω k c ∑ x , y f k ( x , y ) = ∑ x , y ∑ k ω k c f k ( x , y ) S_c = \sum_k \omega_k^c \sum_{x,y} f_k(x,y) = \sum_{x,y}\sum_k \omega_k^c f_k(x,y) Sc=k∑ωkcx,y∑fk(x,y)=x,y∑k∑ωkcfk(x,y)
其中, f k ( x , y ) f_k(x,y) fk(x,y) 表示最后一层卷积层的单元 k 在空间网格 ( x , y ) (x,y) (x,y) 处的激活。之后,对单元 k ,经过GAP全局平均池化得到 F k = ∑ x , y f k ( x , y ) F_k = \sum_{x,y} f_k(x,y) Fk=∑x,yfk(x,y)。对于类别 c ,输入经过 s o f t m a x softmax softmax, w k c w_k^c wkc表明类别 c 对单元 k 重要性的权重。
- 类别 c 的类别概率映射 M c M_c Mc:
M c ( x , y ) = ∑ k ω k c f k ( x , y ) M_c(x,y) = \sum_k \omega_k^c f_k(x,y) Mc(x,y)=k∑ωkcfk(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) 的通道 (channel) 代表了一个卷积核从图像中提取出的一类视觉特征。 w c w_c wc 权重间接反映了该特征对类别 c 的重要程度。接着通过上采样,将 14x14 的特征图缩放到原输入图像尺寸。
GAP vs GMP:
- average:关键区域范围内的特征都有影响
- max : 非最大值的特征怎么变化都没用(无梯度)
分类性能接近, 定位性能不同
讨论:
- 全卷积神经网络?为什么不用池化?
池化(Max、Mean)作用:- 减少计算量
- 防止过拟合
- 平移不变性
池化(下采样)引入了平移不变性,也意味着丢失了长宽方向的位置信息。因此,在CAM热力图中,不使用带池化的卷积神经网络。
- 全局平局池化(GAP)?
全局平均池化(GAP) 取代了全连接层,减少了参数量、防止过拟合。
而且每个GAP平均值,间接代表了卷积层最后一层输出的每个channel。
CAM算法中,必须有GAP层,否则无法计算每个channel的权重。[缺点]
[注] NIN 中提出了 GAP、1x1卷积。
3. 实验:Localization (定位竞赛)
Localization :定位竞赛,图像中有一个物体需要分类 + 画一个框。
方法:用 GAP 代替全连接层 ⟶ \longrightarrow ⟶ 重新训练模型
下采样次数越少, 最后一层卷积层输出的 feature map 越大, 空间信息丢失越少,定位性能越好。
4. CAM算法缺点:
- 必须有GAP层,否则得修改模型结构后重新训练
- 只能分析最后一层卷积层输出,无法分析中间层
改进工作:
Grad-CAM
- 不需要GAP层
- 可以分析中间层
SqueezeNet(轻量化网络)
最后一层卷积层直接输出对于类别数的channel数特征图
5. 显著性分析的意义
1.工业应用
- machine learning
- 解决工业中的问题: 如参数设置
- machine teaching
- 通过可视化,告诉人们需要关注的位置,教会人们学习
- AI 教学
论文:Making a Bird AI Expert Work for You and Me
教会人们利用图像的不同种类的鸟的哪些特征去区分不同的鸟