IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 三线性注意力采样网络——用于细粒度图像识别 -> 正文阅读

[人工智能]三线性注意力采样网络——用于细粒度图像识别

CVPR2019——论文链接

摘要

? 学习精细有区分度的特征(例如鸟喙和鸟的眼睛)在细粒度图像识别中起着十分重要的作用。现有的基于注意力的方法通过定位和放大重要部位来学习细粒度细节,但常常受到part数量和繁重的计算开销的限制。在这篇文章中我们提出,通过三线性注意力采样网络(TASN)给出的数百个part proposals,学习细粒度特征。特别地,TASN包括:1)一个三线性注意力模块,通过对通道间关系的建模来生成注意力图;2)一个基于注意力的采样器,突出高分辨率的注意力part;3)一个特征蒸馏器,通过权值共享和特征保存策略,将部分特征蒸馏到一个全局的特征。在iNaturalist-2017、CUB Bird和Stanford-Cars数据集中,大量实验证实TASN在相同的设置下同最具竞争力的方法相比,能够产生最佳性能。

1 介绍 Introduction

? 细粒度视觉分类(FGVC)重点在于区分basic-level类别中的细微视觉差异。尽管通用图像识别的卷积神经网络(CNN)技术在实践中应用越来越多,由于具有区分性的细节(例如鸟的眼睛和鸟喙)太过细微以至于不能被传统的CNN很好地表达,FGVC仍然是一项有挑战性的任务。因此在细粒度领域中的大多数工作都集中在,学习如何更好地表示这些细微但有区别的细节上。

图1.通过TASN学习一只冠蓝鸦的区分细节的图示。如(b)所示,TASN通过将每个细节上采样到高分辨率来学习精细的细节。(c)中的白色同心圈表示细粒度细节。?

? 现有的基于注意力/部分的方法[2,7,34,40]尝试通过学习部分检测器,裁切和放大相关部分,以及连接这些部分的特征来进行识别。尽管已经达到了期望的表现,在这样的一个pipeline中仍然有几个关键的问题。1)注意力的数量是有限且预定义的,约束了模型的有效性和灵活性。2)没有部分注释,很难学习多个一致的注意力图(即每个样本都注意同一部分)。尽管一个设计合理的初始化可以对模型训练有好处,然而它是缺少鲁棒性的,也不能处理那些姿势异常的样例。此外,3)为每个部分训练CNNs不是一个高效的方法。这些瓶颈严重阻碍了基于注意力的细粒度识别的研究。为了应对以上挑战,我们提出了一种三线性注意力采样网络(TASN),从数百个part proposal中学习细粒度细节,并将学习到的特征高效地蒸馏到一个卷积神经网络。TASN包括一个三线性注意力模块,一个基于注意力的采样器,和一个特征蒸馏器首先,三线性注意力模块的输入是特征图,通过自三线性产物(?)生成注意力图,它将特征通道与双线性关系矩阵集成。因为特征图的每个通道都被转换为一个注意力图,这样就可以提取到数百个part proposal。第二,对每次迭代,基于注意力的采样器通过随机选取一个注意力图生成一个保留细节的图像,以及通过平均注意力图生成一个保留结构的图像。前者为具体的part学习细粒度特征,后者移除无区分性的区域,因此细粒度的细节可以以高分辨率更好地表达。最后,一个part-net和一个master-net各自被进一步表达成“老师”和“学生”。

? Part-net从保留细节的图像中学习细粒度特征,将学习到的特征提取(蒸馏)到master-net,主网络(master-net)以结构保留的图像作为输入。这个提取(蒸馏)过程通过权值共享和特征保留策略实现。注意到我们采用[11]中介绍的知识蒸馏来代替连接part特征,因为part的数目很大,且没有预定义。

? 因为特征蒸馏器通过优化参数,将知识从part网络转换到主网络,1)随机细节优化可以达到(即每次迭代随机优化一个part),2)由于在测试阶段可以使用主网络进行识别,因此可以获得有效的推理。据我们所知,这项工作首次尝试从数百个part方案中学习细粒度特征,并用单个卷积神经网络表示此类part特征。我们的贡献总结如下:

  • 我们提出了一个新的三线性注意力采样网络(TASN),用于细粒度图像识别中,从数百个part方案中学习细微特征的表示。?
  • 我们提出以老师-学生的模式优化TASN,细粒度特征可以被高效地蒸馏到一个主网络。
  • 我们在三个挑战数据集(iNaturalist,CUB Birds和Stanford Cars)上进行了大量实验,证明TASN即使在单流情况下也优于partensemble模型。

? Section 2描述相关工作,Section 3介绍我们提出的TASN模型。Section 4在三个广泛应用的数据集上评估,Section 5结论。

2 Related Works

