论文信息标题Conditional DETR for Fast Training Convergence会议ArXiv 2021单位中国科学技术大学、北京大学、微软亚洲研究院代码https://github.com/Atten4Vis/ConditionalDETR论文https://arxiv.org/pdf/2108.06152.pdf0 前言DETR 凭借端到端、无 Anchor、无 NMS 的优雅范式彻底革新了目标检测 pipeline。但它训练收敛极慢——常规需要 500 个 epoch 才能达到稳定性能严重影响落地效率。核心痛点DETR 的跨注意力过度依赖内容嵌入content embedding去定位物体四条边空间位置信息没被高效利用前期训练注意力混乱。本文提出Conditional DETR通过条件空间查询conditional spatial query解耦空间与内容注意力让每个注意力头精准聚焦物体边缘/内部区域实现R50/R101 收敛速度提升6.7×DC5-R50/R101 收敛速度提升10×50 epoch 效果接近原版 DETR 500 epoch1 论文核心动机1.1 为什么 DETR 训练慢原版 DETR 跨注意力计算(cqpq)⊤(ckpk)(c_q p_q)^\top (c_k p_k)(cq​pq​)⊤(ck​pk​)cqc_qcq​查询内容特征pqp_qpq​空间位置查询object queryckc_kck​键内容特征pkp_kpk​键位置编码问题空间查询pqp_qpq​只提供粗粒度先验无法利用图像信息精确定位边缘内容查询cqc_qcq​被迫同时承担“匹配内容”“定位位置”双重任务训练难度暴增。如图 1 所示50 epoch 原版 DETR左右边注意力完全散乱50 epoch Conditional DETR四条边缘注意力清晰对齐500 epoch 原版 DETR才勉强对齐图 1. 我们条件 DETR-R50 训练 50 个周期第一行、原始 DETR-R50 训练 50 个周期第二行以及原始 DETR-R50 训练 500 个周期第三行的空间注意力权重图比较。我们条件 DETR 和训练 500 个周期的 DETR 的权重图能够很好地突出四个端点区域。相比之下训练 50 个周期的 DETR 的负责左右边缘第二行的第三和第四张图的空间注意力权重图无法很好地突出端点。绿色框为真实边界框。第一行Conditional DETR-50epoch第二行DETR-50epoch第三行DETR-500epoch。绿色框为真值。可以看到本文方法仅需 50 轮就实现精准边界聚焦原版需要 500 轮。2 Conditional DETR 整体架构整体流程完全继承 DETRBackbone → Transformer Encoder → Transformer Decoder → 分类/回归头唯一改动Decoder 跨注意力提出Conditional Cross-Attention将空间与内容解耦查询concat(cq,pqcond)concat(c_q, p_q^{cond})concat(cq​,pqcond​)键concat(ck,pk)concat(c_k, p_k)concat(ck​,pk​)注意力cq⊤ckpqcond⊤pkc_q^\top c_k p_q^{cond\top} p_kcq⊤​ck​pqcond⊤​pk​图 2. 展示了条件 DETR 中的一个解码器层。与原始 DETR [3] 的主要区别在于输入查询和用于交叉注意力的输入键。条件空间查询通过灰色阴影框中所示的操作从可学习的二维坐标 s 和前一个解码器层输出的嵌入中预测得出。二维坐标可以从对象查询虚线框中预测得出或者简单地作为模型参数学习。空间查询键和内容查询键被连接起来作为查询键。由此产生的交叉注意力被称为条件交叉注意力。与 DETR [3] 一样解码器层重复 6 次。灰色框为本文核心从 decoder embedding 预测条件空间查询与位置编码做变换。3 核心创新条件空间查询3.1 预测参考点框回归公式bsigmoid(FFN(f)[s⊤00])b sigmoid\left(FFN(f) \begin{bmatrix}s^\top \\ 0 \\ 0\end{bmatrix}\right)bsigmoid​FFN(f)​s⊤00​​​bbb预测框(cx,cy,w,h)(cx, cy, w, h)(cx,cy,w,h)fffdecoder 特征sss参考点2D本文核心可学习变量sigmoid归一化到 0~13.2 条件空间查询生成对参考点归一化并做正弦编码pssinusoidal(sigmoid(s))p_s sinusoidal(sigmoid(s))ps​sinusoidal(sigmoid(s))用 FFN 从fff预测变换向量λqFFN(f)\lambda_q FFN(f)λq​FFN(f)逐元素乘积得到条件空间查询pqλq⊙psp_q \lambda_q \odot p_spq​λq​⊙ps​通俗解释让模型自己学一个“空间注意力滤波器”精准照射物体四条边或中心区域。3.3 解耦跨注意力Attentioncq⊤ckpq⊤pkAttention c_q^\top c_k p_q^\top p_kAttentioncq⊤​ck​pq⊤​pk​内容注意力负责“是什么”空间注意力负责“在哪里”多头机制自然分工8 个头中通常 4 个头对应 4 条边1 个头负责物体内部分类其余冗余互补。图 3. 展示了由我们的条件 DETR 计算得出的空间注意力权重图第一行、内容注意力权重图第二行以及综合注意力权重图第三行。这些注意力权重图来自 8 个注意力头中的 5 个分别负责四个端点以及对象框内部的一个区域。针对四个端点的内容注意力权重图突出显示了框内的分散区域自行车或两个对象实例中的类似区域牛而相应的综合注意力权重图则借助空间注意力权重图来突出显示端点区域。对象框内部区域的综合注意力权重图主要依赖于空间注意力权重图这表明对象内部区域的表示可能包含了足够的类别信息。这些图是使用 50 个训练周期的条件 DETR-R50 训练得到的。第一行空间注意力精准锁定边缘第二行内容注意力散乱第三行融合注意力干净聚焦4 核心代码片段PyTorch 风格# # 条件空间查询生成核心# defcompute_conditional_spatial_query(decoder_feature,# 解码器特征 freference_point# 参考点 s):# 1. 归一化 正弦位置编码ref_sigmoidtorch.sigmoid(reference_point)pos_ssinusoidal_encoding(ref_sigmoid)# [B, 256]# 2. 从 decoder feature 预测变换向量 λlambda_qffn_theta(decoder_feature)# [B, 256]# 3. 逐元素乘积 → 条件空间查询cond_querylambda_q.unsqueeze(1)*pos_s.unsqueeze(1)returncond_query# # 解耦跨注意力# classConditionalCrossAttention(nn.Module):defforward(self,content_q,spatial_q,content_k,spatial_k,value):# 内容注意力attn_contenttorch.matmul(content_q,content_k.transpose(-2,-1))# 空间注意力attn_spatialtorch.matmul(spatial_q,spatial_k.transpose(-2,-1))# 融合attn(attn_contentattn_spatial)/scale attnattn.softmax(dim-1)outtorch.matmul(attn,value)returnout5 实验结果与分析5.1 收敛速度对比表格1来自原文 Table 1COCO 2017 val模型epochAPDETR-R5050042.0DETR-R505034.9Conditional DETR-R505040.9Conditional DETR-R507542.1模型epochAPDETR-DC5-R5050043.3DETR-DC5-R505036.7Conditional DETR-DC5-R505043.8结论DC5-R5050 epoch DETR 500 epoch加速比10 倍R50加速比6.7 倍5.2 强骨架收益更明显更深、更强的骨架DC5依赖内容特征更严重因此 Conditional DETR 收益更大。6 相关工作对比Deformable DETR稀疏采样多尺度特征SMCA高斯先验调制注意力Conditional DETR解耦空间-内容端到端学习“边缘注意力”无需人工先验7 实现细节解码器6 层多头数8优化器AdamW损失Focal Loss L1 GIoU匹配匈牙利匹配8 总结Conditional DETR 抓住了 DETR 训练慢的本质空间与内容注意力耦合。通过条件空间查询让每个头自动聚焦物体边缘/内部区域大幅降低对内容特征的依赖最终实现✅ 训练收敛提速6.7~10 倍✅ 精度持平甚至更高✅ 结构优雅完全兼容 DETR✅ 工业落地极具价值如果你在做 DETR 系列落地Conditional DETR 几乎是必加的基础改进。