本篇分享ECCV2024论文Cross-DomainFew-ShotObjectDetectionviaEnhancedOpen-SetObjectDetector,跨域小样本物体检测CD-FSOD新数据集、CD-ViTO新方法(数据代码均已开源)。
作者单位:复旦大学,苏黎世联邦理工学院,INSAIT,东南大学,BOE科技
中稿会议:ECCV2024
1研究目的跨域小样本学习任务(Cross-DomainFew-ShotLearning,CD-FSL)解决的是源域与目标域存在领域差异情况下的小样本学习任务,即集合了小样本学习与跨域两个任务的难点问题:1)源域S与目标域T类别集合完全不同,且目标域T中的类别仅存在少量标注样本,例如1shot,5shot;2)S与T属于两个不同领域,例如从自然图像迁移到医疗图像。
大多数的现有方法均集中于研究分类问题,即Cross-DomainFew-ShotClassification,但是同样很重要的物体检测任务(ObjectDetection,OD)却很少被研究,这促使了我们想要探究OD问题在跨域小样本的情况下是否也会遭遇挑战,以及是否会存在跟分类任务表现出不同的特性。
与CD-FSL是FSL在跨域下的分支类似,跨域小样本物体检测(Cross-DomainFew-ShotObjectDetection,CD-FSOD)同样也可以堪称是FSOD在跨域下的分支任务,所以我们先从经典的FSOD开始分析:
大多数的FSOD方法都可以被粗略地划分为1)meta-learningbased,典型方法包括Meta-RCNN;2)finetuningbased,例如TFA,FSCE,DeFRCN,然而近期一个名为DE-ViT的开放域方法通过基于DINOv2构建物体检测器同时在FSOD以及开放域物体检测(OVD)上都达到了SOTA的效果,性能明显高于其他的FSOD方法,因此这引发了我们思考:
现有的FSOD方法,尤其是SOTA的DE-ViTopen-setdetector能不能在跨域的情况下仍表现优异?
如果不能,什么是难点问题,以及我们是否有办法能够提升open-setdetector的性能?
我们先用以下的图来揭示一下问题的答案:
左图:哪怕是SOTA的open-setdetectorDE-ViT(绿色星形)在跨域泛化的情况下性能也会出现急剧下降;
左图:我们基于DE-ViT搭建的CD-ViTO方法(橙色星形)能够使原本性能下降的模型得以进一步提升。
右图:相比于in-domain的小样本物体检测,跨域小样本物体检测通常会面临三个问题:
目标域T的类间距离(ICV)通常较少;
目标域的图像可能会出现前景与背景边界模糊(IndifinableBoundary,IB);
目标域T得图像相交于源域S而言视觉风格(style)发生变化。
ICV、IB、Style也成为了我们用于衡量不同数据集在跨域下的特性。
2主要贡献首先总结一下我们在解答两个问题的过程中的主要工作及贡献:
2.1Benchmark,Metrics,andExtensivestudy:为了回答问题1,即研究现有的物体检测器能不能泛化至跨域小样本物体检测任务中,
我们研究了CD-FSOD任务下的三个影响跨域的数据集特性:Style,ICV,IB;
我们提出了一个CD-FSOD算法评测数据集,该数据集包含多样的style,ICV,IB;
我们对现有物体检测器进行了广泛研究,揭示了CD-FSOD带来的挑战。
2.2NewCD-ViTOMethod:为了回答问题2,即进一步提升基础DE-ViT在CD-FSOD下的性能,我们提出了一个新的CD-ViTO方法,该方法提出三个新的模块以解决跨域下的smallICV,indefinableboundary,以及changingstyles问题。
LearnableInstanceFeatures:通过将初始固定的图像特征与目标类别之间进行对齐,通过增强特征可分辨程度来解决目标域ICV距离小的问题。
InstanceReweightingModule:通过给不同的图像设置不同的权重,使得严具有轻微IB的高质量实例分配更高的重要性,从而缓解显著的IB问题;
DomainPrompter:通过合成虚拟领域而不改变语义内容来鼓励模型提升对不同style的鲁棒性。
3CD-FSOD数据集ExtensiveStudy3.1CD-FSOD数据集如下图所示为我们构建的CD-FSOD数据集,该数据集以MS-COCO作为源域S,以ArTaxOr、Clipart1K,DIOR,DeepFish,NEU-DET,UODD作为六个不同的目标域T;
我们也分析并在图中标注了每个数据集的Style,ICV,IB特征,每个数据与数据之间也展现了不同的数据集特性。
所有的数据集都整理成了统一的格式,并提供1shot、5shot、10shot用于模型测评。
数据集更多的介绍,比如数据类别数,样本数等可以在论文中找到细节。
3.2ExtensiveStudy我们对现有的四类目标检测器进行了实验,包括:
典型的FSOD方法:Meta-RCNN、TFA、FSCE、DeFRCN
现有的CD-FSOD方法:Distill-cdfsod
基于ViT的方法:ViTDeT-FT
开放域方法:Detic(-FT),DE-ViT(-FT)(DE-ViT仅利用视觉信息,Deti则依赖视觉-文本相似性)
其中“-FT”表示我们用目标域T的少量样本对方法进行了微调。
我们结合实验结果对这个任务以及相关方法展开了详细的分析,主要有以下这几点结论:
现有FSOD方法可以泛化到跨域问题吗?A:不能
基于ViT的方法会比基于ResNet的方法好吗?A:看情况
开放域方法能够直接用于应对CD-FSOD问题?A:不能
开放域方法的性能可以进一步得到提升吗?A:可以
不同的开放域方法是否呈现不同的特性?A:是的
Style,ICV,IB是如何影响domaingap的?A:在分类里影响巨大的style对于OD任务而言影响相对较少;ICV有较大影响但是可以被有效缓解;IB是这三者中最具挑战的。
(详细的分析就不在这里展开了,感兴趣的朋友可以去看看文章
4CD-ViTO方法主要实验我们方法的整体框架结构图如下所示:
整体来看,我们的方法是基于DE-ViT搭建的(图中蓝色块),我们首先将DE-ViT方法简化为图中所示的几个模块主要包括PretrainedDINOv2ViT,RPN,ROIAlign,InstanceFeatures,DectionHead,One-vs-RestClassificationHead。DE-ViT的核心想法是利用DINOv2提取出来的视觉特征对queryimageboxes与supportimages中所构建出来的类别prototypes进行比较,从来进行分类和定位。
基于DE-ViT方法,我们提出了三个新的模块(图中黄色块)以及finetune(图中火苗)以搭建我们的CD-ViTO。如contribution章节所描述,每个模块都各自对应解决CD-FSOD下存在的一个挑战。
4.1LearnableInstanceFeatures原本的DE-ViT首先利用DINOv2获取instancefeatures,然后简单对同类特征求和的方式得到support的classprototypes。然而在面对目标域类别之间可能很相似的情况,直接使用这种预训练的模型所提取出的特征会导致难以区分不同类别。
因此我们提出将原本固定的特征设置为可学习参数,并通过结合finetune方法将其显式地映射到目标域类别中,以此增加不同类之间的特征差异程度,缓解ICV问题。
我们对比了使用该模块前后的类间cosine相似性,结果说明我们的模块可以降低类间相似度,从而提升ICV。
4.2InstanceReweightingModule图像模糊边界的问题本身很难得到解决,这个模块的主要想法是通过学习可调整的权重给不同质量的样本赋不同的权重,使得严重IB的图像被抑制,没有或者轻微IB地图像被鼓励。
模块的设计如框架图右上所示,主要包含一个可学习的MLP。同样的,我们也对该模块做了可视化分析,我们按照所分配到的权重从高到低给图像排序,得到如下结果。从图中可见,前后景边缘模糊的图像得到的权重要低于边缘清晰的图像。
4.3DomainPrompterDomainPrompter的设计主要是希望方法能够对不同的domain鲁棒,如框架图右下所示,在原有objectprototype的基础上,我们额外引入数量为维度为D(等于prototype维度)的虚拟domains变量作为可学习参数。通过学习和利用这些domains,我们希望最终达到:
不同domain之间相互远离,增加多样性(domaindiversityloss)
添加不同domain至同一类别prototype所生成得到的两个变种仍为正样本,添加不同domain至不同类别prototype生成得到的两个变种为负样本(prototypeconsistencyloss)
两个loss与finetuning所产生的loss叠加使用进行网络的整体训练。如下T-SNE可视化图说明我们学习到的domains之间相互远离;叠加不用domains至classprototype不影响语义变化。
Finetuning:作为简单但有效的迁移学习方法,我们也采用了在目标域T上对模型进行微调的思路,文章附录部分有提供不同finetune策略的不同性能表现,我们主方法里采用的是仅微调两个头部。
4.4主要实验我们在1/5/10shot上与其他方法进行了对比实验,实验说明经过优化后的CD-ViTO方法在大多数情况下都优于其他的对比方法,达到了对基本DE-ViT的有效提升,构建了这个任务的新SOTA。
code: