【论文翻译】Learning Deep Features for Discriminative Localization

原文:Learning Deep Features for Discriminative Localization

摘要

  在这项工作中,我们重新审视了文献[13]中提出的全局平均池化层,并阐明了它如何明确地使卷积神经网络具有出色的定位能力,尽管该网络是在图像级标签上进行训练的。虽然此技术先前被提出作为一种规范化训练的手段,但我们发现它实际上构建了一种通用的可定位深层表示,可应用于各种任务。尽管全局平均池化看似简单,我们在ILSVRC 2014的对象定位任务上实现了37.1%的前5错误率,这与完全监督的CNN方法所达到的34.2%的前5错误率非常接近。我们证明,尽管我们的网络没有为这些任务进行训练,但它能够定位出具有辨识性的图像区域。

1.引言

  周等人最近的研究[33]表明,卷积神经网络(CNNs)各层的卷积单元实际上能够作为物体探测器,尽管并未提供有关物体位置的监督信息。尽管卷积层具有在定位物体方面的显著能力,但当使用全连接层进行分类时,这种能力会丧失。最近,一些流行的全卷积神经网络,例如网络中的网络(NIN)[13]和GoogLeNet [24],被提出以避免使用全连接层,从而减少参数数量同时保持高性能。
  为了实现这一点,文献[13]使用全局平均池化作为结构规范化器,在训练过程中防止过拟合。在我们的实验中,我们发现这种全局平均池化层的优势不仅仅是作为一个正则化器 - 实际上,通过稍加调整,网络可以保持其卓越的定位能力直至最后一层。这种调整使得网络能够在单次前向传播中轻松识别出具有辨识性的图像区域,用于各种任务,甚至是网络最初未经训练的任务。如图1(a)所示,一个在物体分类上训练的卷积神经网络成功地能够定位出动作分类中的具有辨识性的区域,这些区域指的是人类正在与之互动的物体,而不是人类本身。
在这里插入图片描述

图1:通过对全局平均池化层进行简单修改,结合我们的类激活映射(CAM)技术,使经过分类训练的CNN能够在单次前向传播中完成图像分类,并定位特定类别的图像区域,例如牙刷用于刷牙和链锯用于砍树。

  尽管我们的方法表面上看起来很简单,但在ILSVRC基准测试的弱监督对象定位任务中,我们最佳网络实现了37.1%的前5测试错误率,这与完全监督的AlexNet [10]取得的34.2%的前5测试错误率非常接近。此外,我们还证明了我们方法中深度特征的可定位性可以轻松地转移到其他识别数据集,用于通用分类、定位和概念发现。

1.1.相关工作

  卷积神经网络(CNNs)在各种视觉识别任务上取得了令人瞩目的性能[10, 34, 8]。最近的研究表明,尽管是在图像级标签上进行训练,CNNs具有显著的定位物体能力[1, 16, 2, 15]。在这项工作中,我们展示了通过使用正确的架构,我们可以将这种能力推广到不仅仅是定位物体,而是开始准确识别图像中哪些区域被用于区分。在这里,我们讨论与本文最相关的两个研究方向:弱监督对象定位和可视化CNNs的内部表示。
   弱监督对象定位: 近期有许多研究探索使用CNNs进行弱监督对象定位的方法[1, 16, 2, 15]。Bergamo等人[1]提出了一种自学习对象定位技术,涉及对图像区域进行屏蔽以识别导致最大激活的区域,以定位物体。Cinbis等人[2]将多实例学习与CNN特征相结合,用于定位物体。Oquab等人[15]提出了一种转移中级图像表示的方法,并展示了通过评估CNN在多个重叠补丁上的输出可以实现一定程度的对象定位。然而,这些作者实际上并未评估定位能力。另一方面,虽然这些方法取得了有希望的结果,但它们并非端到端训练,并且需要对网络进行多次前向传播才能定位物体,这使得它们难以扩展到真实世界的数据集。我们的方法是端到端训练的,可以在单次前向传播中定位物体。
   与我们最相似的方法是Oquab等人[16]基于全局最大池化的工作。他们并非使用全局平均池化,而是应用全局最大池化来定位对象上的一个点。然而,他们的定位仅限于位于对象边界的一个点,而不是确定对象的完整范围。我们认为,虽然最大值和平均值函数相当相似,但使用平均池化鼓励网络识别对象的完整范围。这背后的基本直觉是,与最大池化相比,平均池化的损失在网络识别对象的所有辨识区域时更有利。这在第3.2节中得到了更详细的解释,并在实验证实了这一点。此外,与[16]不同的是,我们证明了这种定位能力是通用的,即使对于网络未经过训练的问题也能观察到这种现象。
   我们使用“类激活映射”来指代为每个图像生成的加权激活映射,正如在第2节中所描述的那样。我们想强调的是,虽然全局平均池化不是我们在这里提出的新技术,但据我们所知,发现它可用于精确的辨识定位是我们独特的观察。我们相信这种技术的简单性使其具有可移植性,并可以应用于各种计算机视觉任务,实现快速而准确的定位。
   关于可视化CNNs: 近期有许多工作[29, 14, 4, 33]试图通过可视化CNNs学到的内部表示来更好地理解它们的特性。Zeiler等人[29]使用反卷积网络来可视化激活每个单元的模式。Zhou等人[33]展示了在训练识别场景时CNNs学习到对象检测器,并证明了同一网络可以在单次前向传播中完成场景识别和对象定位。这两项工作只分析了卷积层,忽略了全连接层,因此对整个故事的完整情况了解不足。通过移除全连接层并保持大部分性能,我们能够全方位地理解我们的网络从开始到结束的整个过程。
   Mahendran等人[14]和Dosovitskiy等人[4]通过反转不同层次的深度特征来分析CNNs的视觉编码。虽然这些方法可以反转全连接层,但它们只显示深度特征中保存了什么信息,而没有突出显示这些信息的相对重要性。与[14]和[4]不同,我们的方法可以准确地突出显示图像中哪些区域对于区分是重要的。总体而言,我们的方法为了解CNNs的内在提供了另一个视角。

