【CVPR2024】Few-Shot Object Detection with Foundation Models
【CVPR2024】Few-Shot Object Detection with Foundation Models
xiuqhou【CVPR2024】Few-Shot Object Detection with Foundation Models
机构:哥伦比亚大学、中佛罗里达大学
作者简介:Ser-Nam Lim,马里兰大学帕克分校博士学位,2018年-2023年在Meta(前身Facebook)参与计算机视觉、NLP和其他AI领域的研究,研究内容主要是确保航空和电力行业的安全、检测Meta平台上的错误信息,最近专注于AI用于对用户内容的推荐,包括大语言模型(LLM)和计算机视觉交叉点的搜索引擎,2023年秋季加入中佛罗里达大学。代表工作为Visual prompt tuning。
本文主要目的是提高小样本目标检测的精度,用DINOv2预训练的模型作为视觉backbone,使用大语言模型(LLM)来对类别、查询图像这两种输入信息进行上下文小样本学习。使用精心设计的语言指令提示LLM来为每个候选区(proposal)进行分类,所使用的上下文信息包括proposal-proposal关系、proposal-class关系、class-class关系。所提出的FM-FSOD方法在多个FSOD基准数据集上取得了SOTA性能。
文章贡献/创新点
- 文章研究基于基础模型的小样本目标检测,重点关注视觉特征提取和上下文proposal分类。
- 文章使用了基于DINOv2的全Transformer检测框架实现对大量样本和小样本类别的高泛化性。
- 使用大语言模型简化query和support之间的建模,自动学习丰富的上下文信息。
- 在PASCAL VOC和MSCOCO小样本评测基准上取得了SOTA性能。
小样本目标检测(FSOD)任务定义
FSOD任务有基类和新类两种类别,并且,基类有足够多的样本而新类只有少量样本。对于-shot小样本任务,数据集中的每个新类只有个检测框标注,通常。
模型结构
模型采用元学习的训练架构,每次训练时会同时向网络输入单个query图片和多个support图片(包含个类别,每个类别个检测框标注,即-way--shot设置)。模型包含三个子模块,其中视觉特征提取器用于提取query和support的视觉特征,候选框生成器用于从query图片中生成支撑类别感知的proposal,小样本候选框分类基于原型信息来为每个proposal进行分类。
- 支撑类别感知:常规的检测直接提取query图片特征,基于提取的特征进行分类和检测。小样本学习会分别提取query和support图片的特征,并对这两种特征进行交互,得到support类别感知的query特征,将增强后的query特征进行分类和检测。
- 原型:相同类别的目标特征的平均,可以看作某个类别的全局特征。
视觉特征提取器
特征提取器是DINOv2预训练得到的ViT,对于query图片和相应的-way--shot支撑图片,分别提取特征表示和。
其中支撑集图片特征是为了进一步构建类别原型,因此需要图片中的目标的类别信息和目标对应的特征。目标的类别信息来自真值标注,目标特征使用RoIAlign根据检测框位置标注从中切割下来。最后得到个类别,每个类别个特征。将相同类别的特征求平均,得到个类别原型。
FSOD任务中,类别信息和特征都是针对具体的物体而不是整张图片。如果支撑图片存在多个物体,在输入网络时仅会保留单个标注用于RoIAlign提取特征。
文章选择DINOv2训练的backbone,主要有两个原因:
- DINOv2是仅针对视觉的自监督学习模型,包括全局图像级和局部patch级的两种监督。patch监督会让模型对定位敏感,有助于下游任务。
- DINOv2在大规模数据集上预训练,文章发现微调没有提升性能,因此冻结了全部参数。
这里存在一个问题是,有可能DINOv2在预训练时就已经见过了某些小样本数据,文章对此的解释是,即便DINOv2见过某些小样本数据,将知识从预训练迁移到下游任务也是比较有挑战的。
候选框生成
文章先使用DINOv2提取得到query图片的patch token,将这些特征输入Deformable Transformer Encoder,得到增强后的图片特征。作者计算它与DINOv2提取的类别原型之间的交叉注意力,得到增强后的图片特征。解码器阶段首先生成初始的物体query,然后将其送入Transformer Decoder。Deocder每一层都会计算之间的自注意力、和图像特征之间的交叉注意力。经过Decoder之后,每个query会通过简单的线性层预测Bounding box坐标,其中query的数量。
这里其实就是常规的Deformable DETR做法,只是作者在Encoder阶段增加了图像特征与类别原型之间的交叉注意力,可能是参考了MetaDETR。
小样本候选框分类
上面为每个query预测了bounding box坐标,但没有预测其分类结果。在分类过程上,传统的小样本学习方法是通过设计度量网络来度量proposal和支撑类别之间的相似性,将proposal分类成支撑类别中的某一类或“空”类别。
本文直接提出用大语言模型(LLM)来进行分类。首先为LLM tokenizer增加类别token(<class_1>到<class_80>)和背景类别token(<class_bg>),然后设计了下面语言指令送入大语言模型。
1 | Please classify each of the proposals in <proposal 1>...<proposal 300>. |
其中的<proposal_l>
替换为DETR提取出的proposal特征,<visual prototype>
替换为DINOv2提取的类别原型。这两种特征在送入LLM之前需要使用单独的单层线性层将维度对齐。文章使用Vicuna作为大语言模型,根据上述指令会生成每个proposal相应的<class_id>
token,在解码生成的token后,将其与候选框生成部分的预测结果融合,就可以得到最终的检测输出。
训练框架
模型训练分为三个阶段:
- 第一阶段在基类上预训练DINOv2作为backbone的Deformable DETR和,即候选框生成模块。
- 第二阶段,在基类上训练整个模型,其中Deformable DETR和DINOv2用第一阶段的权重进行初始化,LLM用Vicuna模型初始化。模型的损失有两部分,一部分是常规的Deformable DETR回归损失,另一部分是大语言模型的损失。本文首先用二分图匹配将label和proposal进行匹配,将匹配上的label作为proposal的真值。得到真值后,用next-token预测损失去训练大语言模型。
- 第三阶段,在新类上微调模型。文章首先在平衡数据集上(下采样的基类+新类)微调候选区域生成模块(与第一阶段相同),然后用平衡数据集(基类+上采样的新类)去微调LLM(与第二阶段相同)。
新类只有少量数据,而训练大语言模型需要大量样本,因此需要对新类数据进行上采样,扩充其数据量,再和基类组成平衡数据集。上采样方式参考下面论文:
[1] Jiawei Ma, Yulei Niu, Jincheng Xu, Shiyuan Huang, Guangxing Han, and Shih-Fu Chang. Digeo: Discriminative geometry-aware learning for generalized few-shot object detection. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 32083218, 2023. 5, 6, 7
实验结果
FM-FSOD在COCO数据集上测试了两种设置:FSOD和GFSOD。FSOD指仅评测新类上的mAP,GFSOD既评测新类与基类的综合mAP,后者更能强调综合性能。
在FSOD设置下,FM-FSOD在10-shot上性能略低于DE-VIT,在30-shot上性能高于DE-VIT。
在GFSOD设置下,FM-FSOD性能高于DE-VIT。
VOC数据集上FM-FSOD并没有和DE-VIT对比,从和其他方法的对比结果来看,FM-FSOD在较大时性能提升更多,在交小时比Meta-DETR性能差。可能时由于LLM需要较多的训练样本有关,仅通过上采样新类样本并不能充分满足LLM训练的需求。