CVPR 2023 | 即插即用!SQR:对于训练DETR-family目标检测的探索和思考
点击下方卡片,关注“CVer”公众号
AI/CV重磅干货,第一时间送达
作者:cfyyy | ( 源:知乎)编辑:CVer https://zhuanlan.zhihu.com/p/610347565
分享一下我们最近的目标检测文章,Enhanced Training of Query-Based Object Detection via Selective Query Recollection 文章一审 a,wa,wa, 最终收录于 CVPR2023。在此介绍文章主要内容,和一些有趣的现象,以及我们的思考
Enhanced Training of Query-Based Object Detection via Selective Query Recollection
论文:https://arxiv.org/abs/2212.07593
1. 一个有趣的现象:
我们知道,DETR[1]检测器的重要组成是decoder,也是和之前anchor-base/anchor-free 检测器的区别所在。decoder通常有6层(6 decoding layers)组成,每层的任务和训练方式没什么差别。具体地,decoder肩负三个任务:1.以cross attention或者adamixer[2] 的方式, 把query 和feature map进行充分交互,从而能让query感知到object的存在。2.以self-attention的方式,把query和别的query进行交互,从而能让query感知其他query的信息,比如物体的co-occurance或者重复检测。3. 用几层mlp把query翻译为物体的类别和检测框。每层decoding layer接受上一层的输出,并以残差的形式进行refine。这样每层的结果是逐渐变好的。
确实,从总体来看,每层的mAP逐渐增加。但当我们可视化每一层的具体的结果的时候,我们发现一个有意思的现象:有一些本来前几层检测出来的物体,在第六层没了...比如下图:(0.27 低于常用的0.3阈值)
2. 这个现象significant 吗?
我们定义了两个新的量来研究一下有多少query会有类似这种现象。
第一个量: TP F Rate. 在第六层,对于某一个query,如果它对应的预测是一个True positive, 那必然是匹配到了一个ground-truth G. 那我们就去第1~5层查看和这个query 对应的5个query,看它们的预测是不是也能匹配到这个同样的ground-truth G, 并且有更高的IOU匹配度和更高的confident score 。这是个非常强的条件。如果这件事发生了(5个只要有一个就行), 那就算一次。我们遍历所有的val 图片和所有的query,对于adamixer这个发生率是26%左右,对于deformable detr这个发生率是50%左右。
第二个量:FP E Rate. 类似地,在第六层,对于某一个query,如果它对应的预测是一个False positive, 那我们就去查看对应的5个query,看它们的预测的confident是不是更低。这个发生率是50%左右。
可以看出,这两个量都很高。在此解答两个可能的疑惑:1. 为什么deformable detr TP F rate 能这么高?因为deformable detr 后三个decoding layer的mAP很接近(44.2 vs 44.4 vs 44.5),所以第六层相对没那么强。2. 如果FP E Rate 的对应5个query的预测有一个TP,这种情况怎么办?答:这是一种更糟的情况,但是实测出现概率没那么高。
不过我们观察到,大半的case是marginally triggered ,即前五层的某个结果只比第六层好一点点,肉眼几乎不可见,这一点在对比deformable DETR的第五层和第六层的结果时尤为明显--第五层和第六层的结果非常接近。在对比第四层和第六层的结果时,很多sample的区别明显起来,如fig 2。在多数情况下,第六层的结果依然是最优的(之一),毕竟mAP更高。
3. 这个现象带来的motivation:
本文从训练的角度来思考这个问题: 每层decoder的任务是有轻有重的,对最后的mAP的作用也有大有小。最后一层的结果是决定性的,直接影响mAP,而第一层即使错了,后面也有五层可以帮忙更正。然而在训练的时候,所有的层的训练方式都被粗暴地归为一统,也就是hungarian matching+3个loss。我们认为这种训练是不合理的,后面的decoding layer应该接受更好更强的训练。
另外,因为后面的decoding layer的output (refined query)并不一定比前面的好,下一层的input仅仅是上一层的ouput,这样之前的query没有机会参与很后面的优化。我们希望能把这个query引入到后面几层使其帮助后面的优化。
(补充一个没有验证过的猜想, 也许第一层就不应该有loss, 或者应该用不同的loss。因为也许第一层不适合学习太强的semantic信息,更适合学弱语义信息。加上loss会破坏了一些东西)
4. 一个初始的探索
我们希望这样的一个训练方案:后面的decoding layer 能得到比前面的layer更多更好的优化。并且后面的decoding layer 能‘看到’前面较远的query,而不仅仅是前面一个layer的输出。
一个简单设计的方案DQR可以同时做到这两点。如fig 3 (b)
DQR 把每一层的query全部作为后面每一层的输入。这些query分别做self att, cross att, hungarian matching, 操作类似Group DETR和 H-DETR。这样每一层的监督信号是下一层的两倍,形成几何序列1,2,4,8,16,32。
5. 第二个探索
DQR的效果不错,但是训练计算量显著增加。另外,第一层的query 直接给到第六层,会带来很大的learning gap。Plus, 我们在分析了TP F Rate 和FP E Rate后,我们发现对于第六层,只有第四层和第五层的贡献比较大。所以我们提出SQR (selective query recollection, fig 3 c)。每一层的输入不再是之前所有层 的输出,而是选上一层和上上层的输出。这种选择性地输入使计算量大减,形成斐波那契数列1,2,3,5,8,13
SQR作为本文主要方法,在各种DETR上稳定涨点。
6. 第三个探索
这个探索是另外一个有趣的工程上的发现。用 DQR 来减小模型尺寸。放在文章的附录里。
现有方法通常有 6 层decoding layer。我们可以训练检测器让所有层共享参数吗?我们实施了这个想法,让模型在训练时share参数,但发现模型不收敛。但我们发现 DQR 有能力实现目标。上文介绍,DQR可以训练一个强大的final decoding layer,这个layer见过之前所有layer的query,所以我们在训练时用DQR正常训,测试时循环6次final decoding layer,那每一层decoing layer 不都是最强的了吗?想法很美好,结果最后AP 居然是0!
原因是最后这一层decoding layer 在训练的时候,没有输入过它自己的输出。它的输出和自己的输入已经有了不小的shift, 它也不再有能力去理解它自己的输出了。所以我们在训练时,在DQR的基础上,对最后一个decoding stage 输入了它自己的输出。这样得到的final layer, 我们在inference时可以只用第六层循环6次,模型的size也被大大减小了(1.6GB 至 513MB)。而且它只需要 5 个阶段就可以实现比以前更好的性能(42.8AP 对比 42.5AP)。
7. 未来可能的探索
SQR的选择机制不够优雅,也不够dynamic。另外在inference时如果有个机制去选最好的layer也是不错的option。
8. 对别的任务呢?
我们没有资源在多个任务上大搞特搞,只搞了detection。一个大胆又合理的猜测是,应该也work. XD
[1] End-to-end object detection with transformers
[2] Adamixer: A fast-converging query-based object detector.
[3] Deformable detr: Deformable transformers for end-to-end object detection
[4] Dab-detr: Dynamic anchor boxes are better queries for detr.
[5] Group detr: Fast training convergence with decoupled one-to-many label assignment.
[6] Detrs with hybrid matching
最新CVPP 2023论文和代码下载
后台回复:CVPR2023,即可下载CVPR 2023论文和代码开源的论文合集
后台回复:Transformer综述,即可下载最新的3篇Transformer综述PDF
目标检测和Transformer交流群成立
扫描下方二维码,或者添加微信:CVer333,即可添加CVer小助手微信,便可申请加入CVer-目标检测或者Transformer 微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测或者Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲扫码或加微信号: CVer333,进交流群
CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!
▲扫码进群
▲点击上方卡片,关注CVer公众号
整理不易,请点赞和在看
微信扫码关注该文公众号作者