目标检测概述 - YOLO、SSD 和 Faster R-CNN 架构与性能对比
什么是目标检测 - 在图像中定位和分类物体
目标检测是计算机视觉的核心任务,同时完成物体的定位 (在哪里) 和分类 (是什么)。与图像分类仅输出类别标签不同,目标检测输出每个物体的边界框坐标和类别概率。
输出格式: 每个检测结果包含 [x, y, w, h, class, confidence],其中 (x,y) 是边界框中心坐标,(w,h) 是宽高,class 是类别,confidence 是置信度分数。
评估指标:
- IoU (Intersection over Union): 预测框与真实框的重叠比例。通常 IoU>0.5 视为正确检测
- mAP (mean Average Precision): 所有类别 AP 的平均值。COCO 数据集使用 mAP@[0.5:0.95]
- FPS: 每秒处理帧数,衡量实时性能
两大技术路线:
- 两阶段检测器: 先生成候选区域,再分类和回归。精度高但速度慢 (Faster R-CNN)
- 单阶段检测器: 直接从特征图预测边界框和类别。速度快 (YOLO, SSD)
Faster R-CNN - 高精度两阶段检测器
Faster R-CNN (2015) 是两阶段检测器的代表,通过 Region Proposal Network (RPN) 实现端到端训练,在精度上长期保持领先。
架构组成:
- 骨干网络 (Backbone): ResNet-50/101 或 FPN 提取多尺度特征图
- RPN: 在特征图每个位置生成多个锚框,预测前景/背景和框回归
- RoI Pooling/Align: 将不同大小的候选区域统一为固定尺寸特征
- 检测头: 全连接层进行最终分类和边界框精修
锚框设计: 每个特征图位置设置 9 个锚框 (3 种尺度 × 3 种宽高比)。RPN 预测每个锚框是否包含物体,并回归偏移量。NMS (非极大值抑制) 去除重叠检测。
性能: COCO 数据集上 mAP 约 37-42% (ResNet-101-FPN)。推理速度约 5-15 FPS (GPU)。适合对精度要求高、实时性要求不严格的场景。
改进变体: Cascade R-CNN 使用多级检测头逐步精修,mAP 提升 2-4%。HTC (Hybrid Task Cascade) 结合实例分割进一步提升。
YOLO 系列 - 实时目标检测的演进
YOLO (You Only Look Once) 将检测视为回归问题,单次前向传播即可完成检测,开创了实时目标检测的先河。从 YOLOv1 到 YOLOv8/YOLO11,持续在速度和精度间取得更好平衡。
YOLO 核心思想: 将图像划分为 S×S 网格,每个网格单元预测 B 个边界框和 C 个类别概率。所有预测在单次网络前向传播中完成,无需候选区域生成。
版本演进:
- YOLOv3 (2018): 多尺度预测 (3 个尺度),Darknet-53 骨干。mAP 33%, 30+ FPS
- YOLOv5 (2020): PyTorch 实现,易用性大幅提升。自动锚框计算,数据增强
- YOLOv8 (2023, Ultralytics): 无锚框设计,解耦头,改进的损失函数。mAP 53.9% (COCO), 实时
- YOLO11 (2024): 最新版本,效率和精度进一步提升
部署优势: YOLO 模型可导出为 ONNX、TensorRT、CoreML 等格式,部署到边缘设备 (Jetson、手机)。YOLOv8-nano 在手机上可达 30+ FPS。
SSD 和 RetinaNet - 单阶段检测器变体
SSD 和 RetinaNet 是单阶段检测器的重要变体,各自解决了不同的技术挑战。
SSD (Single Shot MultiBox Detector, 2016):
- 在多个不同分辨率的特征图上检测不同大小的物体
- 浅层特征图检测小物体,深层特征图检测大物体
- VGG-16 骨干,6 个检测层
- 速度: 59 FPS (300×300 输入),mAP: 74.3% (VOC2007)
RetinaNet (2017):
- 提出 Focal Loss 解决类别不平衡问题 (背景远多于前景)
- Focal Loss: FL(p) = -α(1-p)^γ log(p),对易分类样本降低权重
- FPN 骨干 + 分类和回归两个子网络
- 首次使单阶段检测器精度超越两阶段方法
- mAP: 40.8% (COCO),速度适中
单阶段 vs 两阶段总结: 单阶段检测器 (YOLO, SSD, RetinaNet) 速度快,适合实时应用; 两阶段检测器 (Faster R-CNN) 精度高,适合离线分析。近年来单阶段方法精度不断提升,差距已大幅缩小。
最新趋势 - 基于 Transformer 的检测器和基础模型
Transformer 架构和大规模预训练正在重塑目标检测领域,带来全新的设计范式。
DETR (2020, Facebook):
- 首个端到端 Transformer 检测器,无需锚框和 NMS
- 使用匈牙利算法进行二分图匹配的集合预测
- 简化了检测流水线,但训练收敛慢
DINO (2022):
- 改进的 DETR,使用去噪训练和对比学习
- COCO mAP 63.3% (Swin-L 骨干),超越所有先前方法
- 训练效率大幅提升 (12 epoch 即可收敛)
Grounding DINO + SAM:
- 开放词汇检测: 输入文本描述即可检测任意物体
- 结合 SAM (Segment Anything) 实现零样本检测+分割
- 无需针对特定类别训练,通用性极强
RT-DETR (2023, 百度): 实时 DETR 变体,在保持 Transformer 优势的同时达到 YOLO 级别的速度。混合编码器设计,无需 NMS 后处理。
实际选型标准与部署策略
根据具体应用场景选择合适的检测模型,并考虑部署环境的约束。
选型决策树:
- 实时性要求 (>30 FPS): YOLOv8/YOLO11。边缘设备选 nano/small 变体
- 最高精度优先: DINO 或 Co-DETR。需要强力 GPU
- 开放词汇/零样本: Grounding DINO。无需重新训练即可检测新类别
- 资源受限 (手机/嵌入式): YOLOv8-nano 或 MobileNet-SSD
- 少量标注数据: 预训练模型微调,或使用 Grounding DINO 零样本
部署优化:
- 量化: FP32→FP16→INT8,速度提升 2-4 倍,精度损失 <1%
- TensorRT: NVIDIA GPU 上的推理优化,自动算子融合和内存优化
- ONNX Runtime: 跨平台推理,支持 CPU/GPU/NPU
- 模型剪枝: 去除冗余通道,减小模型体积
数据标注建议: 每个类别至少 500-1000 张标注图像。使用 CVAT 或 Label Studio 进行标注。主动学习策略: 先用少量数据训练,模型预标注,人工修正,迭代提升。