CVPR 2023 | 即插即用!SQR:对于训练DETR-family目标检测的探索和思考

简介: CVPR 2023 | 即插即用!SQR:对于训练DETR-family目标检测的探索和思考

Enhanced Training of Query-Based Object Detection via Selective Query Recollection

论文:https://arxiv.org/abs/2212.07593

代码:https://github.com/Fangyi-Chen/SQR

推荐阅读:DETR[1], Adamixer[2], Deformable DETR[3], DAB DETR[4], Group DETR[5], H-DETR[6]

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)

Figure 3 (a). Basic process for decoding queries stage by stage, applied in both training and testing. (b). Dense query recollection.(c). Selective query recollection

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

相关文章
|
12月前
|
机器学习/深度学习 算法 数据挖掘
即插即用 | 通过自适应聚类Transformer来提升DERT目标检测器的速度(文末附论文下载)(一)
即插即用 | 通过自适应聚类Transformer来提升DERT目标检测器的速度(文末附论文下载)(一)
598 0
|
4天前
|
机器学习/深度学习 编解码 算法
助力目标检测涨点 | 可以这样把Vision Transformer知识蒸馏到CNN模型之中
助力目标检测涨点 | 可以这样把Vision Transformer知识蒸馏到CNN模型之中
50 0
|
4天前
|
机器学习/深度学习 算法 固态存储
【计算机视觉】目标检测中Faster R-CNN、R-FCN、YOLO、SSD等算法的讲解(图文解释 超详细必看)
【计算机视觉】目标检测中Faster R-CNN、R-FCN、YOLO、SSD等算法的讲解(图文解释 超详细必看)
148 0
|
12月前
|
计算机视觉 异构计算
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(二)
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(二)
102 0
|
12月前
|
算法 计算机视觉
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(一)
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(一)
240 0
|
12月前
|
机器学习/深度学习 编解码 自然语言处理
最强Vision Trabsformer | 87.7%准确率!CvT:将卷积引入视觉Transformer(文末附论文下载)(一)
最强Vision Trabsformer | 87.7%准确率!CvT:将卷积引入视觉Transformer(文末附论文下载)(一)
182 0
|
12月前
|
机器学习/深度学习 存储 编解码
最强Vision Trabsformer | 87.7%准确率!CvT:将卷积引入视觉Transformer(文末附论文下载)(二)
最强Vision Trabsformer | 87.7%准确率!CvT:将卷积引入视觉Transformer(文末附论文下载)(二)
56 0
|
12月前
|
数据可视化 数据挖掘
即插即用 | 通过自适应聚类Transformer来提升DERT目标检测器的速度(文末附论文下载)(二)
即插即用 | 通过自适应聚类Transformer来提升DERT目标检测器的速度(文末附论文下载)(二)
197 0
|
存储 机器学习/深度学习 PyTorch
ECCV 2022|R2L: 用数据蒸馏加速NeRF
ECCV 2022|R2L: 用数据蒸馏加速NeRF
|
机器学习/深度学习 存储 编解码
计算机视觉论文速递(七)FAN:提升ViT和CNN的鲁棒性和准确性
在本文中研究了Self-Attention在学习鲁棒表征中的作用。本研究是基于Vision Transformer中新出现的Visual Grouping的特性进行深入研究的,Visual Grouping也表明Self-Attention可能是通过改进的中层表征来促进鲁棒性。
106 0