4. 模型选型:两阶段检测器(Faster R-CNN)、单阶段检测器(YOLO、SSD)、Transformer检测器(DETR)

选模型这事儿,说实话,没有绝对的「最好」。

我经常被学生问:「老师,到底该用哪个?」我的回答永远是——看你的场景。你是在做自动驾驶,还是工业质检?是追求实时性,还是精度优先?不同的任务,答案完全不同。

这一节,我把三类主流检测器掰开揉碎讲清楚。你听完就能自己判断了。

核心观点:没有万能模型,只有最适合你场景的模型。两阶段检测器精度高但慢,单阶段检测器快但精度略低,Transformer检测器正在崛起但还在成长期。

4.1 两阶段检测器:Faster R-CNN

两阶段检测器,说白了就是「先找候选框,再分类」。第一阶段生成可能包含物体的区域(Region Proposal),第二阶段对这些区域做精细分类和回归。

Faster R-CNN 的核心流程:

  1. 特征提取:用 backbone(如 ResNet、VGG)提取整张图的特征图。
  2. RPN(Region Proposal Network):在特征图上滑动窗口,生成候选框(anchors),并判断哪些框可能包含物体。
  3. ROI Pooling:将候选框映射回特征图,并统一尺寸。
  4. 分类+回归:对每个候选框做分类和边框微调。

我个人习惯用 Faster R-CNN 做高精度场景,比如医疗影像、卫星图像。这些场景对速度要求不高,但漏检一个病灶或目标,代价很大。

我的经验:我在做工业缺陷检测时,用过 Faster R-CNN。当时产品表面缺陷非常小,YOLO 经常漏掉。换成 Faster R-CNN 后,召回率从 82% 提升到了 94%。代价是推理速度从 30fps 降到了 8fps。但产线对速度要求不高,所以完全能接受。

优点:

  • 精度高,尤其对小目标友好
  • 两阶段设计,误检率低
  • 适合复杂场景(遮挡、密集目标)

缺点:

  • 推理速度慢,难以实时
  • 训练流程复杂,需要调参的地方多
  • 部署成本高,对硬件要求高

4.2 单阶段检测器:YOLO 和 SSD

单阶段检测器,就是「一步到位」。没有候选框生成阶段,直接在特征图上预测类别和位置。

YOLO(You Only Look Once)

YOLO 的思想很暴力——把图像分成网格,每个网格负责预测中心点落在该网格内的物体。YOLO 系列从 v1 发展到 v8,每一代都有明显提升。

我最早用 YOLOv3 做行人检测,那时候觉得已经很快了。后来 YOLOv5 出来,精度和速度又上了一个台阶。现在 YOLOv8 已经支持实例分割和姿态估计了。

YOLO 的核心优势:速度快,结构简单,容易部署。适合实时场景,比如视频监控、自动驾驶、无人机巡检。

SSD(Single Shot MultiBox Detector)

SSD 和 YOLO 类似,但多了一个技巧——多尺度特征图。SSD 在不同尺度的特征图上做预测,小特征图检测大物体,大特征图检测小物体。这个设计让 SSD 对小目标的检测能力优于 YOLOv1/v2。

不过说实话,YOLO 系列后来也吸收了多尺度思想(比如 YOLOv3 的 FPN 结构),现在 SSD 用得越来越少了。我个人觉得,如果你刚入门,直接学 YOLO 系列就够了。

避坑指南:我曾经在移动端部署 YOLOv5,发现模型太大跑不动。后来换成 YOLOv5-nano(n 版本),参数量只有原来的 1/10,速度提升了 3 倍,精度只掉了 5 个点。所以,选模型时一定要考虑部署平台。

单阶段检测器对比:

模型 速度 精度 小目标 部署难度
YOLOv5 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐
YOLOv8 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐
SSD ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐

4.3 Transformer 检测器:DETR

DETR(Detection Transformer)是 2020 年 Facebook AI 提出的。它把目标检测当成一个集合预测问题,用 Transformer 的 encoder-decoder 结构直接输出检测结果。

你想想看,传统检测器需要 anchor、NMS 这些手工设计的组件。DETR 把这些全扔了,端到端训练,简洁得让人拍大腿。

DETR 的核心流程:

  1. CNN backbone:提取图像特征。
  2. Transformer encoder:对特征图做全局注意力建模。
  3. Transformer decoder:用一组可学习的 object queries 与 encoder 输出做交叉注意力,直接预测类别和边框。
  4. 二分图匹配:用匈牙利算法匹配预测结果和真实标签,计算损失。

DETR 的革命性:不需要 anchor、不需要 NMS、不需要手工设计候选框。整个流程干净得像数学公式。

但 DETR 也有明显缺点:

  • 训练收敛慢:需要 500 个 epoch 才能达到较好效果,而 YOLO 可能 100 个 epoch 就够了。
  • 小目标检测差:Transformer 的全局注意力对小目标不敏感。
  • 推理速度慢:比 YOLO 慢一个数量级。

后来有了改进版本,比如 Deformable DETR,用可变形注意力代替全局注意力,收敛速度提升了 10 倍,小目标检测也好了很多。但说实话,目前工业界用得还不多,更多是学术研究。

我的建议:如果你做学术研究,或者对精度有极致要求且不 care 速度,可以试试 DETR。但如果是工业落地,我建议还是优先考虑 YOLO 或 Faster R-CNN。Transformer 检测器还在成长期,等它再成熟两年,可能会成为主流。

4.4 三类检测器对比总结

维度 Faster R-CNN YOLO / SSD DETR
检测方式 两阶段 单阶段 端到端集合预测
速度 慢(5-15fps) 快(30-100fps) 慢(10-20fps)
精度 高 中高 高(但收敛慢)
小目标 优秀 一般 差(改进后中等)
部署难度 中等 简单 困难
适用场景 高精度、慢速 实时、轻量 学术、极致精度

4.5 知识体系图:检测器选型决策流程

检测器选型决策流程 你的检测任务是什么? 是否需要实时检测?(>30fps) 是 YOLO / SSD 否 Faster R-CNN / DETR 部署平台是否受限? (移动端/边缘设备) 小目标是否密集? (<32x32像素) YOLOv5-nano / YOLOv8-n 轻量级部署 Faster R-CNN + FPN 高精度小目标检测 ✅ 选型完成 ✅ 选型完成

上面这张图是我自己总结的选型决策流程。你从「你的检测任务是什么」出发,一路回答几个关键问题,就能找到最适合你的模型。

嗯,模型选型就讲到这里。记住一句话:没有最好的模型,只有最合适的模型。下一节我们开始讲数据准备,那才是真正决定模型上限的关键环节。

一句话总结:追求速度选 YOLO,追求精度选 Faster R-CNN,追求前沿选 DETR。但无论选哪个,数据质量永远是第一位的。

可可精品资料库