2.类激活映射

  在本节中,我们描述了使用全局平均池化(GAP)在CNNs中生成类激活映射(CAM)的步骤。特定类别的类激活映射显示了CNN用于识别该类别的具有区分性的图像区域(例如,图3)。生成这些映射的步骤如图2所示。
在这里插入图片描述
图3:来自ILSVRC [20]的四个类别的类激活映射(CAMs)。这些映射突出显示了用于图像分类的具有区分性的图像区域,例如,briard和hen的动物头部,barbell中的盘子,以及bell cote中的钟铃。

在这里插入图片描述
图2:类激活映射(CAM):预测的类别分数被映射回到前一个卷积层,以生成类激活映射(CAMs)。CAM突出显示了类别特定的区分性区域。

  我们使用了类似于Network in Network [13]和GoogLeNet [24]的网络架构 - 这个网络主要由卷积层组成,在最终输出层(在分类任务中为softmax层)之前,我们对卷积特征图进行全局平均池化,并将其用作产生所需输出(分类或其他)的全连接层的特征。鉴于这种简单的连接结构,我们可以通过将输出层的权重投影回卷积特征图上,来确定图像区域的重要性,这一技术被我们称为类激活映射。
  正如图2所示,全局平均池化输出了最后一个卷积层每个单元特征图的空间平均值。这些值的加权和用于生成最终的输出。同样,我们计算最后一个卷积层特征图的加权和,以获得我们的类激活映射。我们将在下面更正式地描述softmax情况下的情形。相同的技术也可以应用于回归和其他损失函数。
  对于给定的图像,让 f k ( x , y ) {{f}_{k}}\left( x,y \right) fk(x,y) 表示在空间位置 ( x , y ) (x,y) (x,y) 处最后一个卷积层单元k的激活。那么,对于单元k,执行全局平均池化的结果 F k F^k Fk ∑ x , y f k ( x , y ) \sum\nolimits_{x,y}{{{f}_{k}}\left( x,y \right)} x,yfk(x,y) 。因此,对于给定的类别c,输入到 softmax函数, S c S_c Sc , 为 ∑ k w k c F k \sum\nolimits_{k}{w_{k}^{c}}{{F}_{k}} kwkcFk ,其中 w k c {w_{k}^{c}} wkc 是单元k对应类别c的权重。实质上, w k c {w_{k}^{c}} wkc 表示了对于类别c , F k F^k Fk 的重要性。最终,类别c的softmax输出 P c P_c Pc exp ⁡ ( S c ) ∑ e exp ⁡ ( S c ) \frac{\exp \left( {{S}_{c}} \right)}{\sum\nolimits_{e}{\exp \left( {{S}_{c}} \right)}} eexp(Sc)exp(Sc) 给出。在这里,我们忽略了偏置项:我们明确将softmax的输入偏置设置为0,因为它对分类性能几乎没有或没有影响。
  通过将 ∑ x , y f k ( x , y ) \sum\nolimits_{x,y}{{{f}_{k}}\left( x,y \right)} x,yfk(x,y) 代入类别得分 S c S_c Sc中,我们得到
