LayerCAM Exploring Hierarchical Class Activation Maps for Localization 论文阅读笔记

LayerCAM Exploring Hierarchical Class Activation Maps for Localization

期刊:IEEE Transactions on Image Processing(Tip)

时间:2021年

本文针对现有类激活图的方法如CAM、Grad-CAM、Grad-CAM++等方法构建的类激活热力图不够精确的问题,提出一个全新的算法LayerCAM。它可以为 CNN 的不同层生成可靠的类激活图。这个属性使LayerCAM能够收集到对象定位信息从粗略(粗略的空间定位)到精细(精确的细粒度细节)级别,并可以进一步将它们整合成一个高质量的类激活图,可以更好地突出与对象相关的像素。

1.Introduction

最近, 学界已经提出了很多注意力方法来利用基于 CNN 的图像分类器来生成类激活图。这些图能够定位目标物体的区域,其中具有高数值的像素更有可能属于到目标对象。由于图像级标签只告诉目标对象是否存在,它们不提供任何对象位置信息。因此,类激活图的定位能力可以很好地弥补这样一个图像级标签的问题,这进一步促进了图像级监督下的不适定弱监督任务和弱监督目标定位任务。

现有CAM系列的方法都依赖于最终的卷积层来生成类激活图。但由于最终卷积层输出的空间分辨率非常低,生成的类激活图只能定位粗略对象区域。比如下图所示:
在这里插入图片描述
Grad-CAM从第5层生成的类激活图只能定位马大致的位置,缺乏获得马的精细细节的能力,例如马腿等部位。然而,弱监督任务,如语义分割,通常需要更准确的对象定位信息。来自最终卷积层的类激活映射仅提供粗略的定位信息弱限制了性能上限监督任务。因此,我们希望获得更细粒度的对象位置来帮助更好地定位目标对象。

由于底部卷积层的输出往往有更大的空间分辨率,它们对细粒度的细节更敏感。因此,本文尝试将现有的注意力方法应用于它们以生成细粒度的定位信息,如图1 conv3_3生成的类激活图所示。可以看出,虽然图像中能够捕获大量细粒度特征,但同时也引入了过多噪声信息。具体原因将在3.1节中进行分析。

为解决上述问题,使得在浅层生成可靠的类激活图获得更准确的细粒度目标定位信息,本文提出LayerCAM方法,具体来说,LayerCAM重新思考了特征图之间的关系以及它们对应的梯度。与之前的注意力方法只考虑每个特征图的全局信息不同,LayerCAM利用梯度来突出显示特征图中每个位置对感兴趣的类别的不同重要性。通过这样的操作,可以有效保留目标物体的细粒度细节,同时去除背景中的细节。本文的主要贡献如下:

  • LayerCAM 不仅可以从最终的卷积层生成可靠的类激活图,还可以从浅层生成可靠的类激活图,进而获得粗略的空间位置和细粒度的对象细节。
  • 来自不同层的类激活图通常是互补的。这一优势促使LayerCAM将它们结合起来以生成更精确和完整的特定于类的对象区域,这将显着有益于弱监督任务。
  • LayerCAM 易于应用于现成的基于 CNN 的图像分类器,无需修改网络架构和反向传播方式, 使其更通用且使用方便。

类激活图还可用于目标定位与伪标签生成任务(语义分割),如下图所示:
在这里插入图片描述

2.Related Work

主要从Attention Methods(注意力方法)、Hierarchical semantics(分层语义)、Weakly-supervised object localization(弱监督目标定位)、Weakly-supervised semantic segmentation(弱监督语义分割)和Surface Defect Localization(表面缺陷定位)。

3.Methodology

3.1 Grad-CAM和Grad-CAM++

本节先对上述两种算法进行简要回顾,虽然前面已经记录了,但为了完整度和便于查阅,这里就先加上。 f f f表示图像分类器, θ \theta θ表示网络的参数。对于给定图像 I I I,将其输入到分类器中,可以通过下式获得目标类别 c c c的预测分数 y c y^c yc:

