基于Transformer的图像目标检测算法:DETR(DEtection TRansformer)
字数 1550 2025-11-11 12:30:20
基于Transformer的图像目标检测算法:DETR(DEtection TRansformer)
题目描述
DETR(DEtection TRansformer)是一种基于Transformer架构的端到端目标检测算法。与传统方法(如Faster R-CNN)依赖锚框(anchor boxes)和非极大值抑制(NMS)后处理不同,DETR将目标检测视为一个集合预测问题,直接输出所有目标的边界框和类别。其核心创新在于使用Transformer的编码器-解码器结构,通过二分图匹配损失(bipartite matching loss)实现预测结果与真实标签的对应。该算法简化了检测流程,在COCO数据集上达到了与Faster R-CNN相当的精度。
解题过程循序渐进讲解
-
问题建模:集合预测
- 目标:将目标检测任务转化为集合预测问题。图像中可能包含0到N个目标,每个目标需预测一个边界框(中心坐标、宽高)和类别标签。
- 关键挑战:预测结果是无序的,需避免重复检测(如传统NMS处理的问题)。
- 解决方案:使用二分图匹配,为每个预测分配唯一真实标签。
-
整体架构:编码器-解码器 + 预测头
DETR包含三个核心模块:- CNN骨干网络(如ResNet):提取图像特征图(例如输入图像3×H×W → 特征图C×H/32×W/32)。
- Transformer编码器-解码器:处理特征并生成N个目标查询(object queries)。
- 预测头(前馈网络FFN):将每个查询解码为边界框和类别。
-
特征预处理与编码器
- 步骤1:CNN骨干网络提取的特征图需降维(通过1×1卷积减少通道数),并展开为序列格式(序列长度:H/32 × W/32,特征维度C)。
- 步骤2:添加位置编码(正弦函数),为Transformer提供空间信息。
- 步骤3:编码器通过自注意力机制(self-attention)建模全局上下文,增强特征表示(例如,识别物体间关系)。
-
解码器与对象查询
- 对象查询(Object Queries):解码器输入N个可学习的位置编码(称为对象查询),每个查询代表一个预测槽(slot)。N需大于图像中最大目标数(如COCO数据集中N=100)。
- 解码过程:
- 查询与编码器输出交互,通过交叉注意力(cross-attention)聚焦图像中可能包含物体的区域。
- 自注意力机制处理查询间关系,避免重复预测。
- 输出:解码器生成N个增强的查询特征,每个对应一个潜在目标。
-
预测与二分图匹配
- 预测头:每个查询特征通过FFN输出:
- 类别概率(含“无物体”类别∅)。
- 归一化边界框(中心坐标、宽高,用sigmoid归一化到[0,1])。
- 二分图匹配:
- 目的:为N个预测分配唯一真实标签(真实标签不足N时用∅填充)。
- 匹配成本函数:计算预测与所有真实框的匹配代价,包括类别概率和边界框相似度(如IoU或L1损失)。
- 匈牙利算法:找到总匹配代价最小的分配方案。
- 预测头:每个查询特征通过FFN输出:
-
损失函数
匹配后,计算两个损失:- 分类损失:负对数似然损失,对匹配的预测计算其与真实类别的误差。
- 边界框损失:L1损失 + 广义IoU损失,优化框的位置和大小。
-
推理流程
- 图像输入模型,直接输出N个预测。
- 过滤掉“无物体”类别(概率低于阈值),无需NMS后处理(因Transformer自注意力已抑制重复框)。
关键优势与局限性
- 优势:端到端简化流程、无需手工组件(如锚框/NMS)、全局上下文建模能力强。
- 局限性:训练收敛慢、小物体检测性能较弱(后续改进如Deformable DETR已解决部分问题)。
通过以上步骤,DETR实现了简洁而强大的目标检测框架,推动了Transformer在视觉任务中的应用。