从三个方向简要回顾了从前的工作,包括:

  • 注意力机制:DT-RAM提出了一种用于循环视觉注意力的动态计算时间模型,该模型能够关注动态步骤中最具辨别力的部分;RA-CNN提出了一个循环注意力卷积神经网络,能够在多尺度上循环地学习注意力图。MA-CNN通过设计通道分组模块,进一步在一个尺度上生成多个(即4个)一致性注意图;然而,注意数(即分别为1、3、4)是预定义的,这会影响模型的有效性和灵活性。
  • 自适应图像采样:高分辨率能够保留更多细粒度细节,明显改进表现,然而高分辨率意味着更多的计算开销,更重要的是,不同的区域需要不同的分辨率。STN提出了一种不均匀的采样机制,在MNIST数据集上表现很好。但是,如果没有明确的指导,很难学习复杂任务(如细粒度识别)的非均匀采样参数,因此他们最终没有使用非均匀采样,学习了两部分。SSN首次提出使用显著图作为非均匀采样的指导,并取得了显著的改进。与之不同的是,我们的抽样在进行非均匀抽样之前将注意力图分解为二维,以避免空间失真。
  • 知识蒸馏:Hinton等人[11]首先提出了知识蒸馏,将知识从集合或大型高度正则化模型转移到较小的蒸馏模型中。主要思想是使用软目标来优化小模型,因为它包含比one-hot标签更多的信息。这样一个简单而有效的想法启发了许多研究人员,并得到了[8,10,38]的进一步研究。在本文中,我们采用这种技术将学习到的细节提取到单个CNN中。

3 Method?

? 在这一节中,我们介绍提出的TASN,它可以通过一个卷积神经网络表达丰富的细粒度特征。TASN包括三个模块,即一个用于细节定位的三线性注意力模块,一个用于提取细节的基于注意力的采样模块,和一个用于细节优化的特征蒸馏器

? TASN的概述图见下图2.给定一张输入图像(a),我们:

  • 首先让它通过几个卷积层来提取特征图,即(b),再进一步通过三线性注意力模块转换为注意力图(c)。为了学习一个特定part的细粒度特征,我们随机选取一个注意力图,使用这个注意力图对输入图像进行注意力采样。采样图像被命名为细节保留的图像,因为它可以以高分辨率保留特定的细节。
  • 此外,为了捕获全局结构,且包含所有重要的细节,我们将所有的注意力图进行平均,再做一次注意力采样,这样的一张采样图像被称为结构保留的图像。我们接下来制定一个主网络(master-net)来学习结构保留图像的特征,part网络(part-net)来学习各细节保留图像的细粒度表示。
  • 最后,part-net产生软目标,通过软目标交叉熵将细粒度特征蒸馏到master-net。

?3.1 Details Localization by Trilinear Attention 通过三线性注意力进行细节定位

? 在这个子节中,我们介绍我们的三线性注意力模块,它将卷积特征图转换为注意力图,表示细粒度细节的位置。像从前的工作那样,卷积特征的每个通道对应一个具体类型的视觉模式,然而,这样的特征图由于缺少一致性和鲁棒性,不能起到注意力图一样的作用。受到[40]的启发,我们通过根据特征通道的空间关系进行整合,将特征图转换为注意力图。注意到这样的过程可以在一个自三线性公式中实现,为了方便参考,将其表示为三线性注意力。

??给定一张输入图像I,我们通过将它放入多个卷积层,batch规范化,ReLU和池化层,提取卷积特征。特别地,我们使用resnet-18作为网络主干。为了获得用于精确定位的高分辨率特征图,我们通过改变卷积步长,从原始resnet-18网络中删除了两个下采样过程。此外,为了提高卷积响应的鲁棒性,我们通过附加两组具有多个扩张率的扩张卷积层来增加感受野。在训练时,为了促进优化,我们在图2中的(b)上使用全局平均池化,接着是一个softmax分类器。

? 假定扩张卷积层的输出是一个c \times h\times w维度的tube,这里的c,h,w分别是通道数,高度和宽度。我们将这个特征reshape到一个c\times hw的矩阵,表示为X \in \mathbb{R}^{c \times hw}。我们的三线性可以被公式表达为:

? 其中XX^{T}是双线性特征,表示通道间的空间关系。特别地,X_{i}是特征图的第i个通道,包括空间信息。所以XX^{T}_{i,j}表示通道i和j之间的空间关系。为了使特征图更加一致和鲁棒,我们通过对XX^{T}X进行点乘,进一步将空间关系整合到特征图,因此就可以获得三线性注意力图(如图3所示).

? 图3.自三线性结果的图示。X表示卷积特征图,我们可以通过XX^{T}获得通道间关系。在那之后,对每个特征图整合与之相关的图,通过XX^{T}X的点乘获得三线性注意力图

? 我们进一步研究不同的正则化方法来改进三线性注意力的有效性,4.2节中讨论了细节。最后,我们采用下面这个正则化三线性注意力:

? 其中N(\cdot )表示在矩阵的第二个维度上的softmax正则化。?注意到这两个正则化具有不同的意义:第一个N(X)是空间正则化,可以保持特征图的每个通道有同样的规模。第二个是关系正则化,是对每个关系向量(N(X)X^{T})_{i}进行的。我们将(2)式的三线性函数的输出表示为M \in \mathbb{R}^{c \times hw},即M=M(X\mathit{})。将M reshape到c \times h \times w的空间中,M的每个通道表示一个注意力图M_{i} \in \mathbb{R}^{h \times w}

