CNN可视化技术总结(三)--类可视化

简介: 前面我们介绍了两种可视化方法,特征图可视化和卷积核可视化,这两种方法在论文中都比较常见,这两种更多的是用于分析模型在某一层学习到的东西。在理解这两种可视化方法,很容易理解图像是如何经过神经网络后得到识别分类。

 

   然而,上次我在知乎看到一个通过yolov3做跌倒检测,希望加上人脸识别进行多任务学习从而提高准确率的提问。这明显提问者并不理解神经网络是如何对这种带有时间维度的视频进行分析从而实现行为识别,从本质上来讲,这其实是不理解神经网络具体是如何识别一个类的。因此,当在这一点上理解错误后,所进行的模型选择、方案设计和改进,就都是不合理的。


   (我在知乎上回答了这个问题正确的跌倒检测思路应该是什么,感兴趣的可以去看看,我的知乎id是仿佛若有光)

 

   因此,在本文中,我们将介绍一种对于不同的类,如何知道模型根据哪些信息来识别的方法,即对类进行可视化,通俗一点来说就是热力图。这个方法主要是CAM系列,目前有CAM, Grad-CAM, Grad-CAM++。

 

CAM(Class Activation Map)

f9ff3e3b5e58d0be14ec371520ff1f41.png

如上图所示,CAM的结构由CNN特征提取网络,全局平均池化GAP,全连接层和Softmax组成。

 

实现原理:一张图片在经过CNN特征提取网络后得到feature maps, 再对每一个feature map进行全局平均池化,变成一维向量,再经过全连接层与softmax得到类的概率。

 

假定在GAP前是n个通道,则经过GAP后得到的是一个长度为1x n的向量,假定类别数为m,则全连接层的权值为一个n x m的张量。(注:这里先忽视batch-size)

 

对于某一个类别C, 现在想要可视化这个模型对于识别类别C,原图像的哪些区域起主要作用,换句话说模型是根据哪些信息得到该图像就是类别C。

 

做法是取出全连接层中得到类别C的概率的那一维权值,用W表示,即上图的下半部分。然后对GAP前的feature map进行加权求和,由于此时feature map不是原图像大小,在加权求和后还需要进行上采样,即可得到Class Activation Map。

 

用公式表示如下:(k表示通道,c表示类别,fk(x,y)表示feature map)


 09333567f300e0b1c4d63da2c88835ed.png

效果图:

f3486f541043d602863b30355a13eec0.png

CAM的分析


CAM有个很致命的缺陷,它的结构是由CNN + GAP + FC + Softmax组成,也就是说如果想要可视化某个现有的模型,但大部分现有的模型没有GAP这个操作,此时想要可视化便需要修改原模型结构,并重新训练,相当麻烦,且如果模型很大,在修改后重新训练不一定能达到原效果,可视化也就没有意义了。


因此,针对这个缺陷,其后续有了改进版Grad-CAM。

 

Grad-CAM

 

Grad-CAM的最大特点就是不再需要修改现有的模型结构了,也不需要重新训练了,直接在原模型上即可可视化。

 

原理:同样是处理CNN特征提取网络的最后一层feature maps。Grad-CAM对于想要可视化的类别C,使最后输出的类别C的概率值通过反向传播到最后一层feature maps,得到类别C对该feature maps的每个像素的梯度值,对每个像素的梯度值取全局平均池化,即可得到对feature maps的加权系数alpha,论文中提到这样获取的加权系数跟CAM中的系数几乎是等价的。接下来对特征图加权求和,使用ReLU进行修正,再进行上采样。

 

使用ReLU的原因是对于那些负值,可认为与识别类别C无关,这些负值可能是与其他类别有关,而正值才是对识别C有正面影响的。

 

用公式表示如下:


072e89ed53efc0b741ba08e46ad71b60.png

d7ddec11140ca356b69eb15dea259b9e.png

Grad-CAM的结构图如上图所示,对于Guided Backpropagation不了解的读者,可看CNN可视化技术总结的第一篇文章。


效果图如下:


ab04bf47b6559844485b63f917cc2251.png

Grad-CAM后续还有改进版Grad-CAM++,其主要的改进效果是定位更准确,更适合同类多目标的情况,所谓同类多目标是指一张图像中对于某个类出现多个目标,例如七八个人。


改进方法是对加权系数的获取提出新的方法,该方法复杂到不忍直视。因此这里就不介绍了,感兴趣的读者可通过文章末尾的链接获取该论文。


 下一篇将对所有的一些可视化工具进行总结。内容将放在CV技术总结部分。


CAM:  https://arxiv.org/pdf/1512.04150.pdf


Grad-CAM:  https://arxiv.org/pdf/1610.02391v1.pdf


Grad-CAM++:  https://arxiv.org/pdf/1710.11063.pdf



相关文章
|
3月前
|
机器学习/深度学习 算法 TensorFlow
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
65 0
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
|
2月前
|
机器学习/深度学习 自然语言处理 大数据
深度学习中的卷积神经网络优化技术探析
【2月更文挑战第4天】在深度学习领域,卷积神经网络(CNN)一直扮演着重要角色,但其训练和推理过程中存在许多挑战。本文将从优化角度出发,探讨卷积神经网络中的权重初始化、损失函数设计、学习率调整等优化技术,旨在为深度学习爱好者提供一些实用的技术感悟和分享。
23 3
|
9月前
|
机器学习/深度学习 编解码 数据可视化
【计算机视觉】CNN 可视化算法 CAM & Grad-CAM
CAM 算法是论文《Learning Deep Features for Discriminative Localization》中提出的,作者发现 CNN 网络虽然在训练时可能未提供对象的位置,但是仍然具有很强的定位特征能力。 《Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization》论文提出的 Grad-CAM 算法,Grad-CAM 利用网络反向传播的梯度计算出 feature map 每一个通道的权重从而得到热力图。因此 Grad-CAM 可以直接用于各种 CNN 网络而无需重新训
|
10月前
|
机器学习/深度学习 数据可视化 网络架构
CAM, Grad-CAM, Grad-CAM++可视化CNN方式的代码实现和对比
当使用神经网络时,我们可以通过它的准确性来评估模型的性能,但是当涉及到计算机视觉问题时,不仅要有最好的准确性,还要有可解释性和对哪些特征/数据点有助于做出决策的理解。模型专注于正确的特征比模型的准确性更重要。
176 0
|
10月前
|
机器学习/深度学习 人工智能 数据可视化
人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模
人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模
人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模
|
机器学习/深度学习 存储 数据可视化
可视化CNN和特征图
卷积神经网络(cnn)是一种神经网络,通常用于图像分类、目标检测和其他计算机视觉任务。CNN的关键组件之一是特征图,它是通过对图像应用卷积滤波器生成的输入图像的表示。
131 0
可视化CNN和特征图
|
机器学习/深度学习 数据可视化 算法框架/工具
【深度学习系列】CNN模型的可视化
【深度学习系列】CNN模型的可视化
146 0
【深度学习系列】CNN模型的可视化
|
机器学习/深度学习 数据可视化 PyTorch
|
机器学习/深度学习 数据可视化 PyTorch
使用Pytorch和Matplotlib可视化卷积神经网络的特征(下)
使用Pytorch和Matplotlib可视化卷积神经网络的特征
286 0
使用Pytorch和Matplotlib可视化卷积神经网络的特征(下)

热门文章

最新文章