Abstract
基于原型的小样本学习方法很有希望,因为它们简单而有效地处理任意样本问题,并且从那时起提出了许多与原型相关的工作。然而,这些传统的基于原型的方法通常只使用一个原型来表示一个类,这本质上不能有效地估计一个类的复杂分布。为了解决这个问题,我们在本文中提出了一种新颖的基于局部描述符的多原型网络(LMPNet),这是一个精心设计的框架,可以生成具有多个原型的嵌入空间。具体来说,所提出的 LMPNet 使用局部描述符来表示每个图像,与通常采用的图像级特征相比,它可以捕获图像的更多信息和更微妙的线索。此外,为了减轻原型的固定构造(对样本进行平均)引入的不确定性,我们引入了通道压缩和空间激发(sSE)注意模块,通过端到端学习每个类的多个基于局部描述符的原型。
Introduction
现有的方法通常只使用一个原型来表示一个类,这不足以表示一个类通常复杂的分布。另一方面,由于每个类中的样本有限,通常很难学习有效的原型。此外,这些方法中的大多数都是基于图像级的特征表示。这些特征可能不足以有效地表示类。同时,局部特征的丰富信息没有得到有效利用。在本文中,我们提出了一种新颖的基于局部描述符的多原型网络(LMPNet)来解决上述问题。我们的方法的过程说明如图 1 所示。该图给出了多个基于局部描述符的原型的示意图,以及它与现有的单个基于原型的表示有何不同。
图 1. 支持和查询示例分别有红色和蓝色边框。彩色区域和圆圈分别代表不同的类和原型。左:单个原型是根据相应类的示例的平均位置初始化的,就像在普通原型网络中一样。右:通过加权所有局部描述符,每个学习的原型都是此类的特定视点。我们的 LMPNet 通过使用这个类中的所有局部描述符来学习一个类的多个原型。 (有关此图例中颜色参考的解释,请读者参考本文的网络版本。)
Contributions
(1) 不同于传统的基于单一原型的少样本学习方法,例如原型网络和关系网络,我们提出了一种新的多原型学习方法,采用丰富的局部描述符而不是通常采用的全局特征;
(2) 我们没有使用注意力机制来学习单个图像的强大全局表示,而是创新地使用通道压缩和空间激发 (sSE) 注意力模块 [12] 来学习一个类中的多个基于局部描述符的原型;
(3) 整个框架可以端到端的方式进行训练。我们的方法优于一些基于度量的方法,并在迷你 ImageNet 和分层 ImageNet 上实现了与其他基于元的方法相比的竞争性能。更重要的是,我们在 Stanford Dogs、Stanford Cars 和 CUB-200-2010 上推广的结果优于其他技术,表明我们的方法具有足够的细粒度分类能力。
Method
所提出的 LMPNet 由三个模块组成:特征嵌入模块、多原型学习模块和非参数度量分类模块,如图 2 所示。支持图像和查询图像都首先输入特征嵌入模块 f φ 以获得它们相应的基于局部描述符的表示。具体来说,每个图像都表示为一组局部描述符(详见第 4.1 节)。与查询图像不同,支持集 S 的每个类 Si 都经过多原型学习模块 gφ 进一步处理,以学习该类的多个原型。最后,使用非参数度量分类模块,即最近邻分类器,根据学习到的多个原型对每个查询图像进行分类。
1、带有局部描述符的特征嵌入
局部特征描述在计算机视觉中起着至关重要的作用,即找到一张图像的关键点或稳定的特征表示。在早期的研究中,研究人员主要使用局部描述符的手动设计,如尺度不变特征变换(SIFT)[21]和加速鲁棒特征(SURF)[22]。在深度学习时代,传统的人工特征几乎被深度特征所取代。因此,这里介绍的局部描述符是指基于深度特征的描述符。给定一个输入自然图像 I,卷积神经网络的输出激活图可以表示为一个 3D 张量 T ∈ R h ×w ×d ,它具有 h × w × d 个元素。
从另一个角度看,T 可以看作是一组 l (l = h × w ) d 维局部描述符,即 T = [ T 1 , . . . , T l ] ∈ R d∗l ,其中 Ti 是第 i 个深度局部描述符。这样的描述符对应于图像上的某个空间局部特征(即局部描述符 [23])。我们将局部描述符表示为 X = { x (i, j) } ,其中 (i, j) 表示特征图中的特定位置,并且 i ∈ { 1 , . . . , h } , j ∈ { 1 , . . . , w } , x (i, j) ∈ R d 。例如,如果我们使用 VGG-16 模型 [24] 来提取局部描述符。如果输入图像的大小是 224 × 224 ,那么我们可以在 pool5 层之后得到一个 7 × 7 × 512 的特征图。总的来说,我们可以获得 49 个 512 维的局部描述符。
因此,在提出的 LMPNet 中,我们将嵌入函数表示为具有可学习参数的 fφ (·)。给定图像 I ,fφ(I) 是 h × w × d 的特征图。对于每个查询样本,我们将其特征图表示为局部描述符的集合。即 h × w × d 的特征图可以看作是一组 l (l = h × w ) d 维局部描述符,
其中 xi 是第 i 个局部描述符,并且 i ∈ { 1 , 2 , . . . , l} .
2、多原型学习
与传统的基于单一原型的方法不同,我们设计了一种新颖的注意力机制 𝒈𝝓自适应地为每个类学习多个原型。具体来说,𝒈𝝓 的核心部分是一个通道压缩和空间激励 (sSE) 模块。
其中每个 σ ( v i, j ) 对应于特征图上位置 (i, j) 处信息的相对重要性。通过加权重新确定每个位置的特征可以增强重要位置的特征并削弱不重要位置的特征。
在一个通用的 N-ways K-shot 小样本分类问题中,支持集中的每个类都包含 K 个样本,每个样本的特征图是 c × h × w 的张量。我们可以将每个类的特征图组合为 X ∈ R^K×c×h ×w 张量。然后,我们通过轴变换操作将张量 X 重塑为一个新的特征图 Y ∈ R^c×(K×h ) ×w ,其高度为 K × h ,宽度为 w 。这个新构建的特征图可以直接输入到 sSE 模块中,以获得由注意力机制选择的新特征图 Z ∈ R^c×(K×h ) ×w。
然后,我们从 Z 构造一个类的原型,它可以看作是所有位置的局部描述符的集合,即 Z = [ 𝑧1,1,…..𝑧𝑖,𝑗….𝑧𝐾∗h,𝑤 ] , 其中 zi,j ∈ R^1 ×1 ×c 对应于空间位置 (i, j) 的局部描述符, i ∈ { 1 , 2 , . . . , K × h } , j ∈ { 1 , 2 , . . . , w } 。然后,我们通过对所有位置的本地描述符求和来获得每个类的单个原型表示:
获得的类的多个原型中的每一个都是该类中所有局部描述符的加权平均值。具体来说,一个空间位置的每个局部描述符的权重是由 Wsq 生成的,它本质上起到了对这个空间位置的所有通道进行加权的作用。这样,每个局部描述符(即空间位置)的重要性可以通过 Wsq 自适应地学习。然后,我们使用多个 Wsq 得到多个原型 P = [ p1 , p 2 , . . . , p n } , 其中 p k ∈ R^c , k ∈ { 1 , 2 , . . . , n ] 为一类。通过上述方法,我们可以使用 LMPNet 自适应地学习不同类别的多个原型。
通过使用提出的多原型学习模块 gφ,我们可以获得查询样本 Q = [ q1 , q2 , . . . , qm ] 和每个类的多个原型 P = [ p 1 , p 2 , . . . , p n] 。分类过程涉及测量 Q 和 P 之间的相似性,并为此查询样本 Q 分配支持集中最相似的类。
具体来说,在计算 Q 和 P 之间的相似度时,对于每个 qj ,使用余弦相似度从 P 的原型集中选出最相似的原型 pj ∗。也就是说,
其中 Cos ( q j , p i ) 表示 q j 和 p i 之间的余弦相似度, p j ∗ 是 q j 在 P 的原型集中的最近邻。接下来,我们将 q j 和 p j * 之间的余弦相似性作为 Q 和类 P 之间的局部相似性。最后,我们只需要使用一个累加操作就可以得到 Q 和 P 之间的全局相似度,可以表示如下:
其中 Sim ( Q , P )只是 Q 和 P 之间的全局相似性。通过这种方式,我们可以计算出 Q 与支持集中每个类之间的所有相似性,并根据最相似的类对 Q 进行分类。