工具使用-可视化神器Netron,plot_model,kerasCAM,Grad-CAM可视化原理

神经网络可视化困难?不知道网络内部进行的操作?

介绍几个可视化工具和方法

文章目录

  • 工具使用-可视化神器Netron
  • 画出模型结构图
  • CAM可视化
    • CAM(Class Activation Mapping)
  • Grad-CAM
  • 参考文档

工具使用-可视化神器Netron

模型结构可视化神器——Netron(支持tf, caffe, keras,mxnet等多种框架)

gayhub链接
安装exe文件,将各种框架的文件路径添加进去即可。

画出模型结构图

参考我这篇博客keras plot_model 画出模型的结构图

类激活图

CAM可视化

CAM(Class Activation Mapping)

CAM借鉴了很著名的论文Network in Network(https://arxiv.org/abs/1312.4400)_中的思路,利用GAP(Global Average Pooling)替换掉了全连接层。可以把GAP视为一个特殊的average pool层,只不过其pool size和整个特征图一样大,其实说白了就是求每张特征图所有像素的均值。

GAP的优点在NIN的论文中说的很明确了:由于没有了全连接层,输入就不用固定大小了,因此可支持任意大小的输入;此外,引入GAP更充分的利用了空间信息,且没有了全连接层的各种参数,鲁棒性强,也不容易产生过拟合;还有很重要的一点是,在最后的 mlpconv层(也就是最后一层卷积层)强制生成了和目标类别数量一致的特征图,经过GAP以后再通过softmax层得到结果,这样做就给每个特征图赋予了很明确的意义,也就是categories confidence maps。如果你当时不理解这个categories confidence maps是个什么东西,结合CAM应该就能很快理解。

CAM的解释效果已经很不错了,但是它有一个致使伤,就是它要求修改原模型的结构,替换全连接层为GAP层,导致需要重新训练该模型,这大大限制了它的使用场景。如果模型已经上线了,或着训练的成本非常高,我们几乎是不可能为了它重新训练的。

Grad-CAM

CAM通过替换全连接层为GAP层,重新训练得到权重,而Grad-CAM另辟蹊径,用梯度的全局平均来计算权重。事实上,经过严格的数学推导,Grad-CAM与CAM计算出来的权重是等价的。

参考文档

参考1
参考2

参考3-grad-cam

你可能感兴趣的:(深度学习番外-tools,可视化,深度学习,神经网络)