第一阶段:两阶段检测(Two Stage Detection)
两阶段检测的核心是先提取候选区域,再对区域进行分类与定位,精度较高但速度相对较慢。
- R-CNN(2014)
这是两阶段检测的开篇工作,流程分为三步:
-
区域候选:用 Selective Search 提取约 2000 个候选框
-
特征提取:将每个候选框缩放到固定尺寸,单独输入 CNN 提取特征
-
后处理:SVM 做分类、NMS(非极大值抑制)去重、Bbox 回归修正框的位置
-
相关改进:针对传统 NMS 的缺陷,衍生出 Soft-NMS、IoU-Net、Softer-NMS 等优化方案
-
存在问题:每个候选框单独过 CNN,计算冗余速度慢;多阶段训练,特征无法端到端更新
- Fast R-CNN(2015)
针对 R-CNN 的缺陷做了优化,实现了特征共享:
-
整张图输入 CNN 得到全局特征图,不再单独处理每个候选框
-
提出ROI Pooling:将不同尺寸的候选区域,池化到固定尺寸的特征向量
-
多任务损失:同时完成分类(交叉熵)与定位(Smooth L1)的端到端训练,还可通过 SVD 加速全连接层
- 相关改进:针对 ROI Pooling 的量化误差,后续提出了 ROI Align(双线性插值解决量化问题)、Precise ROI Pooling(无量化的精确池化)
- Faster R-CNN(2015)
将候选框提取也替换为网络模块,实现了完全的端到端检测:
-
Backbone:用 VGG/ResNet 等网络提取全局特征
-
RPN(区域候选网络):
-
引入 Anchor 机制:预定义 3 种尺度、3 种宽高比,共 9 种锚框,覆盖不同大小的目标
-
分支预测:对每个 Anchor,预测前景 / 背景分类,以及框的偏移回归
-
Proposal 层:根据 RPN 的结果筛选出候选区域
- 后续接 Fast R-CNN 的检测头,完成最终的分类与定位
- 训练方式:可采用交替训练 RPN 与检测头,也可直接端到端联合训练
第二阶段:单阶段检测(One Stage Detection)
单阶段检测去掉了单独的候选区域阶段,直接从图像端到端输出检测结果,大幅提升了检测速度,同时逐步追平两阶段的精度。
- YOLO 系列
YOLO V1(2015)
-
核心思路:将图像划分为 7×7 的网格,每个网格负责预测中心落在该网格的目标,每个网格预测 2 个检测框
-
输出:7×7×(5×2+20),包含框的坐标、置信度、分类概率
-
损失函数:加权多任务损失,对坐标、置信度、分类分别计算损失,对正负样本做权重平衡
-
缺陷:对密集目标、小目标、非常规宽高比的目标检测效果差
YOLO V2(2016)
针对 V1 的缺陷做了大量优化:
-
加入 BN 层、高分辨率分类器,提升特征质量
-
引入 Anchor 机制,通过 K-Means 聚类从数据集自动得到 5 种 Anchor 尺寸,替代手动设计
-
加入细粒度特征融合、多尺度训练,提升对不同大小目标的适配性
YOLO V3(2018)
-
采用残差结构的 Darknet 作为 Backbone
-
引入FPN(特征金字塔),实现 3 个尺度的检测,每个尺度对应 3 种 Anchor,分别检测大中小目标
-
分类用 Logistic 替代 Softmax,支持多标签分类
YOLO V4(2020)
整合了大量工程 Trick,在速度与精度上做了平衡:
-
数据增强:Mosaic、CutMix、自对抗训练(SAT)
-
网络改进:Mish 激活函数、改进的 SAM/PAN 结构
-
损失函数:采用 CIoU Loss,同时考虑重叠面积、中心距离、宽高比
-
正则化:Label Smoothing、Dropblock 等
- RetinaNet(2018)
解决了单阶段检测的核心痛点:正负样本极度不平衡
-
核心创新:Focal Loss,通过降低易分样本的损失权重,让模型更关注难分的正样本,解决了类别不平衡导致的精度问题
-
结构:ResNet+FPN + 全卷积检测头,实现了高精度的单阶段检测
- SSD
另一种经典的单阶段检测算法,利用多尺度特征图做检测,不同层检测不同大小的目标,衍生出 FaceBoxes 等面向特定场景的优化版本。
第三阶段:无锚框检测(Anchor Free Methods)
这是当时的研究趋势,解决了 Anchor 机制的缺陷:Anchor 需要手动调超参数、难适配不同数据集、正负样本不平衡、计算冗余等问题。
- CenterNet(2019)
-
核心思路:将目标建模为中心点,只需要检测目标的中心,再回归目标的宽高即可
-
结构:
-
Backbone:可选 Hourglass、DLA、ResNet 等
-
三个预测头:
-
Center Heatmap:预测中心点的位置,用 Focal Loss 训练
-
Offset:补偿下采样带来的离散误差,用 L1 Loss
-
Size:预测目标的宽高,用 L1 Loss
-
-
优势:不需要 NMS 后处理(通过 3×3 最大池化即可完成去重),速度快精度高,还可扩展到 3D 检测、姿态估计等多任务
- FCOS(2019)
-
核心思路:基于像素的检测,对每个落在目标内的像素,预测该像素到目标四边的距离
-
结构:
-
用 FPN 做分尺度检测,解决目标重叠的问题
-
加入Center-ness分支,给边缘的低质量预测降低权重,提升检测质量
-
-
损失:分类用 Focal Loss,回归用 IoU Loss,需要 NMS 做后处理