3.2 Details Extraction by Attention Sampling 通过注意力采样进行细节提取

? 在这个子节中,我们介绍我们的基于注意力的采样模块,它将一张图像和三线性注意力图一起作为输入,生成一个结构保留的图像和一个细节保留的图像。结构保留图像捕获全局结构,包括所有的重要细节。与原始图像对比,结构保留图像移除了那些不含细粒度细节的区域,因此具有区分性的部分可以通过高分辨率被更好的表示出来。细节保留图像关注单一的部分,它可以提取更多细粒度的细节。

? 给定一张图像I,我们通过在不同注意力图上的非对称采样,获得结构保留图像I_{s}和细节保留图像I_{d}

? ?其中M是注意力图,S(\cdot)表示非对称采样函数,A(\cdot)表示通道平均池化,R(\cdot)表示从输入中随机选取一个通道。我们通过计算所有注意力图的平均值来指导结构保留的采样,因为这样的一张注意力图要考虑所有的有区分度的部分。然后随机选取一张注意力图进行细节保留采样,因此它可以保留这个注意区域的高分辨率细粒度细节。随着训练过程推进,每个注意力图都有机会被选到,因此,不同的细粒度细节可以被异步细化。

? 我们对于基于注意力的采样的basic idea是将注意力图看作概率mass函数,即高注意力值的区域更可能被采样到。受到逆变换技术[6]的启发,我们通过计算分布函数的逆函数来实现采样。此外,我们将注意力图分解到两个维度来避免空间失真。

? 以结构保留采样为例,我们首先计算结构保留注意力图A(M)x轴和y轴上的积分:

? 这里的wh分别是注意力图的宽和高。请注意我们使用了max(\cdot)函数来将注意力图分解到两个维度,因为这比可供替代的sum(\cdot)更具有鲁棒性。我们可以进一步获得采样函数:

? 总之,这里的注意力图被用来计算原始图像和采样图像的映射函数。

? 这样一个采样机制在图4中图示说明。在(a)中给定一个注意力图,我们首先通过计算x轴(b1)和y轴(b2)的最大值,将图分解到两个维度。接着(b1)和(b2)的积分分别在(c1)和(c2)中获取和展示。进一步以数字方式计算(c1)和(c2)的逆函数,即:我们统一地在y轴取采样点,然后跟着红色箭头(在(c1)和(c2)展示),蓝色箭头来获得x轴的值。(d)展示了蓝色点的采样像素,我们可以观察到具有高注意力值的区域被分配到更多的采样点。最后,(e)展示了采样图像的结果。请注意,图4的例子是一个结构保留采样的样例。

3.3 Details Optimization by Knowledge Distilling 通过知识蒸馏进行细节优化

? 在这个子节中,我们介绍我们的细节蒸馏器,它以一张细节保留图像和一张结构保留图像作为输入,将学习到的细节以老师-学生的模式从part-net转换到master-net。

? 特别地,对于每次迭代,在3.2节中介绍的基于注意力的采样器可以提供一个结构保留图像(表示为I_{s})和一个细节保留图像(表示为I_{d})。我们首先通过将这两张图像输入到同样的主干CNN网络(例如Resnet-50),获得全连接(fc)输出。fc输出被分别表示为z_{s}z_{d}。接下来“softmax”分类器将z_{s}z_{d}转换到概率向量q_sq_{d},表示的是每个类别的预测概率。以z_{s}为例:

? ?其中T是一个参数,即温度,对于分类任务,该参数通常设置为1。当进行知识蒸馏时,一个大的T值很重要,因为它可以产生一个类别间的软概率分布。我们为主网络获取软目标交叉熵:

? 其中N表示类别数目。最后,主网络的对象函数可以推导为:

? 其中L_{cls}表示分类损失函数,y是一个one-hot向量,表示类别标签,\lambda表示两个项的损失权重。软目标交叉熵的目的是为细粒度细节蒸馏学习到的特征,以及将这些信息转换到主网络。每次迭代中,基于注意力的采样器随机地选取一个部分,在训练过程中所有的细粒度细节可以被蒸馏到主网络。请注意,part-net和master-net的卷积参数是共享的,这对蒸馏很重要,全连接层的共享是可选的。

4 Experiments

4.1 Experiment setup?

数据集:?Caltech-UCSD鸟类(CUB-200-2011),Stanford Cars和iNaturalist-2017。

Baselines:为了公平对比,没有选取1)有额外数据(web或其他数据集),2)人类标注的part定位和3)层次标签(即物种,基因和家族)的baseline。除了特定的,所有的对比方法都使用同样的backbone。

Implementation:我们使用开源的MXNet作为基础代码,在8 Tesla P-100 GPU上训练所有的模型。为了公平比较,我们在VGG-19上进行我们的模型实验

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

? ?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 12:00:06  更:2021-10-17 12:02:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 10:31:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码