S c = ∑ k w k c ∑ x , y f k ( x , y ) = ∑ x , y ∑ k w k c f k ( x , y ) . ( 1 ) \begin{aligned}S_c&=\sum_kw_k^c\sum_{x,y}f_k(x,y)\\&=\sum_{x,y}\sum_kw_k^cf_k(x,y).\end{aligned}\quad\quad\quad(1) Sc=kwkcx,yfk(x,y)=x,ykwkcfk(x,y).(1)
  我们将 M c M_c Mc 定义为类别c的类激活映射,其中每个空间元素表示为
M c ( x , y ) = ∑ k w k c f k ( x , y ) . ( 2 ) M_{c}(x,y)=\sum_{k}w_{k}^{c}f_{k}(x,y).\quad\quad\quad(2) Mc(x,y)=kwkcfk(x,y).(2)
因此, S c = ∑ x , y M c ( x , y ) S_c=\sum_{x,y}M_c(x,y) Sc=x,yMc(x,y),因此 M c ( x , y ) M_c(x, y) Mc(x,y) 直接表示了在空间网格 ( x , y ) (x, y) (x,y) 处的激活对将图像分类为类别c的重要性。
  直觉上,基于先前的研究[33, 29],我们期望每个单元被其感受野内的某种视觉模式激活。因此, f k f_k fk 是表示该视觉模式存在的地图。类激活映射只是在不同空间位置上这些视觉模式存在的加权线性求和。通过简单地将类激活映射上采样到输入图像的大小,我们可以确定与特定类别最相关的图像区域。
  在图3中,我们展示了使用上述方法输出的一些类激活映射(CAMs)的示例。我们可以看到突出显示了各种类别图像的区别性区域。在图4中,我们突出显示了在使用不同类别c生成映射时,单个图像的CAMs的差异。我们观察到,即使对于给定的图像,不同类别的区别性区域也是不同的。这表明我们的方法达到了预期效果。我们将在接下来的部分定量地展示这一点。
在这里插入图片描述
图3:来自ILSVRC [20]的四个类别的类激活映射(CAMs)。这些映射突出显示了用于图像分类的区别性图像区域,例如,briard和hen的动物头部,barbell中的盘子以及bell cote中的钟铃。

在这里插入图片描述
图4:给定图像的前5个预测类别生成的类激活映射(CAMs)的示例,真实类别为"dome"。每个类别激活映射上方显示了预测类别及其得分。我们观察到,不同预测类别下突出显示的区域是不同的,例如,"dome"激活了上部圆形部分,而"palace"激活了建筑物的下部平坦部分。

   **全局平均池化(GAP)与全局最大池化(GMP)之间的直觉差异:**考虑到先前关于使用GMP进行弱监督对象定位的工作[16],我们认为突出GAP和GMP之间的直觉差异是很重要的。我们认为GAP损失鼓励网络识别对象的整体范围,而相比之下,GMP则鼓励网络仅识别单个具有区分性的部分。这是因为在对图像特征图进行平均时,找到对象的所有具有区分性的部分可以最大化值,因为所有低激活都会减少特定特征图的输出。另一方面,对于GMP,除了最具区分性的部分之外的所有图像区域的低分数不会影响得分,因为只执行最大化操作。我们在ILSVRC数据集上进行了实验验证这一点,在第3节中可以看到:虽然GMP在分类性能上与GAP表现类似,但在定位方面,GAP胜过了GMP。

3.弱监督对象定位

   在本节中,我们评估了在ILSVRC 2014基准数据集[20]上训练时CAM的定位能力。首先在第3.1节中描述实验设置和使用的各种CNNs。然后,在第3.2节中,我们验证了我们的技术在学习定位时不会对分类性能产生不利影响,并提供了关于弱监督对象定位的详细结果。

