2D目标检测,是计算机视觉领域最核心的任务之一。它的目标很简单:在一张图片中,同时回答两个问题——“是什么?”(分类)和“在哪里?”(定位)。
这个任务的发展,大致可以分为几个清晰的时代。
1. 蛮荒时代:传统方法 (2014年以前)
在深度学习一统江湖之前,目标检测是一个繁琐、多阶段的过程。
- 核心思想:滑动窗口(Sliding Window) + 手工特征(Hand-crafted Features) + 分类器(Classifier)。
- 流程拆解:
- 区域选择:用一个固定大小的窗口,在图像上从左到右、从上到下地滑动。为了检测不同大小的物体,还需要缩放窗口或图像,重复滑动。这个过程会产生海量的候选区域。
- 特征提取:对于每一个候选区域,使用经典的特征描述子,如 HOG (Histogram of Oriented Gradients) 或 SIFT (Scale-Invariant Feature Transform),将其转换成一个固定长度的特征向量。
- 分类:将提取出的特征向量,喂给一个预先训练好的分类器,如 SVM (Support Vector Machine),来判断这个区域里是“目标”还是“背景”。
- 痛点:
- 计算量巨大:滑动窗口策略毫无重点,会产生大量冗余的计算。
- 特征表达力弱:手工设计的特征,对光照、形变、遮挡等情况的鲁棒性很差。
2. 两阶段王朝:精度为王 (2014 – 2016)
2012年AlexNet的出现,标志着深度学习时代的到来。目标检测领域也迎来了革命。
- 核心思想:先找“可能”是物体的区域,再对这些区域进行精细分类和定位。这种“先粗后精”的思路,被称为两阶段(Two-Stage)方法。
- 代表模型:R-CNN 家族
- R-CNN (2014):
- 区域提名(Region Proposal):用选择性搜索(Selective Search)算法,替代了蛮力的滑动窗口,生成约2000个高质量的候选框。
- 特征提取:将这2000个候选框,逐一缩放到固定尺寸,然后分别送入一个CNN(如AlexNet)中提取特征。
- 分类与回归:用SVM进行分类,再用一个线性回归器对边框位置进行微调。
- 问题:每个候选框都要独立过一遍CNN,计算冗余极大,速度极慢。
- Fast R-CNN (2015):
- 核心改进:只对整张图像进行一次CNN特征提取,得到一个特征图(Feature Map)。
- 将选择性搜索生成的候选框,投影(Project)到这个特征图上。
- 引入 RoI Pooling (Region of Interest Pooling) 层,从特征图上为每个不同大小的候选框提取出固定尺寸的特征向量。
- 结果:共享了卷积计算,速度大幅提升。但瓶颈转移到了CPU上运行的选择性搜索。
- Faster R-CNN (2015):
- 终极形态:引入了RPN (Region Proposal Network),彻底抛弃了选择性搜索。
- RPN是一个小型的全卷积网络,它直接在CNN的特征图上滑动,高效地生成高质量的候选框。
- 意义:首次将区域提名步骤也集成到了GPU中,实现了端到端(End-to-End)的训练。Faster R-CNN 成为了后续无数两阶段算法的基石。
- R-CNN (2014):
3. 单阶段崛起:速度至上 (2016 – 至今)
两阶段方法精度虽高,但速度仍难以满足实时应用的需求。于是,另一条技术路线应运而生。
- 核心思想:取消区域提名阶段,直接在整张图上回归出物体的类别和位置。这种一步到位的方式,被称为单阶段(One-Stage)方法。
- 代表模型:
- YOLO (You Only Look Once) (2016):
- 思路:将图像划分为SxS的网格(Grid)。每个网格单元负责预测中心点落入其中的物体。
- 特点:结构极其简洁,速度飞快,真正意义上实现了实时检测。但早期版本对小物体的检测效果不佳。
- SSD (Single Shot MultiBox Detector) (2016):
- 思路:借鉴了Faster R-CNN中Anchor Box的思想,并在不同层级的特征图上进行预测。
- 特点:低层级的特征图分辨率高,适合检测小物体;高层级的特征图感受野大,适合检测大物体。在速度和精度之间取得了很好的平衡。
- YOLO (You Only Look Once) (2016):
4. 现代格局:百花齐放 (2018 – 至今)
随着研究的深入,单阶段和两阶段的界限逐渐模糊,新的范式不断涌现。
- Anchor-Free 时代:
- 背景:YOLO和SSD等方法都依赖于预设的锚框(Anchor Box),这些锚框的设计本身就是一组复杂的超参数,影响性能且不够优雅。
- 思路:抛弃锚框,回归到更本质的检测方式。
- 代表:
- CenterNet:将物体检测视为关键点(中心点)预测问题,然后回归其宽高。
- FCOS (Fully Convolutional One-Stage):直接在每个像素位置上预测其到目标边界的四条距离,非常直观。
- Transformer 革命:
- 背景:Transformer在NLP领域取得巨大成功后,研究者开始尝试将其引入CV。
- 代表:DETR (DEtection TRansformer) (2020):
- 核心思想:将目标检测视为一个集合预测(Set Prediction)问题。
- 流程:利用CNN提取图像特征,然后输入到一个Transformer的Encoder-Decoder结构中,直接输出一个无序的、固定数量的预测框集合。
- 颠覆性:它彻底抛弃了锚框和NMS(非极大值抑制)这两个在过去目标检测领域几乎不可或缺的手工组件,提供了一个极其简洁的端到端方案。虽然早期版本训练慢、对小物体不友好,但它开辟了全新的道路。
总结
范式 (Paradigm) | 代表模型 | 核心思想 | 优/缺点 |
---|---|---|---|
传统方法 | HOG + SVM | 滑动窗口 + 手工特征 | 缺点: 慢,鲁棒性差 |
两阶段 (Two-Stage) | Faster R-CNN | 先找候选框,再精细分类 | 优点: 精度高 缺点: 速度相对较慢 |
单阶段 (One-Stage) | YOLO, SSD | 直接在图上回归类别和位置 | 优点: 速度快 缺点: 早期精度稍逊 |
Anchor-Free | CenterNet, FCOS | 抛弃锚框,用关键点或距离回归 | 优点: 结构更简洁,超参少 |
Transformer | DETR | 将检测视为集合预测问题 | 优点: 抛弃NMS,端到端 缺点: 训练收敛慢 |
2D目标检测的演进之路,本质上是一个不断追求更高精度、更快速度、更少人工干预(End-to-End)的过程。从复杂的流程到简洁的端到端模型,这条路还在继续。
发表回复