1. 写作背景
最近提出的 DETR 成功地将 transformer 引入到物体检测任务中,获得了很不错的性能。DETR 的重要意义在于去除了物体检测算法里需要人工设计的部分,比如 anchor 的生成和 NMS 操作。这大大简化了物体检测的设计流程。基本的结构还是沿用了以前的结构,基础的CNN提取特征,送入到encoder中后,又用decoder进行解码还原,最终通过FNN进行预测。
2. 为什么提出Conditional DETR
DETR存在以下问题
- 对于模型训练时间长,一是大量的Attention计算,二是模型的参数量多,这是由于decoder的query的全0初始化,导致必须要6个decoder去进行cross的信息交互
- 检测小物体效果不好:DETR是因为不设计多尺度特征,Attention模块每次只关注一小部分采样点,导致需要很多轮数才能学习到真实需要关注的目标。
3. Conditional DETR细节
沿用了 DETR 的整体流程,包括 CNN backbone,transformer encoder,transformer decoder, 以及 object class 和 box 位置的预测器。Encoder 和 decoder 各自由6个相同的 layer 堆叠而成。我们相对于 DETR 的改动主要在 cross-attention 部分。
再来对比一下detr的结构,如图:
encoder部分不变,decoder部分,从之前的self Attention变成了embedding过的cross attention。参考知乎大佬的一段讲解:
总的来说,作者认为原始的DETR论文中的query是分为两部分:content query和spatial query。其中的spatial query是一个统一的特征(不同decoder层是一样的),没有针对图像中具体的细节信息,那么content query 需要同时学习spatial keys和content keys,这种大量的计算导致模型很难收敛。
因此,在Conditional DETR论文中,作者将为每一个query产生一个独特的spatial embedding,并且在和content融合的时候,不再使用求和的形式,而是拼接的形式。
4. 参考
- [ICCV 2021] Conditional DETR: 通过显式寻找物体的 extremity 区域加快 DETR 的收敛
- DETR系列模型(13篇论文)总结