原理
class activation maps (CAM) (Zhou et al. 2016)
那么什么是类激活映射呢?CAM是一个帮助我们可视化CNN的工具。使用CAM,我们可以清楚的观察到,网络关注图片的哪块区域。比如,我们的网络识别出这两幅图片,一个是在刷牙,一个是在砍树。
计算过程:
热力图:W1*蓝色层+W2*红色层+…+Wn*绿色层=类激活映射(CAM),所以说CAM是一个加权线性和。
可以看到,可视化过程是去掉GAP(全局平均池化)的,直接将线性层和特征图相乘
cam_based_sampling具体过程
图1
step1 得到feature_map
step2 feature_map * 当前类别的W = 类激活图 如图1
step3 mean*3/4取激活区域
step4 随机选择数据增强-0:随机旋转和缩放 -1:随机平移 -2:翻转
step5 增强流程 如图2
图2
CAM具体实现
参考:
https://github.com/zhangyongshun/BagofTricks-LT/blob/main/documents/trick_gallery.md
https://github.com/zhangyongshun/BagofTricks-LT/blob/main/lib/net/network.py#L192
https://github.com/zhangyongshun/BagofTricks-LT/blob/main/lib/utils/cam_based_sampling.py
mmpretrain实现,评论区见