论文:
https://arxiv.org/abs/2107.12636
代码:
https://github.com/encounter1997/SFA
将目标检测看作set prediction问题
DETR将目标检测看作一种set prediction问题,并提出了一个十分简洁的目标检测pipeline,即CNN提取基础特征,送入Transformer做关系建模,得到的输出通过二分图匹配算法与图片上的ground truth做匹配。
DETR的方法详情如上图所示,其关键的设计包含:
1. Transformer
CNN提取的特征拉直(flatten)后加入位置编码(positional encoding)得到序列特征,作为Transformer encoder的输入。Transformer中的attention机制具有全局感受野,能够实现全局上下文的关系建模,其中encoder和decoder均由多个encoder、decoder层堆叠而成。每个encoder层中包含self-attention机制,每个decoder中包含self-attention和cross-attention。
2. object queries
如上图所示,transformer解码器中的序列是object queries。每个query对应图像中的一个物体实例( 包含背景实例 ϕ),它通过cross-attention从编码器输出的序列中对特定物体实例的特征做聚合,又通过self-attention建模该物体实例域其他物体实例之间的关系。最终,FFN基于特征聚合后的object queries做分类的检测框的回归。
Visualization of all box predictions on all images from COCO 2017 val set.
值得一提的是,object queries是可学习的embedding,与当前输入图像的内容无关(不由当前图像内容计算得到)。论文中对不同object query在COCO数据集上输出检测框的位置做了统计(如上图所示),可以看不同object query是具有一定位置倾向性的。对object queries的理解可以有多个角度。首先,它随机初始化,并随着网络的训练而更新,因此隐式建模了整个训练集上的统计信息。其次,在目标检测中每个object query可以看作是一种可学习的动态anchor,可以发现,不同于Faster RCNN, RetinaNet等方法在特征的每个像素上构建稠密的anchor不同,detr只用少量稀疏的anchor(object queries)做预测,这也启发了后续的一系列工作[4]。
3. 将目标检测问题看做Set Prediction问题,用二分图匹配实现label assignment
DETR中将目标检测问题看做Set Prediction问题,即将图像中所有感兴趣的物体看作是一个集和,要实现的目标是预测出这一集和。也就是说在DETR的视角下,目标检测不再是单独预测多个感兴趣的物体,而是从全局上将检测出所有目标所构成的整体作为目标。对应的,DETR站在全局的视角,用二分图匹配算法(匈牙利算法)计算prediction与ground truth之间的最佳匹配,从而实现label assignment。以上过程中需要定义什么是最佳匹配,也就是对所有可能的匹配做排序,DETR将一种匹配下模型的总定位和分类损失作为评判标准,损失越低,匹配越佳。注意,该匹配过程是不回传梯度的。DETR这种从全局的视角来实现label assignment的范式也启发了后续的一系列工作[5]。
在训练过程中,DETR采用了deep supervision做为辅助损失,即在每个decoder layer的输出上都做预测和监督。DETR一般需要更长的训练时间达到收敛,例如在coco上需要300-500个周期收敛到比较好的结果。在性能上DETR相比于faster rcnn这类检测器能够在大物体上实现更好的检测,而对于小物体而言性能较差,具体性能如下表所示。
事实上DETR可以很容易的拓展到全景分割任务上,类比于Mask RCNN在Faster RCNN基础上加入mask预测分支实现实例分割。作者在DETR的Prediction Head分支上添加mask分支来实现全景分割。作者基于object query的attention map做mask分支预测,并结合CNN backbone的层级特征构建类似FPN结构的mask预测分支,如上图所示。
尽管本文introduction的写作是从构建端到端目标检测器,去除现有目标检测框架中复杂的手工设计这一角度出发的,但本文的意义远不止如此,下面将介绍DETR为目标检测社区带来的新思考。
二、DETR在目标检测领域带来的新思考
Deformable DETR对DETR的两处缺陷(收敛速度慢和对小物体的检测性能不佳)进行分析和改进,作者指出这两点缺陷事实上源自相同的原因:Transformer在处理图像特征时存在缺陷。具体来说,在初始化时transformer中每个query对所有位置给予几乎相同的权重,这使得网络需要经过长时间的训练将attention收敛到特定的区域。同时,由于transformer中attention机制随着图像中像素数目的增加呈平方增长,使用大的特征图输入encoder的代价极其高昂。因此,DETR只采用32倍下采样的特征图作为输入,导致其对小物体的检测性能不佳。
Deformable DETR
DETR存在的一个显著问题是模型收敛慢,训练周期长,这主要是因为随机初始化的Transformer需要很长的训练时间才能收敛。那么我们能否利用无监督的预训练来提升DETR中Transformer的收敛速度呢?为了实现这一目标,UP-DETR提出一个新的pretext task——multi-query localization(如图所示)来预训练DETR中的object query,以此来预训练Transformer的定位能力。同时,作者固定CNN backbone,并利用特征重建损失来保留特征的语义性,从而避免对定位的预训练伤害检测模型的分类能力。
在完成预训练后,UP-DETR可以在检测任务上fine-tune,该fine-tuning过程与DETR原文的训练过程一致。如图,可以看出经过预训练后,UP-DETR能够取得比DETR更快的收敛速度以及更由的检测性能。
更详细的介绍请参见原作者的知乎回答:如何评价华南理工和微信AI提出的无监督预训练检测器UP-DETR?
这里只简单介绍此方向上的两篇文章,更详细的介绍可以参见以下文章:如何用Transformer来做目标检测?一文简述DERT及其变体
以上的Detection Transformer还依赖于CNN backbone做特征提取,类似于ViT中的混合模型。那么能否类似ViT,只用BERT模型,以最少的inductive bias做目标检测呢?预训练的ViT在目标检测任务上的迁移性如何呢?
YOLOS对以上问题进行了探究,相较于ViT,YOLOS只是将单个Cls token替换为多个Det Token。
实验表明,YOLOS能够取得非常promising的结果,但模型的scaling特性与CNN结构不尽相同。更多细节请参见论文原文。
少量可学习的proposal反映了图像中物体位置的统计信息,然而仅使用4位的位置向量作为proposal无法反映物体的形状、姿态等细粒度的特征。相比之下,DETR中的object queries采用256维的嵌入向量来反映物体的特征,受此启发,作者在可学习的proposal基础上引入proposal feature来编码物体的精细特征,其与proposal数量相等,并存在一一对应关系。为了有效利用proposal feature,并为每个物体实例学习特异性的预测头,作者提出dynamic head,如下图所示。
该算法流程的伪代码如下图所示,proposal feature经过映射后得到1x1卷积核的参数(动态网络),与输入的物体实例特征做交互并输出。
最终,如图所示,Sparse RCNN能够在较短的训练周期下到达比500个周期训练的DETR更好的实验结果,并且性能优于Faster RCNN和RetinaNet等经典算法。
对于图像分类、语义分割等问题,我们很容易建立输入图像和标签之之间的关联。例如,对于分类而言,模型只需要将输入与Ground Truth类别向量对应起来即可;而对于语义分割而言,由于模型输入和Ground Truth分割图之间存在空间对应关系,可以很容易的将原图上的像素与Ground Truth上相同像素位置的标签对应起来。对比之下,目标检测中输入图像和输出标签之间没有直接的对应关系:一张图片可能包含一个物体,也可能包含多个物体;一个像素可能在零个/一个检测框内,也可能在多个检测框内。
在DETR之前,大部分基于目标检测器根据像素(或anchor)与Ground Truth之间的局部空间位置关系(如IoU)来实现标签的分配(也因此造成了很多重复检测的存在)。而DETR采用二分图匹配方式,从全局的视角,在模型输出与标签之间建立一一对应的关系。
受到这一做法的启发,OTA(Optimal Transport Assignment)[5] 提出从全局的视角来实现label assignment。具体来说,它将每个GT instance看作一个supplier,将每个anchor看作一个demander,利用分类和定位损失计算一个supplier到一个demander的传输距离(即将一个GT分配给一个特定anchor的损失),随后利用Sinkhorn-Knopp计算GT到anchor之间的最优传输(即最佳的label assignment)。整个OTA算法流程如下图所示:
个人认为OTA与DETR中利用二分图匹配实现label assignment没有显著区别,不过将GT和anchor分别理解为supplier和demander,并用最优传输理论来解释整个标签分配过程还是让人觉得耳目一新。
DETR基于Transformer提出首个端到端的目标检测方法,那么很自然的问题就是:
1. 基于CNN的目标检测方法能否做到端到端?
2. 哪些因素是实现端到端目标检测的关键?
以下文章对这两个问题展开了探讨:
事实上,构建端到端的目标检测器与label assignment息息相关,这里不做展开介绍,感兴趣的小伙伴可以参考论文原文和作者的知乎介绍。
DETR论文中效仿Mask RCNN,添加mask分支来实现全景分割,同样的方法也可以被运用在实例分割任务上。然而DETR的mask分支十分复杂,需要使用复杂的网络,并利用类似FPN的结构来融合CNN特征。这主要是由于mask的输出空间较为复杂,不同于分类和定位只需要输出向量来表示类别和回归值,mask的预测需要输出2D的map。
SOLQ [6]在DETR基础上提出利用统一的类别、位置和mask特征表示UQR(Unified query representation)来实现端到端的实例分割。
这样利用统一的query特征表示来实现分类、定位和分割三个任务使得模型,不仅大大简化了DETR做实例分割的整体流程,还能够充分利用多任务训练的好处。实验表明,采用UQR不仅能够提升实例分割的性能,同时也能够提升目标检测的精度。
说完别人的工作,最后再夹带点私货,介绍一下我们中稿MultiMedia 2021的文章[8]。本文探究了一种针对detection transformer的域适应目标检测方法。现有的域适应目标检测方法大多运用了Faster RCNN, FCOS, SSD等检测器的特定结构,因此很难直接运用到detection transformer上。一种直接的想法就是在detection transformer的backbone上做特征对齐来减少源域和目标域特征分布上的差异。然而,我们的实验发现这一方法带来的性能提升有限,利用tsne特征可视化,我们发现这主要是由于在backbone上做特征对齐不能保证transformer层中的序列特征的域不变性,而后者才行模型预测所基于的特征。由于这种特征偏移的存在,模型的跨域性能受到了限制。
为了解决以上问题,我们提出在Transformer提取的序列特征做特征对齐,并提出了基于域查询的特征对齐,逐词的特征对齐来提升特征的迁移性;同时,我们提出二分图匹配一致性约束来提升特征的判别性。最终,我们的方法SFA能够显著提升detection transformer的跨域性能。
在三种常见域适应场景: weather adaptatioin, scene adaptation和synthetic-to-real adaptation场景下,我们的方法均能够取得sota性能,并且相较于source only baseline带来明显的性能提升。
我们的论文和代码均已经开源,欢迎大家关注~
本文主要介绍了DETR在目标检测领域带来的变革与思考。由于涉及的文章数量较多,没有全部展开介绍,感兴趣的小伙伴还请参见论文原文。一个全新的目标检测框架能够为整个社区带来这么多新的思考,不经让人感慨。个人认为一个很锻炼科研思维的方法就是尝试站在某篇代表性文章刚刚发表的时间节点(先不看其后续工作),思考自己能够从这篇文章中得到哪些启发,会考虑从哪些角度做进一步的研究。再拿自己的思考与后续研究者的工作做比较,在这个过程中提升自己的科研直觉和判断力。
由于笔者能力有限,如有叙述不当之处,欢迎不吝赐教。
[2] Deformable DETR: Deformable Transformers for End-to-End Object Detection
[3] UP-DETR: Unsupervised Pre-training for Object Detection with Transformers
[4] Sparse R-CNN: End-to-End Object Detection with Learnable Proposals
[5] OTA: Optimal Transport Assignment for Object Detection
[6] SOLQ: Segmenting Objects by Learning Queries
[7] You Only Look at One Sequence: Rethinking Transformer in Vision through Object Detection
本周上新!
扫码观看!
关于我“门”