3.1. 实验设置

   对于我们的实验,我们评估了在以下流行的CNNs上使用CAM的影响:AlexNet [10],VGGnet [23]和GoogLeNet [24]。一般来说,对于这些网络的每一个,我们移除最终输出之前的全连接层,并用全局平均池化(GAP)紧接着一个全连接的softmax层来替代它们。
   我们发现,当在全局平均池化(GAP)之前的最后一个卷积层具有更高的空间分辨率时,网络的定位能力会得到改善,我们称之为映射分辨率。为了做到这一点,我们从一些网络中去除了几个卷积层。具体地说,我们进行了以下修改:对于AlexNet,我们移除了conv5之后的层(即从pool5到prob),导致映射分辨率为13 × 13。对于VGGnet,我们移除了conv5-3之后的层(即从pool5到prob),导致映射分辨率为14 × 14。对于GoogLeNet,我们移除了inception4e之后的层(即从pool4到prob),导致映射分辨率为14 × 14。对于以上每个网络,我们添加了一个大小为3 × 3,步长为1,填充为1的具有1024个单元的卷积层,然后是一个GAP层和一个softmax层。然后,我们对这些网络进行了微调,使用ILSVRC [20]的130万张训练图像进行了1000类物体分类,得到了我们的最终网络AlexNet-GAP,VGGnet-GAP和GoogLeNet-GAP。
   对于分类,我们将我们的方法与原始的AlexNet [10]、VGGnet [23]和GoogLeNet [24]进行比较,并提供Network in Network (NIN) [13]的结果。对于定位,我们将与原始的GoogLeNet3、NIN以及使用反向传播[22]而不是CAMs进行比较。此外,为了比较全局平均池化和全局最大池化,我们还提供了使用全局最大池化训练的GoogLeNet(GoogLeNet-GMP)的结果。
   我们使用与ILSVRC相同的错误度量(top-1,top-5)来评估我们的网络的分类和定位性能。对于分类任务,我们在ILSVRC的验证集上进行评估;而对于定位任务,我们在验证集和测试集上进行评估。

3.2. 结果

   我们首先报告物体分类的结果,以证明我们的方法并没有显著降低分类性能。然后我们展示我们的方法在弱监督对象定位方面是有效的。
    分类: 表1总结了原始网络和我们的GAP网络的分类性能。我们发现,在大多数情况下,当去除各种网络的额外层时,性能下降了1-2%。我们观察到AlexNet在去除全连接层后受到的影响最大。为了补偿这一点,我们在GAP之前添加了两个卷积层,得到了AlexNet*-GAP网络。我们发现AlexNet*-GAP的性能与AlexNet相当。因此,总体而言,我们发现我们的GAP网络在很大程度上保持了分类性能。此外,我们观察到GoogLeNet-GAP和GoogLeNet-GMP在分类上有着相似的表现,符合预期。需要注意的是,网络在分类任务上表现良好对于实现较高的定位性能是很重要的,因为它涉及准确识别物体类别和边界框位置。

表1. 在ILSVRC验证集上的分类错误率

在这里插入图片描述
    定位: 为了进行定位,我们需要生成一个边界框及其相关的物体类别。为了从CAMs生成边界框,我们使用简单的阈值技术来分割热图。我们首先分割值高于CAM最大值的20%的区域,然后取覆盖分割图中最大连通组件的边界框。我们对排名前五的预测类别中的每个类别都进行了这样的操作,用于进行前五定位评估指标的前五类别。图6(a)展示了使用这种技术生成的一些示例边界框。ILSVRC验证集上的定位性能显示在表2中,并在图5中显示了示例输出。
在这里插入图片描述
图6。a)来自GoogleNet-GAP的定位示例。b)来自GooleNet-GAP(上两个)和使用AlexNet进行反向传播(下两个)的定位比较。绿色表示真实边界框,红色表示从类激活映射预测的边界框。

表2. 在ILSVRC验证集上的定位错误。Backprop是指使用[22]进行定位,而不是CAM。

在这里插入图片描述
在这里插入图片描述

图5. 来自CNN-GAP的类激活映射以及来自反向传播方法的类特定显著性图。

  我们观察到我们的GAP网络在所有基线方法中表现最佳,其中GoogLeNet-GAP在前五定位错误率方面达到了43%,这是非常显著的,尤其是这个网络并没有在单个注释边界框上进行训练。我们观察到我们的CAM方法在性能上显著优于[22]中的反向传播方法(参见图6(b)进行输出比较)。此外,我们观察到GoogLeNet-GAP在定位任务上显著优于GoogLeNet,尽管在分类任务中情况相反。我们认为GoogLeNet的低映射分辨率(7 × 7)阻碍了其获得精确的定位。最后,我们观察到GoogLeNet-GAP在定位任务上的表现明显优于GoogLeNet-GMP,说明了在识别对象的范围时,全局平均池化比全局最大池化的重要性。