y c = f c ( I , θ ) y^c=f^c(I,\theta) yc=fc(I,θ)

A A A为CNN中最后卷积层的输出特征图, A k A_k Ak表示A中第k个特征图。预测得分 y c y^c yc相对于特征图 A k A_k Ak中 空间位置 (i, j) 的梯度可以通过 g i j k c = ∂ y c ∂ A i j k g_{ij}^{kc}=\frac{\partial y^c}{\partial A_{ij}^k} gijkc=Aijkyc获得。要生成目标类别 c c c的类激活图,Grad-CAM 和 GradCAM++ 为每个特征图分配一个 channel-wise 权重 w k w_k wk,然后对特征A中的所有特征图进行线性加权求和。最后,应用 ReLU 操作从类激活图中去除负面响应,公式为:

M c = ReLU ( ∑ k w k c ⋅ A k ) M^c=\text{ReLU}\left(\sum_kw_k^c\cdot A_k\right) Mc=ReLU(kwkcAk)

Grad-CAM 通过对特征图 A k A_k Ak中所有位置的梯 度求平均值来获得通道级别参数 w k c w_k^c wkc,表示为:

w k c = 1 N ∑ i ∑ j g i j k c w_k^c=\frac{1}{N}\sum_i\sum_jg_{ij}^{kc} wkc=N1ijgijkc

其中 N 代表特征图 A k A_k Ak中像素的数量。对于GradCAM++, 通道级别参数 w k c w_k^c wkc可以通过计算下式获得:

w k c = ∑ i ∑ j α i j k c ⋅ r e l u ( g i j k c ) w_k^c=\sum_i\sum_j\alpha_{ij}^{kc}\cdot relu(g_{ij}^{kc}) wkc=ijαijkcrelu(gijkc)

其中 α i j k c \alpha_{ij}^{kc} αijkc由下式得到:

α i j k c = ( g i j k c ) 2 2 ( g i j k c ) 2 + ∑ a ∑ b A a b k ( g i j k c ) 3 \alpha_{ij}^{kc}=\frac{\left(g_{ij}^{kc}\right)^2}{2\left(g_{ij}^{kc}\right)^2+\sum_a\sum_bA_{ab}^k(g_{ij}^{kc})^3} αijkc=2(gijkc)2+abAabk(gijkc)3(gijkc)2

其中 (a, b) 代表 A k A_k Ak中的空间地点。Grad-CAM 和 Grad-CAM++ 的区别在于后者利用特征图和梯度来生成通道级别参数。Grad-CAM++ 在出现多个对象实例时表现出更好的对象定位能力。但是这两种方法定位的对象区域通常很小而且很粗糙。

在构建类激活图时,我们希望能够得到更多细粒度信息,以更好地定位目标对象。众所周知,CNN 的浅层具有更大的空间分辨率, 这使得它们能够捕获目标对象的更细粒度的细节。 因此,获得细粒度对象细节的自然想法是将 GradCAM 或 Grad-CAM++ 应用于浅层。然而,根据本文的实验,由 Grad-CAM 或 Grad-CAM++ 生成的来自浅层的类激活图通常包含许多错误噪声信息,如图1所示。下面将分析GradCAM和Grad-CAM++无法为浅层生成可靠的类激活图的原因。

分析:

Grad-CAM 和 Grad-CAM++ 都为第k个特征图 A k c A_k^c Akc分配全局权重 w k c w_k^c wkc,其中 A k c A_k^c Akc的每个位置具有相同的权重 w k c w_k^c wkc。然而从下图(c)中可以发现,浅层中的特征图倾向于捕获细粒度的细节,无论它们属于目标对象还是背景。
在这里插入图片描述
因此,全局权重不能消除背景中的噪声区域,这使得生成的类激活图无法准确定位目标对象。

