// learning_article

计算机视觉中的目标检测技术

从R-CNN到YOLO,全面理解目标检测算法的演进

技术文章计算机视觉 19分钟2025-03-1514,200 阅读
目标检测YOLOFaster R-CNN计算机视觉

引言

目标检测是计算机视觉的核心任务之一,需要在图像中定位并识别多个目标。从早期的滑动窗口到现代的端到端深度学习方法,目标检测技术经历了巨大的发展。本文将系统介绍主流的目标检测算法。

一、目标检测基础

1.1 任务定义

目标检测需要解决两个子问题:

  • 分类(Classification): 目标是什么类别
  • 定位(Localization): 目标在图像中的位置(边界框)

1.2 评价指标

IoU (Intersection over Union):

  • 预测框和真实框的交并比
  • IoU = 交集面积 / 并集面积
  • 通常IoU > 0.5视为检测成功

精确率(Precision)和召回率(Recall):

  • Precision = TP / (TP + FP)
  • Recall = TP / (TP + FN)

mAP (mean Average Precision):

  • 多个类别AP的平均值
  • 目标检测的主要评价指标

二、两阶段检测器

2.1 R-CNN系列

R-CNN (2014):

  • 流程:
    • 1. Selective Search生成候选区域(~2k)
    • 2. CNN提取特征
    • 3. SVM分类
    • 4. 边界框回归
  • 缺点: 速度慢,每个候选区域都要过CNN

Fast R-CNN (2015):

  • 改进:
    • 整张图过一次CNN,生成特征图
    • RoI Pooling提取候选区域特征
    • 端到端训练
  • 速度提升10倍

Faster R-CNN (2015):

  • 核心创新: Region Proposal Network (RPN)
  • RPN用CNN生成候选区域,替代Selective Search
  • 实现完全端到端训练
  • 成为两阶段检测器的标准范式

2.2 RPN原理

Anchor机制:

  • 在特征图每个位置设置多个预设框(Anchors)
  • 不同尺度和长宽比(如3×3=9个)
  • 预测每个Anchor是否包含目标

输出:

  • 分类: 目标/背景的概率
  • 回归: 边界框偏移量

2.3 后续改进

  • Mask R-CNN: 添加分割分支,支持实例分割
  • Cascade R-CNN: 级联多个检测器,逐步提升IoU阈值
  • FPN: 特征金字塔网络,多尺度特征融合

三、单阶段检测器

3.1 YOLO系列

YOLOv1 (2016):

  • 核心思想: 将检测视为回归问题
  • 将图像分成S×S网格
  • 每个网格预测B个边界框和C个类别概率
  • 速度快(45 FPS),但精度较低

YOLOv2 / YOLO9000 (2017):

  • 改进:
    • Batch Normalization
    • 高分辨率分类器
    • Anchor Boxes
    • 多尺度训练
  • mAP提升,速度保持

YOLOv3 (2018):

  • Darknet-53骨干网络
  • 多尺度预测(3个尺度)
  • 更好的小目标检测能力

YOLOv4/v5/v7/v8:

  • 各种tricks集成: CSPNet, PANet, Mosaic增强等
  • 持续提升精度和速度
  • 工程化优化,易于部署

3.2 SSD (Single Shot Detector)

核心思想:

  • 在多个特征图上进行预测
  • 不同层负责不同尺度的目标
  • 浅层检测大目标,深层检测小目标

优势:

  • 速度快,多尺度检测能力强
  • 平衡了速度和精度

3.3 RetinaNet

核心贡献: Focal Loss:

  • 问题: 单阶段检测器的类别不平衡
  • 解决: 降低易分类样本的权重
  • 使模型专注于困难样本

效果:

  • 单阶段检测器达到两阶段精度
  • 保持速度优势

四、Anchor-Free检测器

4.1 CenterNet

  • 将目标表示为中心点
  • 预测中心点的热力图
  • 回归目标的宽高和偏移
  • 无需NMS后处理

4.2 FCOS

  • 全卷积单阶段检测
  • 逐像素预测
  • 引入中心度(centerness)提升质量

4.3 优势

  • 无需设计Anchor,减少超参数
  • 更简洁的架构
  • 更好地处理不同尺度和长宽比

五、Transformer检测器

5.1 DETR

核心思想:

  • 将检测视为集合预测问题
  • 使用Transformer编码器-解码器
  • 二分图匹配损失
  • 无需NMS和Anchor

特点:

  • 端到端,架构简洁
  • 训练收敛慢
  • 小目标检测效果一般

5.2 改进版本

  • Deformable DETR: 可变形注意力,加速收敛
  • Conditional DETR: 条件查询,提升性能
  • DAB-DETR: 动态Anchor框
  • DINO: 对比去噪训练

六、实践技巧

6.1 数据增强

  • 基础增强: 翻转、旋转、缩放、裁剪
  • 颜色增强: 亮度、对比度、饱和度
  • Mosaic: 拼接4张图像
  • MixUp: 图像混合
  • CutOut/CutMix: 随机遮挡

6.2 模型选择

场景考虑:

  • 高精度需求: Cascade R-CNN, DINO
  • 实时检测: YOLOv8, YOLOv7
  • 嵌入式设备: YOLOv5s, MobileNet-SSD
  • 小目标检测: Faster R-CNN + FPN

6.3 训练技巧

  • 预训练权重: 使用ImageNet或COCO预训练
  • 学习率策略: Warmup + Cosine Annealing
  • 多尺度训练: 提升鲁棒性
  • 标签平滑: 防止过拟合
  • 测试时增强(TTA): 提升精度

6.4 后处理

NMS (Non-Maximum Suppression):

  • 去除重复检测框
  • 保留置信度最高的框
  • IoU阈值通常设为0.5

改进版本:

  • Soft-NMS: 降低而非删除重叠框
  • Weighted Boxes Fusion: 融合多个检测结果

七、部署优化

7.1 模型加速

  • 剪枝: 移除冗余参数
  • 量化: FP16或INT8精度
  • 知识蒸馏: 大模型指导小模型
  • 神经架构搜索: 自动寻找高效架构

7.2 推理框架

  • ONNX Runtime: 跨平台,易用
  • TensorRT: NVIDIA GPU优化
  • OpenVINO: Intel硬件优化
  • ncnn/MNN: 移动端推理

总结

目标检测技术从两阶段到单阶段,从Anchor-based到Anchor-free,不断演进。选择合适的算法需要权衡精度、速度和部署成本。理解各类算法的原理,结合实际需求,才能构建高效的检测系统。