CAM是把“黑盒”深度学习变成“白盒”的工具 股票金融界

股票资讯

众所周知,深度学习是一个“黑箱”系统。人只知道投入产出,不知道中间过程。但是如果你不知道一些东西,你就不能改善它。所以就有了“深度学习可解释性”这个领域。CAM(类激活映射)技术就是其中之一,它利用特征可视化来探索深度卷积神经网络的工作机制和判断依据。

所以在CNN的测试阶段,通常用CAM(类激活映射)来判断网络训练好不好,是否可以信任。

什么是CAM?

CAM的全称是类激活映射(Class Activation Mapping),又称类激活映射、类热图、意义图等。它是一张与原图片大小相同的图片,图片中每个位置的像素值在0到1之间,一般用0到255的灰度来表示。可以理解为对预测产出的贡献分布。分数越高,原图对应区域对网络的响应和贡献就越高。

为了更直观的表达,通常将灰度图像转换成彩色图像。例如,您可以使用Opencv函数来转换:

Img _ color = cv2。apply colorp(img _ gray,cv2。colormap _ jet) #将灰色图像转换为伪彩色图像,

# COLORMAP_JET是输出颜色模式

可视化可以以热图和原始图叠加的形式呈现。如下图,颜色越深,数值越大。可以认为,网络预测“狗”的类别时,红色高亮区是主要的判断依据。

a .原图B. CAM灰度图像C. CAM彩色热图d .原图+CAM热图叠加

CAM有什么用?

CAM主要有以下功能:

有助于理解和分析神经网络的工作原理和决策过程,进而更好地选择或设计网络。比如对于分类网络,如果参考CAM相当于分类精度,那么对网络提出了更高的要求:不仅预测精度高,而且网络需要提取我们需要的特征。从下图可以看出,对于相同的数据,不同的网络在CAM上有明显的差异。当然,即使在同一个网络中,不同的训练过程也会导致CAM的巨大差异。

a .原始图片B. Resnet50预测结果C. Resnet34预测结果

利用视觉信息引导网络更好的学习,比如CAM信息可以通过“擦除”或“切割”来增强数据;使用CAM作为原始种子,进行弱监督语义分割或弱监督定位。由于CAM可以覆盖目标对象,语义分割或目标检测只能通过分类标注来完成,大大减少了标注的工作量,但这对于CAM的要求更高。通常,分类网络只提取最有区别的特征。因此,有很多方法可以提高分类网络的CAM精度,如下图所示。

插图来自:告诉我去哪里找:引导注意力影响网络

怎么得到CAM?

卷积神经网络的卷积运算可以看作是通过滤波器对图片进行特征提取,这是通过滑动窗口实现的,因此特征层与输入图片之间存在空间对应关系。上图是一层特征图,经过层层卷积核滤波后可以认为是保留的有效信息。值越大,特征越有效,对网络预测结果越重要。深度卷积神经网络通过逐层卷积运算提取空间和语义信息。一般还有其他更难理解的层,比如分类的全连通层,softmax层等。,并且很难直观地显示它们。因此,CAM的提取通常发生在卷积层,尤其是最后一个卷积层。通常每个图层的要素图中有很多图层,一般称为通道。例如,Resnet18最后一层的要素图有512个通道。这512个通道可以认为是提取了不同的特征,具有高度的抽象性,每个通道对最终结果的贡献不同,因此很难理解单独可视化每个通道得到的热图。所以,一般来说,CAM的获取就是根据每个通道的贡献不同,融合获取一个CAM。因此,获取CAM的步骤总结如下:

第一步:提取待可视化的要素图层;第二步:获取张量各通道的权重,即长度为512的向量;第三步:通过线性融合将张量加权求和到通道维度中,得到映射;尺寸为7 * 7;第四步:对地图进行归一化处理,通过插值将地图大小调整到原来的大小;与目标检测领域的锚基和无锚相似,CAM有两个不同的阵营:基于梯度的和无梯度的。不同的方法本质上是相似的:提取目标特征层,进行加权融合,得到激活图(CAM)。主要区别在于上述步骤2中描述的特征层之间融合权重的选择。基于梯度的使用梯度获得权重,而无梯度不需要梯度信息。

“说话便宜。给我看看代码.本文还对核心代码的实现进行了说明。参考代码链接:https://pypi.org/project/torch-cam/

计算机辅助制造中存在的问题

首先,我们来看看CAM中存在的问题:

对于前景类别,CAM通常只覆盖最有区别的部分,导致一些重要区域缺失。对于背景,CAM经常盖错,或者解释没那么强;封面边缘不够准确,当然这是因为可视化的特征图比原始图像尺寸小很多,分类网络一般是32倍下采样,插值到原始图像尺寸边缘肯定不清晰;有时候CAM覆盖不了我们真正想要的特性。比如我们分类“船舶”时,CAM会覆盖到“水面”;因为“水面”通常和“船”一起存在。CAM被认为是指示网络真正看到的地方,也是最有特色和依据的。但是在实际应用的过程中,我们发现现实并没有那么美好。因为我们用的是损耗梯度下降法更新网络,所以是损耗直接负责,不是CAM。侧写反映出网络看到的并不是我们想要的。所以我们自然会想,能不能用一些手段来提高CAM的质量?CAM质量提高了,当然网络提取特征的能力也会提高,泛化能力自然不是问题。方法之一——擦除、去除有用信息,提高网络提取特征的能力。擦除方法

擦除是指去除一些有用的、有区别的信息,希望网络能够依靠剩余的信息做出准确的预测,从而自然提高网络提取更全面特征的能力,相应的CAM也会更准确。

简单划分和擦除包括两种类型:

抹掉原图,抹掉特征图,再细分一点:

直接在原始图像上擦除通常是按照一定的规则随机进行的,常用于数据增强。通过使用网络预测的信息来擦除类似于注意力机制的反向使用。比如网络输入是原图,训练时用实时CAM擦除,然后进行损耗计算。这种训练-擦除-再训练-再擦除的方法通常称为反擦除。比如CAM直接作为掩膜作用在特征图上,等等。类脱落策略,按照一定规则随机擦除特征图,通常不使用网络预测信息,是一种正则化方法。下面是程序员的观察,每天一点

更多内容请关注~


以上就是CAM是把“黑盒”深度学习变成“白盒”的工具股票金融界的全部内容了,喜欢我们网站的可以继续关注永强股票网其他的资讯!