在这里插入图片描述
图6。a)来自GooleNet-GAP的定位示例。b)GooleNet-GAP的定位(上两个)与使用AlexNet进行的反向传播定位的比较(下两个)。绿色表示真实边界框,红色表示来自类激活映射的预测边界框。

  为了进一步比较我们的方法与现有的弱监督[22]和完全监督[24, 21, 24]的CNN方法,我们在ILSVRC测试集上评估了GoogLeNet-GAP的性能。我们在这里采用了稍微不同的边界框选择策略:我们从排名第1和第2的预测类别的类激活映射中选择两个边界框(一个紧凑和一个宽松),并从排名第3的预测类别中选择一个宽松的边界框。我们发现这种启发式方法有助于提高验证集上的性能。性能总结如表3所示。带有启发式方法的GoogLeNet-GAP在弱监督环境中的前五错误率为37.1%,令人惊讶地接近AlexNet(34.2%)在完全监督环境中的前五错误率。虽然令人印象深刻,但是与具有相同架构的完全监督网络(即弱监督GoogLeNet-GAP vs 完全监督GoogLeNet)进行比较时,我们在定位方面仍有很长的路要走。

表3. 不同弱监督和完全监督方法在ILSVRC测试集上的定位错误。

在这里插入图片描述

4. 用于通用定位的深度特征

  CNN的高层次层次(例如AlexNet的fc6、fc7)的响应已被证明在各种图像数据集上具有非常有效的通用特征,具有最先进的性能[3, 19, 34]。在这里,我们展示了我们的GAP CNN学习的特征也作为通用特征表现良好,并且额外地,识别了用于分类的具有辨别性的图像区域,尽管它们并没有被专门用于训练这些特定的任务。为了获得与原始softmax层类似的权重,我们简单地在GAP层的输出上训练一个线性支持向量机(SVM)。
  首先,我们将比较我们的方法和一些基线方法在以下场景和物体分类基准上的表现:SUN397 [27]、MIT Indoor67 [18]、Scene15 [11]、SUN Attribute [17]、Caltech101 [6]、Caltech256 [9]、Stanford Action40 [28] 和UIUC Event8 [12]。实验设置与[34]中相同。在表5中,我们比较了来自我们最佳网络GoogLeNet-GAP的特征与AlexNet的fc7特征以及GoogLeNet的ave pool特征的性能。

表5. 不同深度特征在代表性场景和物体数据集上的分类准确度。

在这里插入图片描述
  正如预期的那样,GoogLeNet-GAP和GoogLeNet的性能明显优于AlexNet。此外,我们观察到尽管前者具有较少的卷积层,但GoogLeNet-GAP和GoogLeNet的表现相似。总的来说,我们发现GoogLeNet-GAP特征作为通用视觉特征与最先进技术具有竞争力。
  更重要的是,我们想探索使用我们的CAM技术和GoogLeNet-GAP生成的定位图是否在这种情况下具有信息性。图8显示了各种数据集的一些示例图。我们观察到在所有数据集中都突出显示了最具区分性的区域。总的来说,我们的方法对于生成通用任务的可定位深度特征是有效的。
在这里插入图片描述
图8。使用我们的GoogLeNet-GAP深度特征(已经训练用于识别对象)进行通用区分定位。我们展示了来自4个数据集的3个类别中的每个类别的2张图像,以及它们下方的类激活映射。我们观察到图像的区分性区域通常会被突出显示,例如,在Stanford Action40中,拖把被定位用于清洁地板,而对于烹饪,平底锅和碗被定位,并且在其他数据集中也可以进行类似的观察。这展示了我们深度特征的通用定位能力。

  在第4.1节中,我们探讨了对鸟类的细粒度识别,并展示了我们如何评估通用定位能力并利用它进一步提高性能。在第4.2节中,我们展示了如何使用GoogLeNet-GAP来识别图像中的通用视觉模式。

4.1. 细粒度识别

  在本节中,我们将我们的通用可定位深度特征应用于识别CUB-200-2011 [26]数据集中的200种鸟类。该数据集包含11,788张图像,其中5,994张用于训练,5,794张用于测试。我们选择这个数据集是因为它还包含边界框注释,允许我们评估我们的定位能力。表4总结了结果。

表4. CUB200数据集上的细粒度分类性能。GoogLeNet-GAP能够成功定位重要的图像区域,提升了分类性能。

