Few-shot
目标检测(FSOD
)旨在在有限标注实例的情况下检测新颖对象,在近年取得了显著进展。然而,现有方法仍然存在偏见表示问题,特别是在极低标注情况下的新颖类别。在微调过程中,一种新颖类别可能会利用来自相似基础类别的知识来构建自己的特征分布,导致分类混淆和性能下降。为了解决这些挑战,论文提出了一种基于微调的FSOD
框架,利用语义嵌入来实现更好的检测。在提出的方法中,将视觉特征与类名嵌入对齐,并用语义相似性分类器替换线性分类器,训练每个区域提议收敛到相应的类别嵌入。此外,引入了多模态特征融合来增强视觉-语言通信,使新颖类别可以明确地从训练有素的相似基础类别中获得支持。为了避免类别混淆,提出了一种语义感知最大间隔损失,自适应地应用于超出相似类别的间隔。因此,论文的方法允许每个新颖类别构建一个紧凑的特征空间,而不会与相似基础类别混淆。来源:晓飞的算法工程笔记 公众号,转载请注明出处
论文: Semantic Enhanced Few-shot Object Detection
Introduction
深度神经网络在目标检测方面最近取得了巨大进展。然而,深度检测器需要大量标注数据才能有效识别一个对象。相比之下,人类只需要少量样本就能识别一类对象。常规检测器在少样本情境下容易出现过拟合问题,缩小常规检测与少样本检测之间的性能差距已成为计算机视觉领域的一个关键研究领域。
与少样本分类和常规目标检测相比,少样本目标检测(FSOD
)是一项更具挑战性的任务。在给定具有足够数据量的基础类别和仅有少量带标签边界框的新颖类别的情况下,FSOD
致力于学习基础类别上的基础知识,并在新颖类别上具有良好的泛化能力。早期的FSOD
方法倾向于遵循元学习范式,学习与任务无关的知识,并快速适应新任务。然而,这些方法需要复杂的训练过程,并常常在实际环境中表现不佳。另一方面,基于微调的方法采用简单而有效的两阶段训练策略,并取得可比较的结果。
近年来,许多研究集中在基于微调的FSOD
上,旨在将从丰富基础数据中学到的知识转移到新颖类别。TFA
揭示了在微调期间简单冻结最后几层的潜力,为基于微调的方法奠定了基础。DeFRCN
通过缩放和截断梯度来解耦分类和回归,并实现了卓越的性能。尽管它们取得了成功,仍然存在两个潜在问题:
- 先前基于微调的
FSOD
方法在训练样本极为有限时会出现性能下降,例如,当每个类别只有一个带标注的边界框时。只有一个对象无法很好地代表外观多样的类别是合理的,这种偏向性表示严重损害了新颖类别的性能。 FSOD
的性能继续受到新颖类别和基础类别之间混淆的威胁。仅有少量带标注样本时,新颖类别几乎无法构建紧凑的特征空间。这可能造成新颖类可能散布在类似基础类别良好构建的特征空间中,导致分类混淆。
论文提出一个基于微调的框架,利用语义嵌入来提高对新颖类别的泛化能力。该框架在微调阶段用语义相似分类器(SSC
)取代线性分类器,通过计算类名嵌入和提议物体区域特征之间的余弦相似度产生分类结果。此外,论文提出了多模态特征融合(MFF
)来对视觉和文本特征进行深层融合。论文还在原始交叉熵损失之上应用了语义感知最大间隔(SAM
)损失,以区分与自身相似的新颖类别和基础类别,如图1
所示。在微调过程中,SSC
和MFF
通过经典的Faster R-CNN
损失和SAM
损失以端到端的方式进行优化。
论文的贡献可总结如下:
- 提出一个利用语义信息来解决少样本性能下降和类别混淆问题的框架。
- 为了解决这些问题,设计了三个新模块,即
SSC
、MFF
和SAM
损失。这些模块提供无偏表示,并增加类间分离。 - 对
PASCAL VOC
和MS COCO
数据集进行了大量实验,证明方法的有效性。结果表明,论文的方法将最先进性能大幅提升。
Method
FSOD Preliminaries
论文遵循之前的工作中的Few-shot
目标检测(FSOD
)设置。将训练数据分为基础集合 $\mathcal{D}_b$ 和新颖集合 $\mathcal{D}_n$ ,其中基础类别 $\mathcal{C}_b$ 具有丰富的标记数据,而每个新颖类别 $\mathcal{C}_n$ 只有少量注释样本。基础类别和新颖类别之间没有重叠,即 $\mathcal{C}_b \cap \mathcal{C}_n = \varnothing$ 。在迁移学习的背景下,训练阶段包括在 $\mathcal{D}_b$ 上的基础训练和在 $\mathcal{D}_n$ 上的新颖微调。目标是利用从大规模基础数据学习到的通用知识快速适应新颖类别,期望能够检测测试集中 $\mathcal{C}_b \cup \mathcal{C}_n$ 类别中的对象。
论文的方法可以以即插即用的方式应用于任何基于微调的Few-shot
检测器,并将论文的方法与之前的最先进方法DeFRCN
进行集成以进行验证。与TFA
不同的是,DeFRCN
在第二阶段冻结大多数参数以防止过拟合,提出了Gradient Decoupled Layer
来截断RPN
的梯度并调整两个阶段中R-CNN
的梯度。
Semantic Alignment Learning
论文旨在利用语义嵌入,为所有类别提供无偏的表示,以解决性能下降问题,特别是在极低样本情景下。
Semantic Similarity Classifier
论文的Few-shot
检测器建立在流行的两阶段目标检测器Faster R-CNN
之上。在Faster R-CNN
中,提取区域建议,并将其传递给框分类器和框回归器以生成类别标签和准确的框坐标。以往基于微调的Few-shot
目标检测方法简单地通过随机初始化来扩展分类器,以泛化到新颖类别。然而,仅给定一两个新颖对象的标记样本时,检测器很难为每个新颖类别构建无偏的特征分布,特别是当新颖样本不够具有代表性时。新颖类别的无偏特征分布将导致令人不满意的检测性能。
为了克服上述障碍,论文提出了一个语义相似度分类器,并使用固定的语义嵌入进行识别,而不是线性分类器。这是基于这样一个观察结果:类名嵌入与大量的视觉信息内在地对齐。当训练样本极为有限时,类名嵌入可作为良好的类中心。
首先通过一个投影器将区域特征与语义嵌入进行对齐,然后利用投影后的区域特征与类名嵌入之间的余弦相似度来生成分类得分 $\mathbf{s}$ 。
$$ \begin{equation} \mathbf{s}=\text{softmax}(\text{D}(\mathbf{t}, \mathbf{Pv})) \label{eq:projection} \end{equation} $$
其中, $\mathbf{v}$ 是区域特征, $\mathbf{P}$ 是投影器, $\mathbf{t}$ 是类名嵌入, $\text{D}$ 表示距离测量函数。
Multimodal Feature Fusion
语义相似度分类器学习将视觉空间中的概念与语义空间对齐,但仍然独立地处理每个类别,并且在除了最后一层之外,不进行模态之间的知识传播。这可能对充分利用类间相关性构成障碍。因此,论文进一步引入多模态特征融合,以促进跨模态通信。融合模块基于交叉注意力机制,在区域特征 $\mathbf{v}$ 和类名嵌入 $\mathbf{t}$ 上进行聚合。从数学上讲,该过程如下所示:
$$ \begin{equation} q_v=W^{(q)}\mathbf{v}, k_t=W^{(k)}\mathbf{t}, v_t=W^{(v)}\mathbf{t} \label{eq:attn_proj} \end{equation} $$
$$ \begin{equation} attention=\text{softmax}(q_vk_t^T/\sqrt{d}) \label{eq:x-attn} \end{equation} $$
$$ \begin{equation} \hat{q_v}=q_v+attention\cdot v_t \label{eq:residual} \end{equation} $$
其中, $W^{(q)}, W^{(k)}, W^{(v)}$ 是交叉注意力的可训练参数, $d$ 是中间通道的大小。
多模态融合模块确保在图像特征提取的早期阶段与文本特征进行充分的通信,从而丰富了区域特征的多样性。此外,它提高了利用语义信息中包含的类间相关性的效果。
Semantic-aware Max-margin Loss
语义相似度分类器将视觉特征与语义嵌入对齐,导致新类别的特征分布无偏。然而,语义嵌入中包含的类间相关性也可能导致相似基类和新类之间的类别混淆。为了避免这种情况,论文提出了一种基于语义感知的最大间隔损失,根据它们的语义关系在两个类别之间应用自适应边界。
在先前的研究中,分类分支通过端到端的交叉熵损失进行优化,每个区域特征被训练成靠近类中心。给定第 $i$ 个区域特征 $v_i$ 和标签 $y_i$ ,分类损失计算如下。
$$ \begin{equation} L_{cls}=-\frac{1}{n}\sum_{i=1}^{n}\text{log} \ \frac{e^{\text{D}(v_i, t_{y_i})}}{\sum_{j=1}^{n}e^{\text{D}(v_i, t_{y_j})}} \label{eq:cross_entropy} \end{equation} $$
其中 $t_{y_i}$ 是 $y_i$ 的类名嵌入。
论文用冻结的语义嵌入替换线性分类器。因此,新类别可以从训练良好的相似基类中学习。然而,如果两个类别之间的语义关系非常接近,这也可能造成混淆。因此,论文在交叉熵损失上添加一个自适应边界,将可能混淆的类别彼此分开。从数学上讲,语义感知最大间隔损失计算如下。
$$ \begin{equation} L_{sam}=-\frac{1}{n}\sum_{i=1}^{n}\text{log} \ p_i \label{eq:max-margin1} \end{equation} $$
其中 $p_i$ 表示分类分数,
$$ \begin{equation} p_i=\frac{e^{\text{D}(v_i, t_{y_i})}}{e^{\text{D}(v_i, t_{y_i})} + \sum_{j\neq i}^{n}e^{\text{D}(v_i, t_{y_j}) + m_{ij}}} \label{eq:max-margin2} \end{equation} $$
其中 $m_{ij}$ 表示应用于类别 $i$ 和类别 $j$ 之间的边界,
$$ \begin{equation} m_{ij}= \begin{cases} \text{cosine}(t_i, t_j)& \text{cosine}(t_i, t_j)-\gamma>0 \\ 0& \text{cosine}(t_i, t_j)-\gamma\leq0 \end{cases} \label{eq:max-margin3} \end{equation} $$
其中 $\gamma$ 是语义相似性的阈值。对于每个类别,选择仅将前 $k$ 个最相似的类别应用边界,以避免不必要的噪声。
Experiments
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。