基于注意力机制的目标检测算法:DETR(DEtection TRansformer)
字数 1500 2025-10-27 17:41:11
基于注意力机制的目标检测算法:DETR(DEtection TRansformer)
题目描述
DETR(DEtection TRansformer)是一种基于Transformer和注意力机制的目标检测算法。与传统方法(如Faster R-CNN)依赖锚框(anchor boxes)和非极大值抑制(NMS)不同,DETR将目标检测视为一个集合预测问题,直接预测图像中所有目标的边界框和类别。其核心创新包括:
- 端到端设计:无需手工设计组件(如锚框或NMS)。
- Transformer编码器-解码器:通过全局注意力机制建模图像中物体的关系。
- 二分图匹配损失:使用匈牙利算法将预测结果与真实标签唯一匹配,避免重复预测。
解题过程
1. 整体架构
DETR的流程分为四步:
- 步骤1:输入图像通过CNN骨干网络(如ResNet)提取特征图。
- 步骤2:特征图展平后输入Transformer编码器,通过自注意力机制增强特征表示。
- 步骤3:Transformer解码器接收一组可学习的“物体查询”(object queries),结合编码器的特征,生成N个预测结果(N为固定值,远大于图中实际物体数)。
- 步骤4:预测结果通过前馈网络(FFN)输出边界框(中心点、宽高)和类别标签。
2. 关键组件详解
2.1 骨干网络与位置编码
- CNN骨干网络将图像转换为特征图(例如,输入800×800图像,输出25×25×2048的特征)。
- 特征图展平为序列(长度25×25=625),并加入正弦位置编码,以保留空间信息。
2.2 Transformer编码器
- 编码器由多层自注意力模块和前馈网络组成。
- 自注意力机制:计算每个特征与其他所有特征的关系,例如,识别某只猫的特征时会关注其周围的特征(如尾巴或耳朵),从而增强物体特征的区分度。
2.3 物体查询与解码器
- 解码器输入包括两部分:
- 编码器输出的增强特征。
- 一组可学习的物体查询(长度为N的向量,N通常设为100)。
- 物体查询类似于锚框的作用,但无需预设尺寸或位置,而是通过训练学习“询问”图像中物体的位置和类别。
- 解码器通过交叉注意力机制,让每个物体查询与编码器特征交互,最终每个查询输出一个预测结果。
2.4 预测头与输出
- 每个预测结果包含两部分:
- 类别预测:包括一个“无物体”类别(∅),用于处理空白查询。
- 边界框预测:回归框的中心坐标、宽高(归一化到0~1)。
3. 训练中的二分图匹配
3.1 为何需要匹配?
- 预测的N个结果是无序的,但真实标签是少量无序的物体集合。需将预测与真实标签一一对应。
3.2 匈牙利算法步骤
- 定义损失矩阵:计算所有预测框与真实框的匹配代价(如类别损失 + L1框位置损失)。
- 通过匈牙利算法找到最优匹配,使总代价最小。
- 未匹配的预测被归类为“无物体”(∅)。
3.3 损失函数
- 匹配后计算两部分损失:
- 类别损失:采用交叉熵损失。
- 边界框损失:L1损失 + GIoU损失(优化框的重叠程度)。
4. 与传统方法的对比
- 优点:
- 简化流程(去掉NMS和锚框)。
- 对遮挡物体或复杂场景更鲁棒(因全局注意力)。
- 缺点:
- 训练收敛慢(需长时间调参)。
- 小物体检测性能较弱(因Transformer计算全局特征,细节易丢失)。
5. 扩展与改进
- 后续工作如Deformable DETR引入可变形注意力,只关注关键特征点,加速收敛并提升小物体检测。
- DETR的思想也被应用于分割、姿态估计等任务。
通过以上步骤,DETR实现了端到端的目标检测,展示了注意力机制在视觉任务中的潜力。