在这里插入图片描述
  我们发现,使用全图而没有任何边界框注释时,GoogLeNet-GAP的表现与现有方法相当,准确率为63.0%。当使用边界框注释时,这个准确率增加到了70.5%。现在,考虑到我们网络的定位能力,我们可以采用类似于第3.2节的方法(即阈值法),首先在训练集和测试集中识别鸟类边界框。然后再次使用GoogLeNet-GAP从边界框内部的图像区域提取特征,用于训练和测试。我们发现,这将性能显著提高到了67.8%。在细粒度识别中,定位能力尤为重要,因为类别之间的区别微妙,有一个更加聚焦的图像区域能够实现更好的区分。
  此外,我们发现在0.5交并比(IoU)标准下,GoogLeNet-GAP能够准确地定位图像中的鸟类达到41.0%,而随机性能为5.5%。我们在图7中展示了一些例子。这进一步验证了我们方法的定位能力。
在这里插入图片描述
Figure 7. CUB200数据集中四个鸟类别的选定图像的类激活映射(CAM)和推断的边界框(红色)。在第4.1节中,我们对边界框的质量进行了定量评估(在0.5 IoU时达到41.0%的准确率)。我们发现,在这些CAM边界框中提取GoogLeNet-GAP特征并重新训练SVM可以将鸟类别的分类准确度提高约5%(见表4)。

4.2. 模式发现

  在本节中,我们探讨我们的技术是否能够识别图像中超出物体范畴的共同元素或模式,例如文本或高层概念。鉴于包含共同概念的一组图像,我们想要确定我们的网络识别为重要的区域,并确定这是否对应于输入的模式。我们采用类似之前的方法:在GoogLeNet-GAP网络的GAP层上训练线性SVM,并应用CAM技术来识别重要区域。我们进行了三个使用我们深度特征的模式发现实验。结果总结如下。请注意,在这种情况下,我们没有训练和测试数据集的划分 - 我们只是使用我们的CNN进行视觉模式的发现。
   发现场景中信息丰富的物体: 我们从SUN数据集[27]中选取了包含至少200张完全注释图像的10个场景类别,总共4675张完全注释的图像。我们为每个场景类别训练了一个一对多的线性SVM,并使用线性SVM的权重计算CAM。在图9中,我们绘制了预测场景类别的CAM,并列出了与两个场景类别的高CAM激活区域最频繁重叠的前6个物体。我们观察到高激活区域经常对应于特定场景类别的指示性物体。
在这里插入图片描述
图9. 两个场景类别的信息丰富物体。对于餐厅和浴室类别,我们展示了原始图像的示例(顶部),以及该场景类别中出现频率最高的6个物体列表,以及它们出现的频率。底部显示了CAM以及最常与高激活区域重叠的6个物体的列表。
   在弱标记图像中的概念定位: 使用[32]中的硬负样本挖掘算法,我们学习概念检测器,并应用我们的CAM技术来定位图像中的概念。为了训练短语的概念检测器,正集包含图像,这些图像的文本标题中包含短语,而负集由随机选择的文本标题中没有相关单词的图像组成。在图10中,我们展示了两个概念检测器的排名靠前的图像和CAM。请注意,CAM定位了这些概念的信息区域,即使这些短语比典型的物体名称要抽象得多。
在这里插入图片描述
图10. 从弱标记图像中学到的概念的信息区域。尽管这些概念相当抽象,但是我们的GoogLeNet-GAP网络能够充分定位这些概念。

   弱监督文本检测器: 我们使用来自SVT数据集 [25] 中包含文本的 350 张 Google StreetView 图像作为正集,并从 SUN 数据集 [27] 中的户外场景图像中随机抽样作为负集,训练了一个弱监督文本检测器。如图11所示,我们的方法可以准确地突出显示文本,而不使用边界框注释。
在这里插入图片描述
图11. 学习弱监督文本检测器。尽管我们的网络未经过文本或任何边界框注释的训练,但能够在图像上准确检测到文本。

   解释视觉问答: 我们使用我们的方法和可定位的深度特征,将其用于视觉问答的基线模型,该模型在 Open-Ended 轨道的测试集上具有总体准确率为 55.89%。如图12所示,我们的方法突出显示与预测答案相关的图像区域。
在这里插入图片描述
图12:视觉问答中预测答案类别所突出显示的图像区域示例。