此外,本文还对全局权重是否可以代表一个特征图中每个位置的重要性进行了数值分析。对于 GradCAM,计算梯度 g k c g^{kc} gkc的方差,其中方差表示每个位置的梯度与平均梯度 w k c w_k^c wkc的差异。对于GradCAM++,计算 α k c ⋅ r e l u ( g k c ) \alpha^{kc}\cdot relu(g^{kc}) αkcrelu(gkc)的第 k 个特征图的方差。从VGG16中选择每个阶段的最后一个卷积层,观察方差的分布,如上图(a)(b)所示。可以看到,在最后阶段,大多数特征图对应的方差趋于零。这表明特征图中每个空间位置的权重大约等于全局权重。因此在最后阶段,Grad-CAM和Grad-CAM++ 使用的全局权重可以表示特征图中每个空间位置的重要性。然而,在浅层大多数特征图对应的方差非常大。全局权重不能代表特征图中不同位置在目标类别上的重要性。因此,Grad-CAM和Grad-CAM++无法为浅层生成可靠的类激活图。(虽然Grad-CAM++也是对像素级别进行计算,但由于其最后还是计算每个特征图的全局权重,因此效果较差,这也是Grad-CAM++与LayerCAM最大的区别)

3.2. LayerCAM

基于上述分析,本文提出LayerCAM,它能以非常简单有效的方式为所有层收集可靠的类激活图。具体来说,为了为特征图中的每个空间位置生成单独的权重,本文利用后向特定于类的梯度。

正如Grad-CAM++中的经验验证,与特征图中**某个位置对应的正梯度表明增加该位置的强度将对目标类别的预测分数产生积极影响。**对于具有正梯度的位置,使用它们的梯度作为权重,而那些具有负梯度的位置的权重分配为0。

形式上,第k个特征图中空间位置 (i, j) 的权重可以写为:

w i j k c = r e l u ( g i j k c ) w_{ij}^{kc}=relu(g_{ij}^{kc}) wijkc=relu(gijkc)

为了获得某一层的类激活图,LayerCAM 首先将特征图中每个位置的激活值乘以一个权重:

A ^ i j k = w i j k c ⋅ A i j k \hat{A}_{ij}^k=w_{ij}^{kc}\cdot A_{ij}^k A^ijk=wijkcAijk

最后将结果 A ^ k \hat{A}_k A^k沿通道维度线性组合,得到类激活图,公式如下:

M c = ReLU ( ∑ k A ^ k ) M^c=\text{ReLU}\left(\sum_k\hat{A}^k\right) Mc=ReLU(kA^k)

基于上述操作,从浅层生成的类激活图可以捕获可靠的细粒度对象定位信息,如下图所示:
在这里插入图片描述
本文认为这主要得益于不仅考虑了不同通道(特征图)的重要性,而且还考虑了不同空间位置的重要性。每个位置的单独权重可以反映不同位置在与目标类别相关的特征图中的重要性。后续实验部分进行更多的定性和定量分析。

总体来说,我认为本文最主要的创新点或起作用的原理是:本身已训练后的网络在测试某张识别为指定类别的图像时,根据特征图自身就可以反应网络更关注于哪些部分。例如识别一个人的时候,最后几个卷积核可能更注重识别人的头部或四肢,因此权重就比较大。但由于浅层卷积核更关注一些线条等基础信息,因此在提取特征时也会将周围或背景的线条同时提取出来(因为一个卷积核只能固定识别某一类信息,假设只识别横线,当目标物体和背景都存在横线时,网络会将其一起识别出来),使得构建的显著图虽然是细粒度的,但是有很多噪声信息,比如图1所示。
而这里加入梯度类似于引入一个额外的引导,使得即使是浅层的卷积核,也要考虑不同位置的横线是否是我们想要,如果不是对优化目标函数起到正向作用的像素(如背景噪声)其梯度应该是负值。因此这种方法得到的浅层网络的结果会同时兼顾准确率和细粒度。

4. Experiments

4.1 Weakly-supervised Object Localization

