目标检测概述 - 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)
补充:目标检测 (Object Detection) 是同时估计图像中物体的位置 (边界框) 与类别 (类) 的任务。其输出包括:边界框 (围住物体的矩形坐标 x, y, width, height)、类别标签 (人、车、狗等) 与置信度分数 (0.0-1.0)。评价指标方面,mAP (mean Average Precision) 是所有类别 AP (Precision-Recall 曲线下面积) 的平均值,FPS (Frames Per Second) 表示每秒处理的帧数。检测器可分为两阶段检测器 (Two-Stage,先区域提议再分类) 与单阶段检测器 (One-Stage,区域提议与分类同时执行),后者以 CenterNet、FCOS 为代表。
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) 结合实例分割进一步提升。
补充:该系列经历了 R-CNN → Fast R-CNN → Faster R-CNN 的演进,最终实现了端到端训练。RoI Align 消除了量化误差从而提升精度;Head 负责对各个 Region Proposal 执行类别分类与边界框回归;FPN (Feature Pyramid Network) 则是多尺度检测的关键技术。性能方面,在 COCO 数据集上 mAP 为 42-47% (ResNet-101 + FPN)。
YOLO 系列 - 实时目标检测的演进
YOLO (You Only Look Once) 将检测视为回归问题,单次前向传播即可完成检测,开创了实时目标检测的先河。从 YOLOv1 到 YOLO26,持续在速度和精度间取得更好平衡。
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):通过 C3k2 模块等改进,以更少参数达到与 YOLOv8 相当的精度
- YOLO12 (2025) / YOLO26 (2026): YOLO12 引入以注意力机制为核心的架构;YOLO26 (2026 年 1 月发布) 实现无需 NMS 后处理的端到端推理,并针对边缘部署优化
部署优势: YOLO 模型可导出为 ONNX、TensorRT、CoreML 等格式,部署到边缘设备 (Jetson、手机)。YOLOv8-nano 在手机上可达 30+ FPS。
补充:YOLO 的基本原理是把输入图像分割成 SxS 的网格,每个网格单元同时预测 B 个边界框与 C 个类别的概率。由于全部预测都在一次 CNN 前向传播中完成,因此速度极快。模型尺寸有 n/s/m/l/x 等变体,可按用途在速度与精度之间取舍:YOLOv5n 约 1.9M 参数,640 × 640 输入下约 200 FPS;YOLOv5s 约 7.2M 参数,mAP 37.4%,约 150 FPS;YOLOv5x 约 86.7M 参数,mAP 50.7%,约 30 FPS。YOLOv8 (2023) 采用无锚框设计,不再需要预先定义锚框,并通过 Decoupled Head (分离分类与回归) 提升精度,在 COCO 上达到 mAP 53.9% (YOLOv8x)。YOLO11 (2024) 借助 C3k2 模块与 SPPF 的改良,用少 22% 的参数实现了与 YOLOv8 相当的精度。
实现示例:from ultralytics import YOLO,model = YOLO('yolov8n.pt'),results = model('image.jpg', conf=0.5)。
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) 精度高,适合离线分析。近年来单阶段方法精度不断提升,差距已大幅缩小。
补充:SSD 的特点之一是在 6 种不同分辨率的特征图上进行检测 (38x38、19x19、10x10、5x5、3x3、1x1)。性能为 COCO mAP 25-28% (SSD300),约 60 FPS。RetinaNet 的 Focal Loss 默认取 γ=2、α=0.25,性能为 COCO mAP 40.4% (ResNet-101 + FPN),约 8 FPS。EfficientDet (2020) 以 EfficientNet 作为骨干网络,并用 BiFPN (Bidirectional FPN) 实现高效的多尺度特征融合。
最新趋势 - 基于 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 后处理。
补充:2020 年以后,随着 Vision Transformer 的引入,目标检测的范式发生了变化。DETR (Detection Transformer, 2020) 由 Facebook 提出,把目标检测表述为集合预测问题,不需要 NMS (Non-Maximum Suppression),可端到端训练。其架构为 CNN Backbone → Transformer Encoder → Transformer Decoder → 预测头,Decoder 的 Object Query (可学习的查询) 与各个物体一一对应,并通过 Hungarian 匹配与真值配对。DINO (2022) 是 DETR 的改良,把 Deformable Attention 与对比学习结合,在 COCO 上达到 mAP 63.3%。RT-DETR (2023) 是实时版 DETR,以与 YOLO 相当的速度 (100+ FPS) 实现 DETR 级别的精度。YOLO-World (2024) 为 YOLO 加入开放词汇能力,可实时进行文本指定检测。基础模型方面,把 DINOv2、SAM、CLIP 等大规模预训练模型用作特征提取器,再用少量任务专用数据微调,已成为主流做法。
实际选型标准与部署策略
根据具体应用场景选择合适的检测模型,并考虑部署环境的约束。
选型决策树:
- 实时性要求 (>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 进行标注。主动学习策略:先用少量数据训练,模型预标注,人工修正,迭代提升。
补充:按用途推荐的模型:自动驾驶用 YOLOv8/YOLO11 (必须实时,30+ FPS);监控摄像头用 YOLOv8m (精度与速度均衡);医疗影像用 Faster R-CNN 或 DINO (精度优先、无速度约束);零售 (盘点) 用 EfficientDet (边缘设备推理);无人机影像用 YOLOv8s (轻量、边缘推理);开放词汇场景用 Grounding DINO 或 YOLO-World。部署优化方面,量化 (INT8) 可把推理速度提升 2-4 倍,精度仅下降 1-2% mAP;TensorRT 面向 NVIDIA GPU 优化可加速 2-3 倍;ONNX Runtime 是跨平台推理引擎;OpenVINO 针对 Intel CPU/GPU 优化;CoreML 面向 Apple 设备 (iPhone、Mac)。在 Jetson Nano/Xavier、Raspberry Pi、智能手机等边缘设备上推理时,模型轻量化不可或缺。YOLOv8n (1.9M 参数) 在 Jetson Nano 上可达 25 FPS,在 iPhone 15 Pro 上可达 60 FPS。标注工具方面,Roboflow、CVAT、Label Studio 被广泛使用。