5.可视化特定类别单元

  周等人[33]已经表明CNN各层的卷积单元充当视觉概念探测器,从低级概念如纹理或材料,到高级概念如物体或场景。在网络的深层,这些单元变得越来越具有区分性。然而,在许多网络中存在全连接层,很难确定不同单元在识别不同类别方面的重要性。在这里,利用全局平均池化和排名softmax权重,我们可以直接可视化对于特定类别最具有区分性的单元。我们将它们称为CNN的特定类别单元。
  图13显示了针对ILSVRC数据集进行目标识别(顶部)和Places数据库进行场景识别(底部)训练的AlexNet∗-GAP的特定类别单元。我们遵循与[33]类似的流程,用于估计感受野和分割每个单元在最后一个卷积层的顶部激活图像。然后,我们简单地使用softmax权重为给定类别对单元进行排名。从图中我们可以确定最具区分性的对象部分,以及确切地检测这些部分的单元。例如,检测狗脸和身体毛发的单元对于拉克兰梗是重要的;检测沙发、桌子和壁炉的单元对客厅是重要的。因此,我们可以推断CNN实际上学习了一组单词,其中每个单词都是一个具有区分性的特定类别单元。这些特定类别单元的组合指导CNN对每个图像进行分类。
在这里插入图片描述

6. 总结

  在本工作中,我们提出了一种名为类激活映射(CAM)的通用技术,适用于具有全局平均池化的卷积神经网络(CNN)。这使得经过分类训练的CNN能够学习进行目标定位,而无需使用任何边界框注释。类激活映射允许我们在任何给定图像上可视化预测的类别分数,突出了CNN检测到的具有区分性的对象部分。我们在ILSVRC基准测试上评估了我们的方法,展示了我们的全局平均池化CNN能够进行准确的目标定位。此外,我们证明了CAM定位技术推广到其他视觉识别任务,即我们的技术产生了能够帮助其他研究人员理解CNN用于其任务的区分基础的通用可定位深度特征。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/223345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序算法:【冒泡排序】、逻辑运算符not用法、解释if not tag:

注意: 1、排序:将一组无序序列,调整为有序的序列。所谓有序,就是说,要么升序要么降序。 2、列表排序:将无序列表变成有序列表。 3、列表这个类里,内置排序方法:sort( )&#xff0…

Python实现图形的几何变换

一、能够提供对话框窗口,输入三角形的顶点坐标;或者,采用鼠标左键单击方式输入三角形的顶点坐标。 二、对输入的三角形顶点坐标进行五种基本几何变换: 对于平移变换,能够提供对话框窗口,输入平移向量&…

HashMap:理解Hash、底层实现与扩容机制

一、简单叙述 HashMap是Java中常用的一种数据结构,它以键值对的形式存储数据,具有高效的查找、插入和删除操作。本文将详细介绍HashMap的底层实现原理,包括哈希技术、底层数据结构和扩容机制,帮助读者深入理解HashMap的工作原理。…

Java IO 模型之 BIO、NIO、AIO 详解

目录 一. 前言 二. IO 模型 2.1. IO 模型分类 2.2. BIO、NIO、AIO 使用场景分析 2.3. NIO 和 BIO 的比较 三. BIO(同步阻塞) 3.1. BIO 编程流程 3.2. BIO 应用实例 3.3. 问题分析 四. NIO(同步非阻塞) 4.1. 基本介绍 …

Dubbo 3.x源码(13)—Dubbo服务发布导出源码(2)

基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo 3.x源码(12)—Dubbo服务发布导出源码(1),也就是Dubbo服务发布导出的入口源码,现在我们继续学习,服务导出的核心方法doExportUrls的源码。 Dubbo 3.x…

一文读懂Java中的设计模式——单例模式!默认情况下,Spring的Bean就是单例的

单例模式概念 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式只应在有真正的“单一实例”的需求时才可使用。总结起来单例模式有三个优点: 全局访问共享资源:当需要在应用程序的多个地方共享和使用相…

跑代码中遇到的错误合集(持续更新)

1.TypeError: dropout(): argument ‘input‘ (position 1) must be Tensor, not str 原因:dropout函数接收到的参数是一个字典类型(需手动设置其不要返回字典类型) 解决步骤: 1.根据代码定位到dropout函数 2.定位到函数中的参数 3.对给dropout函数参数赋值的函数的…

[渗透测试学习] Sau - HackTheBox

首先是信息搜集,nmap扫一下 nmap -sV -sC -p- -v 10.10.11.224 发现存在两个端口,55555端口有http服务,访问一下 获得线索request-baskets版本为1.2.1,搜索发现存在漏洞 那么我们试试构造ssrf,create的时候bp抓包 构…

定时器TIM HAL库+cubeMX(上)

定时器时钟源APB1 36MHz 一.基本定时器 1.基本框图 2.溢出时间计算 3.配置定时器步骤 TIM_HandleTypeDef g_timx_handle;/* 定时器中断初始化函数 */ void btim_timx_int_init(uint16_t arr, uint16_t psc) {g_timx_handle.Instance TIM6;g_timx_handle.Init.Prescaler p…

【数据安全】金融行业数据安全保障措施汇总

数字化的今天,数据的价值不可估量,尤其是金融行业,数据不仅代表着企业的核心资产,还涉及到客户的隐私和信任。因此对于金融行业而言,保障数据安全至关重要。下面我们就来一起讨论为什么金融行业要保障数据安全&#xf…

Idea执行bat使用maven打包springboot项目成docker镜像并push到Harbor

如果执行以下命令失败,先把mvn的-q参数去掉,让错误输出到控制台。 《idea配置优化、Maven配置镜像、并行构建加速打包、解决maven打包时偶尔几个文件没权限的问题》下面的使用company-repo私有仓库和阿里云镜像仓库同时使用的配置参考。 bat echo off …

要实现长页面滑动到指定位置触发动画效果(亲测有效)

1.添加触发动画的元素&#xff1a;在你的 HTML 文件中&#xff0c;将需要触发动画的元素添加相应的类名<div class"animation"> <p>安全工矿 智能工矿 安全工矿 智能工矿</p> </div> 给一个 <div> 元素添加 .animation…

JVM 详解(JVM组成部分、双亲委派机制、垃圾回收算法、回收器、回收类型、了解调优思路)

目录 JVM 详解&#xff08;JVM组成部分、双亲委派机制、垃圾回收算法、回收器、回收类型、了解调优思路&#xff09;1、概念&#xff1a;什么是 JVM ?JVM 的作用&#xff1f; 2、JVM 的主要组成部分&#xff1f;类加载器&#xff08;Class Loader&#xff09;&#xff1a;简单…

02基于matlab的卡尔曼滤波

基于matlab的卡尔曼滤波&#xff0c;可更改状态转移方程&#xff0c;控制输入&#xff0c;观测方程&#xff0c;设置生成的信号的噪声标准差&#xff0c;设置状态转移方差Q和观测方差R等参数&#xff0c;程序已调通&#xff0c;需要直接拍下。

Vue学习计划-Vue2--VueCLi(五)全局事件总线、消息订阅与发布(pubsub)

抛出问题:我们多级组件&#xff0c;或者任意不想关的子组件如何传递数据呢&#xff1f; 1. 全局事件总线&#xff08;$bus&#xff09; 一种组件间通信的方式&#xff0c;适用于任意组件间通信 全局事件总线示意图&#xff1a; 安装全局事件总线&#xff1a; new Vue({..…

数据结构和算法-图的基本概念及邻接矩阵法和邻接表法和十字链表法和链表链表法

文章目录 图的概念总览图的定义图逻辑结构的应用无向图和有向图简单图和多重图顶点的度&#xff0c;入读&#xff0c;出度顶点-顶点的关系描述连通图&#xff0c;强连通图研究图的局部-子图无向图有向图 连通分量强连通分量生成树生成森林边的权&#xff0c;带权图/网几种特殊形…

虚幻学习笔记15—C++和UI(一)

一、前言 在C可以直接创建按钮、滚轮等UI&#xff0c;并且可以直接绑定并处理响应事件。在创建C代码后还是需要通过蓝图来显示到应用中&#xff0c;总体来说还是不如直接用蓝图来的方便。 本文使用的虚幻引擎为5.2.1。 二、实现 2.1、创建UUserWidgetl类型的C类 声明两个按钮…

uniCloud(一) 新建项目、初始化服务空间、云对象访问测试

一、新建一个带有unicloud 二、创建一个服务空间 1. 右键uniCloud&#xff0c;关联云服务空间 我当前没有服务空间&#xff0c;需要新建一个服务空间&#xff0c;之后将其关联。初始化服务空间需要的时间有点长 服务空间初始化成功后&#xff0c;刷新HBuilder&#xff0c;勾选…

Linux系统下CPU性能问题分析案例

&#xff08;上&#xff09; 本文涉及案例来自于学习极客时间专栏《Linux性能优化实战》精心整理而来&#xff0c;案例总结不到位的请各位多多指正。 某个应用的CPU使用率居然达到100%&#xff0c;我该怎么办&#xff1f; 分析过程 使用观察系统CPU使用情况&#xff08;并按下…

03. 医院设置_后端

1、Swagger2 测试工具 编写和维护接口文档是每个程序员的职责&#xff0c;根据Swagger2可以快速帮助我们编写最新的API接口文档&#xff0c;再也不用担心开会前仍忙于整理各种资料了&#xff0c;间接提升了团队开发的沟通效率。 swagger通过注解表明该接口会生成文档&#xf…