用于细粒度视觉分类的上下文感知注意力池化 AAAI-2021
深度卷积神经网络(CNN)在挖掘鉴别性对象的姿态信息和局部part信息以进行图像识别方面表现出了强大的能力。对于细粒度识别,对象/场景的上下文感知(context-aware)的丰富特征表示起着关键作用,因为它在同一子类别中表现出显著差异,在不同子类别之间表现出细微差异(类间差异小,类内差异大)。找到能够完全描述对象/场景的细微差异并不是一件简单的事情。为了解决这一问题,我们提出了一种新颖的上下文感知注意力池化(context-aware attentional pooling,CAP),在不需要边界框和/或鉴别性的局部注释的情况下,通过子像素梯度有效地捕捉细微变化,并学习参与信息积分区域及其在区分不同子类时的重要性。作者还引入了一种新的特征编码,通过考虑整体区域的信息量与其空间结构之间的内在一致性来捕捉它们之间的语义相关性。我们的方法简单但非常有效,可以很容易地迁移到标准分类骨干网络上。我们使用6个最先进的(SOTA)骨干网络和8个基准数据集来评估我们的方法。我们的方法在6个数据集上明显优于SOTA方法,并且在剩下的2个数据集上具有竞争力。
近年来,由于快速、可扩展和端到端的学习框架CNN (LeCun,1998)的适应和增强,计算机视觉领域取得了重大进展。这不是一项最近的发明,但我们现在看到大量基于CNN的模型在视觉识别中实现SOTA结果(He等2016; Huang 2017; Zoph,2018; Sandler 2018)。性能提升主要来自模型通过从纹理和形状中分离出鉴别性的对象姿势和局部信息来推理图像内容的能力。大多数鉴别性特征通常是基于全局形状和外观的变化。它们通常不适合区分子类,这个涉及各种自然物体之间的细微视觉差异,例如鸟类 (Wah 2011; Van Horn 2015)、花卉(Nilsback, Zisserman 2008)、犬类(Khosla 2011)、宠物(Parkhi,2012)和人造物体,如飞机(Maji 2013)、汽车(Krause 2013) 等。为了解决这个问题,设计一个全局描述符是必不可少的,它(全局描述符)集成了来自多个局部part的特征和它们的层次结构,以便细微的变化可以被判别为局部part或pattern的不对齐。该描述符还应该能够强调局部part的重要性。
在细粒度视觉识别(FGVC)方面,已经有一些优秀的研究成果,包括使用弱监督互补局部(Ge、Lin和Yu 2019)、局部注意力(Liu 2016)、对象局部注意力(Peng、He和Zhao 2018)、多智能体合作学习(Yang et al.2018)、循环注意力(Fu、Zheng和Mei 2017)以及破坏和构造学习(Chen et al.2019)。所有这些方法都避免了局部级标注,并以无监督/弱监督的方式自动鉴别局部part。他们中的许多人使用预先训练的对象/局部检测器,缺乏丰富的区域/局部part表示,无法更好地捕捉对象和局部关系。要真正描述图像,我们需要以更细粒度的方式考虑从像素到对象再到场景的图像生成过程,不仅要调整对象/局部及其空间排列,还要使用多个局部描述定义它们的外观,以及它们在区分细微变化方面的重要性。这些局部描述应该丰富且相互补充,以提供对象/图像的完整描述。在这项工作中,我们提出了一种简单而有说服力的方法,系统地包含上述特性,以应对与FGVC相关的挑战。因此,它可以受益于多种应用,如图像字幕(Herdade,2019; Huang, 2019a; Li, 2019)、专家级图像识别(Valan, 2019;Krause, 2016)等。
作者的工作:为了以CNN中的常规方式描述对象并保持其视觉外观,我们设计了一种上下文感知注意池化(CAP)来有效地编码各个局部的空间排列和视觉外观。该模块将输入作为基本CNN的卷积特征,然后学习强调多个积分区域integral region(不同粗糙度)的潜在表示,以描述对象和局部内的层次结构。每个区域在特征图中都有一个定位点anchor,因此由于整体特征,许多区域具有相同的定位点anchor。然后将这些积分区域integral regions输入循环网络(例如 LSTM)以捕获它们的空间排列,并受到视觉识别文献的启发,这表明人类不会立即将注意力集中在整个场景上。相反,他们通过关注不同的局部来提取相关信息(Zoran et al.2020)。我们的 CAP 的一个重要特征是它通过关注以所有其他区域及其自身为条件的给定区域来生成新的特征图。此外,它通过双线性池化的子像素梯度有效地捕获每个区域的细微变化。循环网络主要用于序列分析/识别。我们的目标是捕捉整体区域及其空间排列之间的细微变化。因此,我们引入了一个可学习的池化来自动强调循环网络中信息量最大的隐藏状态。它学习对积分区域(integral regions)潜在表示的空间排列进行编码,并使用它来推断细粒度的子类别。
作者的贡献:本文的贡献总结如下:
(1)一个易于使用的SOTA基础CNN扩展,通过结合上下文感知注意力来实现FGVC的显着改进;
(2)为了鉴别对象/场景中的细微变化,提出了基于上下文感知的注意力引导的积分区域丰富表示法;
(3)还引入了可学习的池化来自动选择循环网络的隐藏状态来编码空间排列和外观特征;
(4)提出的模型在八个FGVC数据集上进行广泛分析,获得SOTA结果;
(5)分析各种基础网络以扩大我们的 CAP 的适用性。
基于无监督/弱监督局部/区域的方法:这种方法学习不同的鉴别性局部/区域集合,以表示图像的完整描述。在 (Chen et al. 2019) 中,图像的全局结构通过随机patch-shuffling机制进行了实质性改变,以选择信息区域。对抗性损失用于学习基本patch。在(Ge、Lin和Yu 2019)中,Mask R-CNN和条件随机场用于目标检测和分割。双向LSTM用于对所选局部proposal中丰富的补充信息进行编码,以进行分类。(Yu等人,2018a)提出了一个分层双线性池化框架,用于从中间卷积层学习层间局部特征交互。该池化策略以相互增强的方式实现层间特征交互和鉴别性局部特征学习。在(Cai、Zoo和Zhang 2017)中,描述了分层卷积特征的高阶集成,以表示不同尺度下的局部语义。它定义了一个基于多项式核的预测器,用于使用卷积激活的高阶统计对局部交互进行建模。(Cui et al. 2017) 展示了一种通用池化方案,通过使用kernel的紧凑和显式特征映射来表示高阶和非线性特征交互。我们的方法通过探索积分区域来补充这些方法,并学习使用双线性池来关注这些区域,该双线性池将来自多个积分区域的局部信息编码为用于子类的综合特征向量。
基于对象和/或局部级注意力的方法:最近,在使用注意力机制(Zhao、Jia 和 Koltun 2020;Leng、Liu 和 Chen 2019;Bello 等人 2019;Parmar 等人 2019)以提高图像识别准确性方面取得了重大进展。它也在 FGVC 中进行了探索(Zheng 2019; Ji 2018; Sun 2018)。在(Zheng 2020)中,part proposal网络产生了几个局部注意力图,part rectification network 学习了丰富的局部层次结构。(Fu, Zheng, and Mei 2017) 中的循环注意力在多个尺度上学习了关键区域。 参与区域被裁剪并以更高的分辨率放大以计算丰富的特征。(Peng, He, and Zhao 2018) 中的对象局部注意力模型 (OPAM) 结合了对象定位的对象级注意力和重要局部选择的局部级注意力。两者共同学习多视图和多尺度特征以提高性能。在 (Liu et al. 2019) 中,提出了一种双向注意力识别模型 (BARM),通过从识别模块到局部定位模块的反馈路径来优化region proposal。类似地,在注意力金字塔层次结构中(Ding 2020),自上而下和自下而上的注意力被集成以学习高级语义和低级详细特征表示。在 (Rodr´ıguez et al. 2020) 中,使用由注意力模块和注意力门组成的模块化前馈注意机制来学习低层特征激活。我们的新范式向前迈进了一步,并从这些方法中汲取灵感。它优于现有方法,因为它使用单个网络,并且所提出的注意力机制通过探索积分区域integral regions来学习以分层方式从单尺度图像中关注外观和形状信息。我们通过创新分类层进一步扩展它,其中通过关注LSTM信息量最大的隐藏状态来学习积分区域的细微变化。
本文模型的总体框架如图1a所示。它接受一个输入图像,并提供输出作为子类标签。为了解决这个,作者给定N张图片 I = { I n ∣ n = 1 , . . . , N } I=\{I_n|n=1,...,N\} I={In∣n=1,...,N},以及各自的细粒度标签。目的是找到映射函数 F \mathcal{F} F,该函数预测 y ^ n = F ( I n ) {\hat{y}}_n=\mathcal{F}\left(I_n\right) y^n=F(In), y ^ n {\hat{y}}_n y^n与真实标签 y n y_n yn匹配。最终目标是通过最小化真实标签和预测标签之间的损失函数 L ( y n , y ^ n ) L\left(y_n,{\hat{y}}_n\right) L(yn,y^n)以学习映射函数 F \mathcal{F} F。作者提出的模型包含三个元素(图1a):(1)基本CNN模型 F b ( ⋅ ; θ b ) \mathcal{F}_b\left(\cdot;\theta_b\right) Fb(⋅;θb);(2)本文提出的CAP模型 F c ( ⋅ ; θ c ) \mathcal{F}_c\left(\cdot;\theta_c\right) Fc(⋅;θc);(3)分类模块 F d ( ⋅ ; θ d ) \mathcal{F}_d\left(\cdot;\theta_d\right) Fd(⋅;θd)。作者的目标是通过端到端训练模型参数 θ = { θ b , θ c , θ d } \theta=\left\{\theta_b,\theta_c,\theta_d\right\} θ={θb,θc,θd}。作者使用SOTA CNN结构作为基础CNN F b ( ⋅ ; θ b ) \mathcal{F}_b\left(\cdot;\theta_b\right) Fb(⋅;θb),因此作者重点强调剩下两个模块 F c ( ⋅ ; θ c ) \mathcal{F}_c\left(\cdot;\theta_c\right) Fc(⋅;θc)和 F d ( ⋅ ; θ d ) \mathcal{F}_d\left(\cdot;\theta_d\right) Fd(⋅;θd)。
图1(a)模型的高层说明(左边);(b)提出的新颖的CAP详细结构(right)
该模块使用基本CNN的输出作为这个模块的输入。对于输入的图像 I n I_n In,作者考虑使用 x = F b ( I n ; θ b ) x=\mathcal{F}_b\left(I_n;\theta_b\right) x=Fb(In;θb)作为卷积特征映射,也就是基本网络 F b \mathcal{F}_b Fb的输出。作者所提出的CAP考虑了从像素到小patch到大patch到图像级的上下文信息。像素是指在(规格为宽度W高度H和通道C的)卷积特征映射 x x x中的位置。目的是从层次上获取上下文信息,以便更好地建模FGVC任务中观察到的细微变化。我们的注意力机制学习强调像素,以及位于图像 I n I_n In不同局部parts的不同size的区域。在像素级,我们明确地学习了像素之间的关系,即 p ( x i ∣ x j ; θ p ) , ∀ i i ≠ j , 1 ≤ i , j ≤ W × H p\left(x_i|x_j;\theta_p\right),\forall i\ i\neq j\ ,1\le i,j\le W\times H p(xi∣xj;θp),∀i i=j ,1≤i,j≤W×H,即使它们在 x x x 中相距很远。它表示在合成 x x x中的第 j j j个位置(图2a)时,模型应该关注第 i i i个位置的程度。为了实现这一点,我们通过重新使用自注意力概念 (Zhang et al. 2018) 来计算注意力图 θ p \theta_p θp,其中 x x x中的键key k ( x ) = W k x k\left(x\right)=W_kx k(x)=Wkx,查询query为 q ( x ) = W q x q\left(x\right)=W_qx q(x)=Wqx和值value为 v ( x ) = W v x v\left(x\right)=W_vx v(x)=Wvx都使用单独的1 × 1卷积计算。注意力输出特征图 o o o是注意力图 θ p \theta_p θp和 x x x的点积。另外, θ p = { W k , W q , W v } \theta_p=\{W_k,W_q,W_v\} θp={Wk,Wq,Wv}是可学习的。
图2(a)从尺寸为HWC的卷积特征映射中学习像素级关系。(b)CAP使用积分区域捕获自身和领域上下文信息。(c)用LSTM封装积分区域的空间结构(d)通过LSTM隐藏状态的可学习聚合进行分类。
为了有效地学习上下文信息,作者提出了在特征图 o o o上具有不同粒度的多个整体区域integral regions。粗糙度由不同size的矩形区域捕获。让我们考虑宽度为 Δ x \mathrm{\Delta}_x Δx、高度为 Δ y \mathrm{\Delta}_y Δy且位于 o o o的第 i i i列和第 j j j行的最小区域 r ( i , j , Δ x , Δ y ) r\left(i,j,\mathrm{\Delta}_x,\mathrm{\Delta}_y\right) r(i,j,Δx,Δy)。使用 r ( i , j , Δ x , Δ y ) r\left(i,j,\mathrm{\Delta}_x,\mathrm{\Delta}_y\right) r(i,j,Δx,Δy),作者通过改变它们的宽度和高度来导出一组区域,即 R = { r ( i , j , m Δ x , n Δ y ) } R=\left\{r\left(i,j,{m\mathrm{\Delta}}_x,n\mathrm{\Delta}_y\right)\right\} R={r(i,j,mΔx,nΔy)},其中 m , n = 1 , 2 , 3 , ⋅ ⋅ ⋅ m,n=1,2,3,\cdot\cdot\cdot m,n=1,2,3,⋅⋅⋅,并且 i ≤ i + m Δ x ≤ W , j ≤ j + n Δ y ≤ H i\le i+{m\mathrm{\Delta}}_x\le W,j\le j+{n\mathrm{\Delta}}_y\le H i≤i+mΔx≤W,j≤j+nΔy≤H。对于给定空间位置 ( i , j ) \left(i,j\right) (i,j),这在图1b(左)中进行了说明。目的是在o中的不同空间位置 ( 0 ≤ i ≤ W , 0 ≤ j ≤ H ) \left(0\le i\le W,0\le j\le H\right) (0≤i≤W,0≤j≤H)生成相似的区域集 R R R。通过这种方式,我们生成了最终的一组区域 R = { R } \mathcal{R}=\left\{R\right\} R={R},这些区域位于不同位置,具有不同的大小和纵横比,如图1b所示。该方法是一种全面的上下文感知表示方法,用于捕获描述图像层次上细微变化的丰富上下文信息。
有 ∣ R ∣ \left|\mathcal{R}\right| ∣R∣个区域,它们的size从最小值 Δ x × Δ y × C \mathrm{\Delta}_x\times\mathrm{\Delta}_y\times C Δx×Δy×C到最大值 W × H × C W\times H\times C W×H×C不等。这里的目标是用固定大小的特征向量表示这些可变大小的区域 X × Y × C → w × h × c X\times Y\times C\rightarrow w\times h\times c X×Y×C→w×h×c。 因此,我们使用双线性池化,通常是双线性插值来实现可微分图像变换,这需要索引操作。令 T ψ ( y ) T_\psi\left(y\right) Tψ(y)表示参数为 ψ \psi ψ的坐标变换, y = ( i , j ) ∈ R 2 y=\left(i,j\right)\in\mathbb{R}^2 y=(i,j)∈R2表示特征值为 R ( y ) ∈ R C \mathbf{R}\left(y\right)\in\mathbb{R}^C R(y)∈RC的区域坐标。目标坐标 y ~ \widetilde{y} y 处的变换图像 R ~ \widetilde{\mathbf{R}} R 为:
R ~ ( y ~ ) = ∑ y R ( T ψ ( y ) ) K ( y ~ , T ψ ( y ) ) ( 1 ) \widetilde{\mathbf{R}}\left(\widetilde{y}\right)=\sum_{y} R\left(T_\psi\left(y\right)\right)K\left(\widetilde{y},T_\psi\left(y\right)\right) (1) R (y )=∑yR(Tψ(y))K(y ,Tψ(y))(1)
其中, R ( T ψ ( y ) ) R\left(T_\psi\left(y\right)\right) R(Tψ(y))表示图像索引操作,是不可微的;因此,梯度在网络中传播的方式取决于kernel核 K ( ⋅ , ⋅ ) K\left(\cdot,\cdot\right) K(⋅,⋅)。在双线性插值中,当 y 1 y_1 y1和 y 2 y_2 y2不是直接邻居时,kernel核 K ( y 1 , y 2 ) = 0 K\left(y_1,y_2\right)=0 K(y1,y2)=0。因此,子像素梯度(即原始区域中相邻位置之间的特征值差异)仅在传播过程中通过(Jiang et al. 2019)。这是双线性插值中的一个固有缺陷,因为子像素梯度不会与大尺度变化相关联,而大尺度变化无法被点的直接邻域捕获。为了克服这一问题,提出了几种变体(Jiang等人,2019年;Lin和Lucey,2017年)。然而,在我们的工作中,我们利用这个缺陷通过子像素梯度捕捉所有区域的细微变化。
请注意,尽管由于下限和上限函数的原因,双线性插值在所有点上都不可微,但可以反向传播误差,并且在空间变换网络(Jaderberg et al.2015)的开创性工作中提到的大多数输入中都可微。我们使用公式(1)中的双线性核函数 K ( ⋅ , ⋅ ) K\left(\cdot,\cdot\right) K(⋅,⋅)来池化所有 r ∈ R r\in\mathcal{R} r∈R的固定大小的特征 f ˉ r ( w × h × C ) {\bar{f}}_r\left(w\times h\times C\right) fˉr(w×h×C)
在这一步,作者使用新的注意力机制来捕捉上下文信息,它将 f ˉ r {\bar{f}}_r fˉr转换自身的加权版本,并以其余的特征图 f ˉ r ′ ( r , r ′ ∈ R ) {\bar{f}}_{r\prime}\left(r,r\prime\in\mathcal{R}\right) fˉr′(r,r′∈R)为条件。它使我们的模型能够有选择地关注更相关的整体区域integral regions,从而生成整体的上下文信息。作者所提出的上下文感知注意采用query查询 q ( f ˉ r ) q\left({\bar{f}}_r\right) q(fˉr)并映射到与给定图像中的整体区域(integral regions) r ′ r\prime r′相关联的一组key键 k ( f ˉ r ′ ) k\left({\bar{f}}_{r\prime}\right) k(fˉr′),然后将输出作为上下文向量 c r c_r cr返回,它的计算如下:
其中权重矩阵 W β W_\beta Wβ和 W β ′ W_{\beta\prime} Wβ′用于从各自的特征图 f ˉ r {\bar{f}}_r fˉr和 f ˉ r ′ {\bar{f}}_{r\prime} fˉr′估计query和key; W α W_\alpha Wα是它们的非线性组合; b α b_\alpha bα和 b β b_\beta bβ是偏置。这些矩阵和偏置 ( { W β , W β ′ , W α , b α , b β } ∈ θ c ) \left(\left\{W_\beta,\ \ W_{\beta\prime}\ ,W_\alpha\ ,b_\alpha\ ,b_\beta\right\}\in\theta_c\right) ({Wβ, Wβ′ ,Wα ,bα ,bβ}∈θc)是可学习参数。上下文感知注意力 α r , r ′ \alpha_{r,r\prime} αr,r′分别捕捉区域 r r r和 r ′ r\prime r′的特征图 f ˉ r {\bar{f}}_r fˉr和 f ˉ r ′ {\bar{f}}_{r\prime} fˉr′之间的相似性。以注意力为中心的上下文向量 c r c_r cr决定了关注 f ˉ r {\bar{f}}_r fˉr,这个取决于它自身及其邻域上下文。这适用于所有整体区域 r r r(参见图 2b)。
上下文向量 c = { c r ∣ r = 1... ∣ R ∣ } c=\left\{c_r\ |\ r=1...\left|\mathcal{R}\right|\right\} c={cr ∣ r=1...∣R∣}代表注意力和显著性。为了包含涉及区域空间排列的结构信息(见图1b和2b),我们将c表示为区域序列(图2c),并使用其内部状态(内部状态是通过隐藏单元h_r\in\mathcal{R}^n建模)来捕获结构知识,以调整循环网络。表示区域r的内部状态更新为: h r = F h ( h r − 1 , f r ; θ h ) h_r=\mathcal{F}_h\left(h_{r-1},f_r;\theta_h\right) hr=Fh(hr−1,fr;θh),其中 F h \mathcal{F}_h Fh是一个具有可学习参数 θ h \theta_h θh的非线性函数。作者将全门控LSTM作为 F h \mathcal{F}_h Fh(Hochreiter和Schmidhuber 1997),它能够学习长期依赖。参数 θ h ∈ θ c \theta_h\in\theta_c θh∈θc由权重矩阵和连接输入门、遗忘门和输出门以及 F h \mathcal{F}_h Fh的细胞状态的偏置组成。为简单起见,我们省略了计算这些参数的方程,感兴趣的读者可以参考 (Hochreiter and Schmidhuber 1997)了解更多细节。为了提高CAP的通用性和降低计算复杂度,通过全局平均池化(GAP)从上下文向量 c r c_r cr中提取上下文特征 f r f_r fr。这使得特征图size从 ( w × h × C ) \left(w\times h\times C\right) (w×h×C)减小到 ( 1 × C ) \left(1\times C\right) (1×C)。隐藏状态序列 h = ( h 1 , h 2 , ⋅ ⋅ ⋅ , h r , ⋅ ⋅ ⋅ , h ∣ R ∣ ) h=\left(h_1,h_2,\cdot\cdot\cdot,h_r,\cdot\cdot\cdot,h_{\left|\mathcal{R}\right|}\right) h=(h1,h2,⋅⋅⋅,hr,⋅⋅⋅,h∣R∣)对应上下文特征的输入序列 f = ( f 1 , f 2 , ⋅ ⋅ ⋅ , f r , ⋅ ⋅ ⋅ , f ∣ R ∣ ) f=\left(f_1,f_2,\cdot\cdot\cdot,f_r,\cdot\cdot\cdot,f_{\left|\mathcal{R}\right|}\right) f=(f1,f2,⋅⋅⋅,fr,⋅⋅⋅,f∣R∣)(见图 1b)被作者的分类模块 F d ( ⋅ ; θ d ) \mathcal{F}_d\left(\cdot;\theta_d\right) Fd(⋅;θd)使用。
为了进一步指导我们的模型鉴别细微的变化,我们提出了一种可学习的池化方法(图2c),该方法通过对隐藏状态 h r h_r hr的类似响应进行分组来聚合信息。它的灵感来自于现有的特征编码方法,如NetVLAD(Arandjelovic等,2016)。我们采用这种可微分聚类方法,将隐藏状态h_r的响应软分配到集群k以及它们对VLAD编码的贡献。
γ k ( h r ) = e W k T h r + b k ∑ i = 1 k e W i T h r + b i \gamma_k\left(h_r\right)=\frac{e^{W_k^Th_r+b_k}}{\sum_{i=1}^{k}e^{W_i^Th_r+b_i}} γk(hr)=∑i=1keWiThr+bieWkThr+bk
N v ( o , k ) = ∑ r = 1 ∣ R ∣ γ k ( h r ) h r ( o ) , y ^ = s o f t m a x ( W N N v ) ( 3 ) N_v\left(o,k\right)=\sum_{r=1}^{\left|\mathcal{R}\right|}{\gamma_k\left(h_r\right)h_r\left(o\right)},\hat{y}=softmax\left(W_NN_v\right) (3) Nv(o,k)=∑r=1∣R∣γk(hr)hr(o),y^=softmax(WNNv)(3)
其中, W i W_i Wi和 b i b_i bi是可学习cluster的权重和偏置, T T T表示转置。 γ k ( h r ) \gamma_k\left(h_r\right) γk(hr)项表示将 h r h_r hr分到cluster簇 k k k的软分配(soft assignment), N v N_v Nv是来自所有区域 r ∈ R r\in\mathcal{R} r∈R的隐藏状态的编码响应。在 VLAD 的原始实现中,使用残差的加权和,即 ∑ r = 1 ∣ R ∣ γ k ( h r ) ( h r ( o ) − c ^ k ( o ) ) \sum_{r=1}^{\left|\mathcal{R}\right|}{\gamma_k\left(h_r\right)\left(h_r\left(o\right)-{\hat{c}}_k\left(o\right)\right)} ∑r=1∣R∣γk(hr)(hr(o)−c^k(o))其中 c ^ k {\hat{c}}_k c^k是第 k k k个聚类中心, o ∈ h r o\in h_r o∈hr是隐藏状态响应中的元素之一。我们采用简化版本,对实际响应进行平均,而不是残差(Miech、Laptev和Sivic 2017),这需要更少的参数和计算操作。通过使用可学习的参数 W N W_N WN和 s o f t m a x softmax softmax,将编码响应映射为预测概率 y ^ \hat{y} y^。分类模型 F d \mathcal{F}_d Fd的可学习参数为 θ d = { W i , b i , W N } \theta_d=\left\{W_i,b_i,W_N\right\} θd={Wi,bi,WN}。
我们在广泛使用的八个基准FGVC数据集上全面评估我们的模型:飞机(Maji 2013)、Food 101(Bossard、Guillaumin和Gool 2014)、斯坦福汽车(Krause 2013)、斯坦福狗(Khosla, 2011)、加州理工大学鸟类(CUB-200) (Wah 2011)、牛津花(Nilsback和Zisserman 2008)、牛津宠物(Parkhi 2012)和NABirds(Van Horn et al. 2015)。我们不使用任何边界框/局部注释。因此,我们不与依赖这些的方法进行比较,表1展示了数据集和训练/测试集的划分。作者使用Top-1准确度(%)进行评估。
表1:数据集统计和性能评估。作者提出的模型评估和之前仅使用主要数据集的最佳值。最后一列涉及由多个数据集组成的迁移/联合学习策略。
在我们所有的实验中,我们将图像大小调整为 256 × 256,应用随机旋转 (±15 度)、随机缩放 (1 ± 0.15) 的数据增强技术,然后随机裁剪以从256×256中选择 大小224×224的最终尺寸。基本CNN的最后一个卷积层(7×7像素)使用上采样层(如GAN)增加到42×42,然后输入CAP,得到多个整体区域(integral regions) R \ \mathcal{R} R的池化特征。作者将每个区域的双线性池化大小固定为 w = h = 7,最小宽度为 △ x = 7 \triangle_x=7 △x=7和最小高度 △ y = 7 \triangle_y=7 △y=7。我们使用连续锚点anchors之间7个像素的空间位置间隙来生成 ∣ R ∣ = 27 \left|\mathcal{R}\right|=27 ∣R∣=27个整体区域。这是在考虑准确性和计算复杂性之间的权衡来通过实验确定的。我们在可学习的池化方法中将集群cluster的大小设置为 32。我们应用随机梯度下降(SGD)优化器来优化分类交叉熵损失函数。SGD的初始动量为0.99,初始学习率为1e-4,每50个epoch后乘以0.1。该模型使用NVIDIA Titan V GPU(12 GB)进行了150个epoch的训练。我们使用Keras+Tensorflow来实现我们的算法。
总的来说,我们的模型在除斯坦福犬(Khosla et al.2011)和牛津花(Nilsback and Zisserman 2008)之外的所有数据集上都明显优于SOTA方法(表1)。在表1中,我们将我们的性能与之前的两个最佳(最后两列)进行了比较。其中一个只使用目标数据集(主要)进行训练和评估(过去的最佳),我们的模型就是这样。另一列(最后一列)使用主数据集和其他辅助数据集(如ImageNet、COCO、iNat等)在训练期间对object对象/patch/区域进行联合/迁移学习。值得一提的是,我们只使用主数据集,并且我们在大多数数据集中的性能明显优于使用其他数据集的性能。这证明了所提出的方法在识别子类时能够鉴别细粒度变化。此外,我们只使用一个网络进行端到端训练,作者提出的CAP和分类层添加在基础CNN上。因此,主要计算与基本CNN相关。使用我们的模型,在Food-101(Bossard、Guillaumin和Gool 2014)和NABirds(Van Horn等2015)数据集中,两个最高收益分别为 5.6% 和 3.1%。在斯坦福狗身上,我们的方法(96.1%)明显优于仅使用原始数据的最佳SOTA方法(93.9%)(Ge、Lin和Yu 2019)。然而,当使用选定的ImageNet图像进行联合微调时,其精度将提高到97.1%。同样,在Flowers中,我们的准确率(97.7%)与(Chang 2020)中的相同,后者同时使用主要和次要数据集,与(Xie et al. 2016)中的最佳SOTA方法相比,我们仅使用原始数据实现1.3%的改进。我们还将我们的模型精度与表2中每个数据集的前五个SOTA方法进行了比较。我们的精确度明显高于SOTA方法,SOTA方法使用表2中所有六个数据集中的原始数据和补充数据中的两个数据集。此外,它也在六个数据集(飞机、食品 101、汽车、CUB-200、宠物和 NABirds)中大大高于SOTA方法,这些SOTA方法使用主要和次要数据集。这清楚地证明了我们的模型在识别子类时能够鉴别细微变化,而不需要额外的数据集和/或子网络,因此,在解决FGVC时具有易于实现和少量计算开销的优势。
表2:与最近前五的SOTA方法的精度比较。标记为*的方法涉及针对由多个数据集(主要和次要)组成的对象/块patch/区域的迁移/联合学习策略。有关斯坦福犬和牛津花的结果,请参阅补充文件(https://ardhendubehera.github.io/cap/)
我们使用基准 CNN 架构比较我们方法的性能,例如 ResNet-50(He 2016)、Inception-V3(Szegedy 2016)、Xception(Chollet 2017)和DenseNet121(Huang 2017),以及SOTA轻量级架构,例如NASNetMobile (Zoph 2018) 和MobileNetV2 (Sandler et al. 2018)。性能如表3所示。在所有数据集中,当我们提出的CAP和分类模块被合并时,标准架构和轻量级架构都表现得非常好。甚至我们的模型在标准和轻量级基础CNN上都优于之前的最佳(主要数据),除了在Cars和CUB-200数据集中,我们的标准基础 CNN 模型超过了之前的最佳。我们在表1和表2中的结果是这些主干中最准确的。尽管如此,我们使用任何标准主干网(ResNet50/Inception V3 /Xception; 表3)的模型的准确性都优于SOTA。表3:我们的模型在不同SOTA基础CNN架构下的精度(%)。这些结果之前的最佳精度为;Aircraft:93.0(Chen et al.2019),Cars:94.6(Huang et al.2019b),Dogs:93.9(Ge,Lin,and Y u 2019),CUB:90.3(Ge,Lin,and Y u 2019),Flowers:96.4(Xie et al.2016),Pets:95.9(Huang et al.2019b)。补充文件中包含了鸟类数据集的结果。
在Flowers和Pets数据集中,轻量级NASNetMobile表现最好,MobileNetV2紧随其后(表3)。这可能与数据集大小有关,因为这两个数据集与其他数据集相比最小(表1)。然而,在其他数据集(如飞机、汽车和狗)中,标准和轻量型CNN之间的性能有一点差距。这些轻量级CNN涉及的计算成本显著降低,通过添加我们的模块,性能可以与标准CNN一样具有竞争力。这证明了我们的模块在提高性能及其更广泛的适用性方面的重要性。
表4:在各种SOTA基础CNN(B)中添加我们新颖的CAP (+C)和分类(+E)模块后,我们模型的性能(以%为单位的准确度)。对于所有基础 CNN,观察到的准确度趋势为 (B+C+E) > (B+C) > (B+E) > B。 最终模型的(B+C+E)可训练参数(Param)以百万(M)为单位,相应的每帧推理时间以毫秒(ms)为单位。
我们还评估了上述基础CNN (B)以及我们的提出的CAP (+C)和分类模块(+E)对飞机、汽车和宠物数据集的识别准确度的影响(更多内容见补充)。结果如表4所示。很明显,当我们将模块添加到基础网络时,准确性会提高,即 (B+C+E) > (B+C) > (B+E) > B,从而导致我们的提出的CAP(B+C)具有最大收益。这表明我们的 CAP 的影响。在B+C中,以Inception-V3作为基础CNN的飞机、汽车和宠物数据集的最小增益分别为7.2%、5.7%和5.1%。同样,飞机和汽车的最高增益分别为12.5%和11.3%。这两个数据集相对大于Pets(表1),其中使用ResNet50作为基础CNN获得了最高增益(7.9%)。我们还观察到,在较大的(飞机和汽车)数据集中,轻量级和标准基础CNN之间的基线精度存在显着差距。添加我们的 CAP 后,这些差距会大大减少。当我们添加分类模块(B+C+E)时,准确率进一步提高。通过使用残差较少的NetVLAD对隐藏响应进行分组,然后使用这些编码响应的可学习池化来推断类概率,这证明了将我们的新颖的编码的内在合理性。对于基本CNN,我们使用标准的迁移学习,通过使用相同的数据增强和超参数在目标数据集上对其进行微调。对于我们的模型,我们使用预训练权重来加快收敛速度。我们通过实验发现,与预训练的权重相比,随机初始化需要近两倍的迭代才能收敛(精度相似)。(He、Girshick和Dollár 2019)中显示了类似的观察结果。
我们的模型的精度也使用不同数量的区域 ∣ R ∣ \left|\mathcal{R}\right| ∣R∣进行了比较。它是一个超参数,由 △ x \triangle_x △x和 △ y \triangle_y △y计算得出。 结果如表 5 所示(最佳 ∣ R ∣ = 27 ) \left|\mathcal{R}\right|=27) ∣R∣=27)。我们还在补充文档中提供了 top-N 准确性的结果。top-2 准确率约为 99%,并且与 CNN 类型无关。
表5:我们的模型在不同数量的整体区域中的精度(%)。补充给出了更多结果。
(表 4)它以百万为单位的可训练参数和以毫秒为单位的每个图像推理时间。它还取决于基本CNN类型(例如,标准型与轻量型)。考虑到可训练参数的数量(9.7M)和推理时间(3.5ms),轻量级NASNetMobile的性能与其他方法相比非常有竞争力。二次数据的作用提高了 (Chang et al. 2020; Cubuk et al.2019; Ge, Lin, and Y u 2019; Ge and Y u 2017) 中的准确性。然而,此类模型涉及多个步骤和资源密集型,因此难以实现。例如,(Ge、Lin和Yu 2019)中的3个步骤:1)对象检测和实例分割(Mask R-CNN和CRF),(2)互补局部挖掘(512个ROI),和(3)使用上下文门控进行分类。该模型使用4个GPU进行训练。相反,我们的模型可以在单个GPU(12 GB)上进行训练。图像推断时间为4.1ms。在(Ge、Lin和Yu 2019)中,步骤3为27ms,步骤2为227ms。FCANs(Liu等人,2016)报告其推断时间为150ms。使用27个整体区域和ResNet50作为基础,飞机的训练时间为150个epoch(12 batch size)的∼4.75 小时。在汽车上∼5.7小时,在狗上~8.5小时。
为了理解我们模型的可辨别性,我们使用 t-SNE (Van Der Maaten 2014) 来可视化从基础CNN以及作者提出的CAP和分类模块中提取的特征中的类可分性和紧凑性。我们还分析了我们的CAP在增强基础CNN的鉴别性方面的影响。我们使用飞机的测试图像,并使用Xception作为基础CNN。在图3(a-d)中,很明显,当使用作者提出的CAP+编码模块时,集群之间的距离更远且更紧凑,从而可以清楚地鉴别代表不同子类的各种集群。此外,与图3a所示的没有作者的模块相比,基础CNN的鉴别性显著提高(图3b)。补充材料中显示了更多结果。我们还通过使用(2)中的\alpha_{r,r\prime}和上下文向量c_r可视化其特定类别的注意力感知响应来查看 CAP的内部。图3(e-j)中使用了飞机图像(随机选择的9类)。这些结果清楚地显示了我们的模型在捕获上下文信息以鉴别FGVC问题中的细微变化方面的能力。我们还包括了一些示例,这些示例被我们的模型错误地分类,并在补充中进行了解释。
图3:使用t-SNE来可视化类的可分离性和紧凑性(a-d)。使用Xception的飞机测试图像:a)基础CNN的输出,b)我们的CAP对基础CNN输出的影响,c)我们的CAP的输出,以及d我们模型的最终输出。我们的CAP对类1(e)和类2(f)的特定类注意感知响应来捕获27个整体区域(27×27)之间的相似性。区域1(g)和区域20(h)中的9个特定类的 c r c_r cr。蓝色到红色代表对该区域的关注度从少到多。区域1和类4 (i)的 c r c_r cr内的类特定个体特征响应。 c r c_r cr的t-SNE图(j)表示来自上述9类的图像。
我们提出了一种识别子类的新方法,通过学习在图像中汇集特征时应该看哪里来引入上下文感知注意力的简单公式。我们的注意力允许通过利用整体区域及其重要性来明确整合自下而上的显着性,而不需要边界框/局部注释。我们还提出了一种通过考虑区域之间的语义相关性及其空间布局来编码互补局部信息的特征编码方法。最后,我们的模型在八个基准数据集上的SOTA结果、定量/定性结果和消融研究证明了我们方法的有效性。代码是可以获得的,它的具体地址为:https://ardhendubehera.github.io/cap/。