基于Transformer的图像目标检测算法:DETR(DEtection TRansformer)
字数 1616 2025-10-30 17:43:25
基于Transformer的图像目标检测算法:DETR(DEtection TRansformer)
题目描述
DETR(DEtection TRansformer)是一种基于Transformer架构的端到端目标检测算法。与传统方法(如Faster R-CNN)依赖锚框(anchor boxes)和非极大值抑制(NMS)不同,DETR将目标检测视为一个集合预测问题,直接输出所有检测目标的边界框和类别。其核心创新在于使用Transformer的编码器-解码器结构,通过全局注意力机制建模图像中物体之间的关系,从而消除手工设计的组件,简化检测流程。
解题过程循序渐进讲解
-
问题建模:集合预测
- 目标:将目标检测任务定义为集合预测问题。模型需直接生成一个无序集合,每个元素包含一个目标的类别和边界框(中心坐标、宽高)。
- 关键点:集合大小固定为N(N需显著大于图中典型目标数,如100),多余位置用“无目标”(∅)类别填充。这避免了传统方法中对锚框尺寸的依赖和NMS后处理。
-
整体架构:编码器-解码器 Transformer
- 输入处理:
- 图像先通过CNN主干网络(如ResNet)提取特征图,得到维度为\(C \times H \times W\)的特征。
- 用1x1卷积压缩通道数至d(如d=256),再将特征图展平为\(d \times HW\)的序列,作为Transformer编码器的输入。
- 位置编码:向序列添加正弦位置编码,弥补Transformer本身对位置不敏感的特性。
- 编码器:
- 通过多层自注意力机制建模全局上下文,使每个像素位置感知全图信息。输出编码后的特征序列。
- 解码器:
- 输入N个可学习的向量(称为“对象查询”),每个查询代表一个潜在的检测目标。
- 解码器通过交叉注意力机制,让对象查询与编码器输出交互,逐步聚焦到特定目标的位置和类别。
- 输出头:
- 每个解码后的查询通过一个前馈网络(FFN),直接预测类别(含∅)和边界框(归一化坐标)。
- 输入处理:
-
核心机制:二分图匹配损失
- 挑战:模型输出是无序集合,需与真实标注(GT)框建立唯一对应关系以计算损失。
- 解决方案:使用匈牙利算法进行二分图匹配,找到最优的一对一分配:
- 代价函数:综合类别预测误差和边界框误差。具体为:
\(\text{cost} = -\mathbb{1}_{c_i \neq \varnothing} \cdot p_{\sigma(i)}(c_i) + \mathbb{1}_{c_i \neq \varnothing} \cdot \mathcal{L}_{\text{box}}(b_i, \hat{b}_{\sigma(i)})\)
其中,\(p_{\sigma(i)}(c_i)\)是预测类别概率,\(\mathcal{L}_{\text{box}}\)为边界框损失(L1损失+GIOU损失)。 - 分配结果:每个GT框唯一匹配一个预测框,未匹配的预测被赋为∅。
- 代价函数:综合类别预测误差和边界框误差。具体为:
- 损失计算:基于分配结果,对匹配的预测计算交叉熵损失(类别)和边界框损失。
-
训练与推理优化
- 训练技巧:
- 编码器预训练可加速收敛;解码器使用辅助损失(在每层解码后均计算损失)以改善梯度流动。
- 对象查询在训练中学会关注图像不同区域(如有的查询专检测小目标,有的关注边缘)。
- 推理流程:
- 图像输入模型,直接输出N个预测框。
- 过滤掉类别为∅的预测,其余即为最终检测结果,无需NMS后处理。
- 训练技巧:
-
优缺点分析
- 优势:端到端简化流程、无需NMS、全局上下文建模能力强(尤其适合遮挡场景)。
- 局限:
- 小目标检测性能较弱(因Transformer计算全局注意力时细节易丢失)。
- 训练收敛慢,需更长时间(对比Faster R-CNN)。
- 改进方向:后续工作(如Deformable DETR)引入多尺度特征和可变形注意力,提升小目标检测效率和速度。