CAM可解释性分析
一、CAM算法简介
论文: Learning Deep Features for Discriminative Localization
CAM算法简介:,展示指定类别在原图上重点关注的特征区域。并巧妙用图像分类实现弱监督定位。打破深度学习的黑箱子,让人工智能展示自己的“注意力”和“学到的特征”。
CAM算法的精妙之处
- 对深度学习实现可解释性分析、显著性分析
- 可扩展性强,后续衍生出各种基于CAM的算法
- 每张图片、每个类别,都能生成CAM热力图
- 弱监督定位:图像分类模型解决定位问题
- 潜在的“注意力机制
- 使得Machine Teaching成为可能
二、算法说明
1.算法步骤
- 输入原始图像
- 全卷积神经网络(无池化)
- 最后一层卷积层输出512个 feature map (channel) ,每一个 channel(矩阵)大小都是都是14*14。(其中蓝色层、红色层、绿色层都是14 *14的矩阵,一共512层)这512层对应卷积神经网络提取出来的512个特征
- 全局平均池化(GAP):将每一层的矩阵取平均值,得到一个512*1的向量,起到了全连接层的作用
- 线性分类层:对于n个类别,训练得到对应上一层的平均数的权重(权重的大小间接地反映出对于对应卷积层(对应特征)的关注程度)
- 将权重与平均数进行线性组合(相乘后相加),得到n个线性分类分数(logit),再进行softmax操作,则得到了n个概率(后验置信度、后验概率)
- 找到后验概率最大的top1、top3或者top5,得到图像分类的结果
2.算法巧妙之处
- 全局平均池化(GAP)操作的出现,可以利用权重间接反应出特定类别对于每一个 channel 的影响程度(贡献)
- 最后得到的是一个14*14的矩阵,利用双线性插值,可以将矩阵缩放回原图大小(分辨率低→高)
3.为什么不采取池化操作
(1)池化的作用
- 减少计算量(输入数据大小变小)
- 防止过拟合(将一个大图转化为一个小图,但是核心信息仍然保留在小图上)
- 平移不变性(对于图像进行平移操作后,网络接收到的信息不变)——不采取池化操作的关键所在
(2)不使用池化的原因
- 池化(下采样)引入了平移不变性
- 也意味着 丢失了长宽方向的位置信息
- 因此在CAM热力图中
- 不使用带有池化的卷积神经网络
4.常规全连接层与GAP比较
- 常规的全连接层:将所有的 channel 平铺合并为一个长向量,将这个长向量输入全连接层,耗费计算量、参数量爆炸
- GAP:减少参数量(512 *14 *14 → 512),防止过拟合
4.CAM算法的缺点
- 必须得有GAP层,否则得修改模型结构后重新训练(Grad-CAM可以改进)
- 只能分析最后一层卷积层输出,无法分析前面的、中间的层(Grad-CAM可以改进)
三、SqueezeNet算法
1.算法简介
- 最后一个卷积层输出1000个 channel,对应1000个类别的CAM图
- 对这1000个类别的CAM图做GAP,可以直接得到1000个 logit 分数,对应1000个概率。跳过了线性分类层
- 轻量化、速度快
四、研究意义
从 Machine Learning 到 Machine Teaching,通过AI学习特征,将特征展现给人类,帮助人类学习。