(一)实验记录:卷积神经网络可视化cam和grad-cam
一、CAM
以resnet18为例:
(1)取出通过layer4的feature**值,[1,512,7,7]
(2)取出fc的权重(weight_softmax),[1000,512]
(3)取出weight_softmax中预测为对应类别的权重,[1,512]
(4)权重和feature相乘得热力图cam,[1,512]*[512,49]=[1,49]
(5)再通过归一化,resize操作覆盖到原图上。
二、grad-CAM
cam和grad-cam都是为了得到一组权重和feature相乘。cam需要修改模型(添加全局平均池化层)重新训练,而grad-cam是通过反向传播时hook的梯度来计算权重。
以vgg19为例子:vgg19模型分为两大块,features,classifier。
(1)从feature模块取出feature**值,即第35层后的,[1,512,14,14]
打印模型名:https://blog.****.net/m0_37192554/article/details/104003947
(2)通过整个模型输出中最大的那个值进行backward
(3)抓取第35层feature**值的梯度,[1,512,14,14]
(4)通过抓取的梯度计算权重,和feature相乘,计算cam热力图。
(5)归一化后resize