本实验旨在为最高预测类别定位对象边界框。本实验在具有 50000 张图像的 ILSVRC 验证集上评估LayerCAM方法的定位能力。定位精度由 loc1 和 loc5 指标衡量。其中,loc1 度量表示如果估计的边界框和真实边界框之间的交集 (IoU)大于或等于 0.5,同时 top1 预测类是正确的, 则估计结果属于正确的类别类是正确的。loc5 指标则前 5 个预测类别正确的即可。

实现细节:

本文选择显著图中强度前15%的位置构建box(和CAM、Grad-CAM方法相同),并选择 VGG-16 中不同阶段的最后一个卷积层生成类激活图。对于LayerCAM的conv1_2和conv2_2层生成的类激活图,关注值往往会分布在目标对象周围,因此这里与[1]文章相同,使用GraphCut[2]生成连接的分割。此外,当组合来自不同层的类激活图时,来自 VGG16 前三个阶段的类激活图需要通过下式进行缩放。
在这里插入图片描述
上图展示了不同类激活图的定位能力,实验表明LayerCAM 可以从浅层获得更可靠的细粒度目标定位信息,而Grad-CAM和Grad-CAM++从浅层生成的类激活图无法从背景和其他类别中消除噪声区域,如下图所示。
在这里插入图片描述
而LayerCAM在空间维度上为每个位置分配单独权重,可以考虑对感兴趣的类别的不同重要性,这样可以在去除背景噪声的同时保持可靠的对象定位信息。

此外,本实验还展示了融合不同阶段的类激活图的定位性能。对于来自浅层的类激活图,激活值远低于来自深层的激活值。当不使用尺度函数时, 融合类激活图的性能不会得到提升,如下表所示。

在这里插入图片描述
因此,当组合来自不同层的类激活图时,首先需要通过缩放函数从浅层缩放类激活图,其中缩放图由下式计算:

M ^ c = tanh ⁡ ( γ ∗ M c max ⁡ ( M c ) ) \hat{M}^c=\tanh\left(\frac{\gamma*M^c}{\max(M^c)}\right) M^c=tanh(max(Mc)γMc)

其中 γ \gamma γ为缩放因子。这里直观理解就是先将每个位置的像素缩放到0-1之间,之后通过缩放因子使其差距扩大,最后通过 tanh ⁡ \tanh tanh让过大的值保持为1,实际上还是起到一个缩放的作用。从表三可以看出,当 γ \gamma γ为2时,LayerCAM取得了最好的定位结果。

在表4中,本文探讨了不同种类的尺度函数的影响。可以看到当使用 x 2 \sqrt[2]{x} 2x 缩放函数时,性能变得更糟。这是因为 x 2 \sqrt[2]{x} 2x 尺度函数将接近 0 的值放大太多,从而增强了噪声强度。例如,0.01 缩放到 0.1。当使用 t a n ( x ) tan(x) tan(x)时性能也会变得更糟。 t a n ( x ) tan(x) tan(x)函数将1附近的大值缩放很多,这将抑制归一化后较低值的放大。可以看出,当使用 tanh ⁡ ( x ) \tanh(x) tanh(x)尺度函数时,可以获得更好的融合结果。

如表2所示,来自不同层的类激活图的组合可以逐渐提高定位性能。然而,本文还观察到,当逐渐融合来自浅层的类激活图时,性能增益变得非常小。 本文认为融合地图的定位性能是有限的,因为边界框仅指示一般对象位置,无法测量物体的细粒度细节;例如,如果找到马的耳朵,则边界框不会有太大变化。在第4.4节中,当融合来自浅层的类激活图时,分割结果逐渐增加,例如第3阶段的类激活图, 这也可以验证融合图的质量。
在这里插入图片描述
此外,在表5中还展示了不同方法之间定位性能的比较。最右边两列的 attention 方法都是基于原来的 VGG16 模型。最左边的三种定位方法都采用 VGG16 架构,用全局平均池化层代替全连接层。与 c-MWP、CAM、Grad-CAM 和 GradCAM++ 相比, 可以看出LayerCAM将loc1 性能分别提高 了 18.16%、4.44%、3.62% 和 1.80%。同时,LayerCAM也取得了比一些专门为解决对象定位任务而设计的最先进的定位方法 ACoL [3] 和 ADL[4] 更好的结果。比较表明,LayerCAM的类激活图可以提供更可靠的对象定位信息。
在这里插入图片描述

