网站首页 > 资源文章 正文
全文共2280字,预计学习时长4分钟
目前在可视化方面,我们已经掌握了许多不同的技术。本文将介绍在卷积神经网络(CNN)中,针对图像的某些部位可视化从而做出判断的不同技术。
类激活映射(CAM)是一种生成热力图的技术,用于突出图像的类的特定区域。
热力图效用
下面是一个典型的热力图:
这张图片中,一只猫被红色高亮显示为“猫”类,表示网络在进行分类判断时正在查看正确位置。
视觉化神经网络正在查看的位置大有用处,因为它帮助我们理解神经网络是否在查看图像的适当部位,或者神经网络是否在进行误导。下列是一些神经网络在做分类决判断时可能进行误导和错误查看位置的例子:
· 卷积神经网络将一张图片分类为“火车”,而实际上它是在寻找“火车轨道”(这意味着它会错误地将一张火车轨道图片单独分类为“火车”)。
· 卷积神经网络将x光胸片分类为“高患病几率”,依据的不是疾病的实际表现,而是放在病人左肩上的金属“L”标记。重点是,这个“L”标记只有在病人躺下的时候才会被直接放在病人的身体上,而病人也只有虚弱到无法忍受才会躺下接受x光检查。
参考:Zech et al. 2018,Confounding variables can degradegeneralization performance of radiological deep learning models.
传送门:https://arxiv.org/pdf/1807.00431.pdf
· CNN可根据数据集中五分之一的马图像中出现的左下角源标记将该图像分类为“马”。但如果将这个“马的源标记”放在一幅汽车图像上,那么网络仍将该图像分类为“马”。
参考:Lapuschkin et al. 2019, Unmasking Clever Hans Predictors and Assessing What Machines Really Learn.
传送门:https://arxiv.org/pdf/1902.10178.pdf
相关论文集
这张图显示了有关卷积神经网络可视化热力图的几篇论文之间的关系。文章左上角可见这篇文章的关键——类激活映射(CAM):
以下是完整类激活映射论文的链接:Zhou et al. 2016 “Learning Deep Features for DiscriminativeLocalization.”
传送门:http://openaccess.thecvf.com/content_cvpr_2016/papers/Zhou_Learning_Deep_Features_CVPR_2016_paper.pdf
此处特别推荐查看图1和图2。
CAM:类激活映射
类激活映射结构
类激活映射背后的原理是利用一种特殊的卷积神经网络结构生成可视化热力图。
参考:this post for a review of convolutional neural networks
传送门:https://glassboxmedicine.com/2019/05/05/how-computers-see-intro-to-convolutional-neural-networks/
其结构如下:卷积层,全局池化层,然后是一个输出分类判断的全连接层。
在以上示意图中,可以看到一些通用的卷积层,形成了“倒数第二个卷积层”(即网络中倒数第二层,也是卷积层的最后一层)。在这个“倒数第二个卷积层”中存在K特征图。在这个示意图中,对于特征映射A1、A2和A3, K = 3。
但实际上K可以是任何值——例如,可能会有64个或512个特征映射。
根据文章中的标注,特征图高度为v和宽度为u:
文章传送门:https://pdfs.semanticscholar.org/223a/d42ec73c1a41355c0ca3626fa99c7841f840.pdf
全局池化层是通过对特征图中的数字求平均值,从而将特征图转换为单个数字。若有K=3个特征图,则在全局池化之后,我们将得到K=3个数字。这三个数字用上图中的三个小正方形表示:
以下是用于描述全局池化层的标注符号:
因此,在全局池化中,对特征图Aij的元素进行求和,从i =1到u(全宽),从j = 1到v(全高),然后除以特征图中的元素总数,Z = uv。
全连接层和分类数
在执行全局池化后,我们将得到K个数字。通过全连接层将这K个数字转换为分类判断:
请注意,为避免混淆绘图,图中并未显示全连接层中的每个权重。实际上,红色数字(由GAP(A1)输出)通过权重连接到每个输出类,绿色数字(由GAP(A2)输出)通过权重连接到每个输出类,蓝色数字(由GAP(A3)输出)通过权重连接到每个输出类。
参考:this post for review offully-connected layers.
传送门:https://glassboxmedicine.com/2019/01/17/introduction-to-neural-networks/
仅看“猫”输出类上,有三个权重,w1、w2和w3,这三个权重将全局池化输出连接到“猫”输出节点。使用上图所示的方程为"猫"类生成一个分数y^猫,对应于y^猫 = (w1)(红色)+ (w2)(绿色)+(w3)(蓝色)。
类激活映射
现在完成了整个类激活映射结构,从输入图像到分类数。最后一步是得到类激活映射可视化热力图,步骤如下:
这看起来很像计算y^猫分数的方法,但不同之处在于,我们不是将权重w1、w2和w3乘以特征图Ak上的全局池化层生成的单个数字,而是直接将权重乘以特征图。因此,虽然分数的输出是数字,但是类激活映射实际输出的是数字网格。而这个数字网格就是热力图!
总结
下面是一页草图,总结了整篇类激活映射论文:
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
猜你喜欢
- 2024-09-21 信号处理绕不过去的坎:相关与卷积
- 2024-09-21 PyTorch中傅立叶卷积:计算大核卷积的数学原理和代码实现
- 2024-09-21 C++学到什么程度可以面试工作(c++要学多久才能找到工作)
- 2024-09-21 C++学到什么程度可以面试工作?(c++学出来可以干什么工作)
- 2024-09-21 吴恩达深度学习笔记(72)-卷积网络的边缘检测
- 2024-09-21 卷积神经网络原理及其C++/Opencv实现(5)—参数更新
- 2024-09-21 复共轭像(共轭复信号)
- 2024-09-21 卷积的计算(卷积的计算过程)
- 2024-09-21 机器学习中的评价指标(机器学习线性回归模型评价指标)
本文暂时没有评论,来添加一个吧(●'◡'●)