detr
用 Transformer 替代传统检测 pipeline 的端到端目标检测模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 Transformer 替代传统检测 pipeline 的端到端目标检测模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你可能见过这样的场景:自动驾驶汽车在雨夜中行驶,瞬间识别出行人、车辆、交通标志——这背后是一套复杂的目标检测算法在高速运转。长期以来,这套系统依赖大量人工设计的组件:区域提议网络、锚框、非极大值抑制……每一个环节都需要工程师精心调参。而 Facebook Research 推出的 DETR,彻底改变了这一局面。
2020 年 5 月,Nicolas Carion 等人在论文《End-to-End Object Detection with Transformers》中提出了一个大胆的想法:能不能让目标检测像翻译一句话一样,直接端到端完成?他们用 Transformer 架构替换掉了整个传统检测流程,在 COCO 数据集上与 Faster R-CNN 打成平手——42 AP,且只使用一半的计算量。这个成绩在当时引起了学术圈的轰动。
把目标检测想象成一场「寻宝游戏」:传统方法像拿着一张密密麻麻的网格地图,每一格都要派人去检查;而 DETR 则像一个经验丰富的向导,只需要告诉它「去找红色的车和穿蓝色衣服的人」,它就能直接锁定目标位置。Transformer 的自注意力机制让它能够「全局思考」,理解物体之间的关系——比如一辆车和它旁边的骑行者是一个整体,而不是两个孤立的物体。
DETR 的技术架构分为三个核心部分:CNN 主干网络(ResNet-50 或 ResNet-101)负责提取图像特征;Transformer 编码器-解码器处理序列化的特征,输出固定数量的检测结果;集合预测损失函数(BCE + 匈牙利匹配算法)替代了传统的边界框回归,彻底省去了 NMS 后处理步骤。
在模型性能方面,DETR 提供了 4 个预训练模型,其中 DETR-DC5(带扩展稀释残差)将 AP 提升至 43.3(ResNet-50)和 44.9(ResNet-101)。作者还提供了全景分割模型(Panoptic Segmentation),在 COCO val5k 上达到 PQ 43.4 的成绩。此外,项目通过 Torch Hub 提供了一行代码加载预训练模型的便捷接口:
model = torch.hub.load('facebookresearch/detr:main', 'detr_resnet50', pretrained=True)
上手门槛方面,DETR 主要面向有 PyTorch 基础的开发者。训练需要 GPU(推荐 8GB+ 显存),提供了分布式训练支持(通过 submitit 集成 SLURM 集群调度)。代码包含完整的 main.py 训练入口、engine.py 训练/评估函数和 datasets/ 模块(内置 COCO 数据集支持)。项目同时提供 d2/ 目录,集成 Facebook 自研的 Detectron2 框架,兼容 Detectron2 的配置文件体系,方便已有 Detectron2 经验的用户快速迁移。
不过 DETR 也有明显的局限性。训练收敛慢是最常被诟病的问题——需要 500 个 epoch 才能达到最优性能,而 Faster R-CNN 通常几十个 epoch 就能收敛。Transformer 对小物体的检测效果不如传统方法,AP 较低。此外,代码基于 PyTorch 1.5 + CUDA 10.1 的老版本生态,直接在新硬件上运行可能需要调整依赖。
尽管如此,DETR 的意义远超其本身。它证明了 Transformer 不仅可以处理文本,更能在计算机视觉领域大放异彩——此后出现的 Swin Transformer、DINO、Segment Anything Model(SAM)等突破性工作,都建立在 DETR 开辟的「视觉 Transformer」路线之上。可以说,DETR 是近五年内对计算机视觉领域影响最深远的开源项目之一,也是理解现代视觉 AI 不可绕过的一块基石。