4.2 Image Occlusion(图像遮挡)

对于 LayerCAM 从最终卷积层生成的类激活图,本文进行了图像遮挡实验,通过遮挡激活部分,查看准确率下降程度,以验证显著图指示的置信区域的可靠性。

具体来说,在 ILSVRC 验证 集上,首先选择出被第4.1节中使用的 VGG16 正确预测的图像。对于这些真实预测的图像,用 0.7 的阈值遮挡它们,然后将它们输入到网络中。 如表6所示,分别展示了真实类别的 top-1 分 类准确率、top-5 分类准确率和平均预测分数。
在这里插入图片描述
表6展示了图像遮挡实验的性能。LayerCAM 实现了比Grad-CAM和 Grad-CAM++ 更低的分类精度,这表明由 LayerCAM 从最终卷积层生成 的类激活图可以为目标类别发现更重要的空间对象区域。

4.3 Industry Surface Defect Localization

对于从 CNN 浅层生成的类激活图,可以利用它们来定位工业图像中各种形状的微小缺陷。这里将此问题视为图像中存在或不存在缺陷的二元分类问题。 具体来说,使用图像级标签来训练基于 ResNet50 的分类器后,应用 LayerCAM 来定位工业图像中的缺陷。(也就是在一个分类网络中进行定位,但这里要求分类网络效果要好)

实现细节:

本实验在 DAGM-2007 缺陷数据集上进行,其中包含 3550 个训练图像和 400 个测试图像。

该数据集包含不同纹理表面上的多种类型的缺陷,如下图所示:
在这里插入图片描述
在表7中展示了不同方法之间的定量比较。实验结果表明,在抑制背景噪声的同时,本方法可以比 Grad-CAM 和 Grad-CAM++ 更准确地定位缺陷。此外,还展示了几种使用像素级标签训练的全监督方法SegNet[5]和 RefineNet[6]。与它们相比,LayerCAM实现了可比的性能,但速度大约是它们的两倍。

此外,在图7中还展示了不同方法之间的定性比较。与Grad-CAM和 Grad-CAM++ 相比,LayerCAM可以定位各种形状的缺陷,而 GradCAM 和 Grad-CAM++ 无法过滤背景上的干扰信息。

同时,下表还展示了不同层的定位精度。对于工业缺陷定位任务,layer3 的性能优于多层融合的性能。这是因为工业缺陷通常具有小尺寸和各种形状。
在这里插入图片描述
如图8所示,来自 layer4 的类激活图的低空间分辨率只能粗略地定位缺陷,这不利于特征融合。从 layer2 和 layer1 生成的类激活图定位带有一些噪声的小缺陷区域。因此,对于工业缺陷定位任务,我们仅利用来自 layer3 的类激活图而不是多层融合。
在这里插入图片描述

4.4 Weakly-supervised segmentation

为了进一步测试类激活图的质量,本实验将其应用于需要更多像素精确信息的弱监督语义分割任务,利用类激活图和超像素来生成伪分割标签。受[7]的启发,本文使用类激活图作为查询从超像素中收集对象掩码。通过平均每个超像素中的注意力值来计算类别 c 存在的概率(确定分类类别):

S c = ( 1 ∣ O ∣ ∑ j ∈ O M j c ) S_c=\left(\frac{1}{|O|}\sum_{j\in O}M_j^c\right) Sc= O1jOMjc

其中 O 表示超像素,M 是类激活图其值归一化到 [0, 1] 的范围内。然后在所有目标类别中选择概率最大的,将对应的类别分配给超像素中的所有像素。如果最大概率小于固定阈值(在实 中,阈值设置为 0.3),则将超像素中的像素分配给背景类别。 在为每个超像素分配语义类别后,利用它们构成伪分割标签来训练分割模型。

