目标检测基础与传统方法
目标检测基础与传统方法
文档目标:系统介绍目标检测任务的基本概念、评价指标、传统方法(以 R-CNN 系列为代表)及其局限性,为理解 YOLO 等现代单阶段检测器奠定基础。
1. 什么是目标检测?
目标检测(Object Detection)是计算机视觉中的核心任务之一,其目标是在图像中:
- 定位(Localization):找出所有感兴趣物体的位置(通常用边界框 bounding box 表示);
- 分类(Classification):识别每个物体所属的类别(如“人”、“车”、“猫”等)。
与图像分类(只输出一个全局标签)和语义分割(对每个像素分类)不同,目标检测需要同时完成空间定位与语义识别。
典型输出格式为:
(类别, 置信度, [x_min, y_min, x_max, y_max])
2. 核心概念与评价指标
2.1 边界框(Bounding Box)
用矩形框包围目标,常用表示方式:
(x, y, w, h):中心坐标 + 宽高(x₁, y₁, x₂, y₂):左上角与右下角坐标
2.2 交并比(IoU, Intersection over Union)
衡量预测框与真实框(Ground Truth)重合程度的指标:
$$
\text{IoU} = \frac{\text{Area of Overlap}}{\text{Area of Union}}
$$
- IoU ∈ [0, 1],值越大表示定位越准确。
- 通常设定阈值(如 IoU ≥ 0.5)判断预测是否“正确”。
2.3 非极大值抑制(NMS, Non-Maximum Suppression)
解决同一物体被多个框重复检测的问题:
- 按置信度排序所有预测框;
- 选取最高分框,抑制与其 IoU 超过阈值(如 0.4)的其他框;
- 重复直至无剩余框。
2.4 召回率(Recall)与精度(Precision)
- 召回率:检测出的正样本 / 所有真实正样本 → 关注“漏检”
- 精度:检测出的正样本中真正正确的比例 → 关注“误检”
常通过 mAP(mean Average Precision)综合评估模型性能。
3. 传统目标检测方法概述
早期方法主要采用“两阶段范式”(Two-Stage Pipeline):
- 生成候选区域(Region Proposal):找出可能包含物体的区域;
- 对每个区域进行分类与精修。
这种方法流程清晰,但速度慢、难以端到端训练。
4. 典型代表:R-CNN 系列
4.1 R-CNN(Regions with CNN features, 2014)
流程:
- 使用 Selective Search 生成约 2000 个候选区域(Region Proposals);
- 对每个区域缩放到固定尺寸(如 227×227);
- 输入 CNN 提取特征(如 AlexNet);
- 用 SVM 分类器判断类别;
- 用回归器微调边界框位置。
缺点:
- 计算冗余:每个候选区域独立前向传播,无法共享特征;
- 速度极慢(GPU 上一张图需 47 秒);
- 多阶段训练(CNN 预训练 → SVM 微调 → BBox 回归),流程复杂。
4.2 Fast R-CNN(2015)
改进:
- 整张图像只过一次 CNN,得到特征图;
- 在特征图上对应候选区域位置提取 RoI(Region of Interest);
- 使用 RoI Pooling 将不同大小的 RoI 映射为固定维度特征;
- 后接全连接层,同时输出类别概率与边界框偏移量。
优势:
- 特征共享,速度大幅提升(约 2 秒/图);
- 端到端训练(分类 + 回归联合优化);
- 不再依赖 SVM,统一用 softmax 分类。
仍存在的问题:
- 候选区域生成(Selective Search)仍耗时,且非可学习模块。
4.3 Faster R-CNN(2016)
核心创新:引入 RPN(Region Proposal Network)
- RPN 是一个轻量子网络,直接在 CNN 特征图上预测候选框;
- 使用 anchor 机制(预设多尺度/比例的参考框);
- RPN 与检测头共享主干特征,实现完全端到端训练。
意义:
- 候选区域生成从“手工设计”变为“可学习”;
- 推理速度进一步提升(约 0.2 秒/图,接近实时);
- 成为两阶段检测器的里程碑。
5. 传统方法的核心痛点
尽管 R-CNN 系列不断优化,但其两阶段架构存在固有缺陷:
| 问题 | 说明 |
|---|---|
| 速度瓶颈 | 候选区域生成 + 逐区域处理,难以满足实时需求(如自动驾驶、视频监控) |
| 流程复杂 | 多模块拼接(Proposal → Feature Extract → Classify → Regress),调试困难 |
| 非端到端 | R-CNN 中 SVM 与 CNN 分离;即使 Fast/Faster R-CNN 也依赖 RoI 操作,计算不连续 |
| 定位依赖后处理 | NMS 等步骤无法融入网络梯度更新 |
正是这些局限,催生了 YOLO(You Only Look Once)等单阶段(One-Stage)检测器的诞生——将检测视为单次回归问题,实现真正意义上的端到端实时检测。
附录:关键术语速查表
| 术语 | 解释 |
|---|---|
| Selective Search | 基于颜色、纹理、形状等启发式规则合并超像素,生成候选区域 |
| RoI Pooling | 将任意大小的感兴趣区域池化为固定尺寸特征(如 7×7) |
| Anchor | 预设的参考框(如 9 种尺度/比例),用于回归偏移量 |
| End-to-End | 整个系统从输入到输出可一次性训练,无需中间人工干预 |
| mAP | 平均精度均值,综合衡量检测器在不同 IoU 阈值下的性能 |
✅ 本篇文档为理解 YOLO 的创新价值提供必要背景。接下来可阅读《YOLOv1 原理详解》了解如何突破传统范式。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 From Zero to Hero!