实现细节详见原文。

在表9中,显示本方法的性能优于 Grad-CAM 和 Grad-CAM++。此外,在表10中还探讨了不同阶段组合的类激活图时,PASCAL VOC 验 证集上的 mIoU 分数的比较。可以观察到,当连续将第 4、第 3 和第 2 阶段的类激活图与元素最大操作融合到第 5 阶段时,mIoU 分数逐渐增加(从 55.6% 到 60.8%)。这一事实验证了融合类激活图可以获得更多的对象定位信息,这有利于分割任务。
在这里插入图片描述
在这里插入图片描述

4.5 The influence of negative gradients

在计算每个位置像素的权重时 w i j k c = r e l u ( g i j k c ) w_{ij}^{kc}=relu(g_{ij}^{kc}) wijkc=relu(gijkc),LayerCAM 利用 ReLU 过滤掉负梯度。而本节将探讨负梯度对可解释性的影响。如下表所示:
在这里插入图片描述
负梯度(LayerCAM-normal)LayerCAM 的定位能力比 LayerCAM 低得多。这一事实证明, LayerCAM 中的负梯度会降低定位能力。此外,本实验还测量了 PASCAL VOC 2012 数据集上细粒度位置的 mIoU 分数。通过为VGG16 的不同阶段生成类激活图,然后使用0.2的硬阈值将它们二值化,最后计算阈值掩码和真实掩码之间的 mIoU 分数。
在这里插入图片描述
在表13中,给出了具有不同设置的 LayerCAM 的 mIoU 分数。可以看出,LayerCAM 使用正梯度作为权重比使用正常梯度(具有负梯度)获得 更高的 mIoU 分数。而在图10中,还给出了 pool2 层的定性结果。可以看出,来自具有负梯度的 LayerCAM 的类激活图丢失了许多对象定位信息(为什么会丢失这些定位信息?)

因此,根据上述经验结果,LayeCAM过滤掉负梯度并选择正梯度作为特征图中每个位置的权重。

以下是我对于丢失定位信息的理解:由于每个卷积核注重的区域不一样,对于同一个目标来说,可能被不同的卷积核最大激活(比如卷积核1更注重人的头部,卷积核2更注重身体),这种情况在浅层尤为明显,因为浅层卷积核更注重细粒度的信息,可能注重识别目标多个不同区域。这样在识别A部分的卷积核得到的特征图中,B部分的梯度可能为负(这里是我的猜测,具体要通过实验证明,因为按道理说这部分不会使卷积核最大激活),又因为浅层特征图对目标区分度较低在 A k A^k Ak中的B部分可能也存在大量像素,这样在计算 A ^ k \hat{A}^k A^k时B部分会为负。最后通过多个卷积核的累加,该部分本身应该存在像素,但由于不同卷积核的 A ^ k \hat{A}^k A^k累加得到的负值过多,因此最终导致该像素消失。这也是可以改进的一个点。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 本文探索了将普通的Vision Transformer (ViT)作为目标检测的骨干网络。通过对ViT架构进行微调,而无需重新设计分层骨干进行预训练,我们的普通骨干检测器可以取得竞争性的结果。研究发现,只需从单尺度特征图构建简单的特征金字塔(无需常见的FPN设计),并使用窗口注意(无需移动)辅助少量的跨窗口传播块即可。通过使用预先训练的纯ViT主干作为Masked Autoencoders (MAE),我们的检测器ViTDet可以与之前基于分层骨干的领先方法竞争,在COCO数据集上达到61.3 APbox的性能。我们希望这项研究能够引起对普通骨干检测器的关注。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [论文阅读-ViTDet:Exploring Plain Vision Transformer Backbones for Object Detection](https://blog.csdn.net/qq_37662375/article/details/126675811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ViTDet:Exploring Plain Vision Transformer Backbonesfor Object Detection(arXiv 2022)](https://blog.csdn.net/qq_54828577/article/details/127262932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值