YOLOv1论文精读:You Only Look Once如何重新定义目标检测?

论文:You Only Look Once: Unified, Real-Time Object Detection
作者:Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi
1. 背景
目标检测(Object Detection)一直是计算机视觉领域最重要的任务之一。与图像分类不同,目标检测不仅需要回答图像中是什么?还需要回答目标在哪里?因此目标检测同时完成两个任务:
- 分类(Classification)
- 定位(Localization)
例如输入一张街景图:

模型需要输出:
|
|
在YOLOv1提出之前,一些方法比如R-CNN1会先在图像中找到Bounding Boxes,然后对这些Bounding Boxes在分类器上进行分类。之后会优化Bounding Boxes,消除重复的检测结果,并对Bounding Boxes重新评估打分。

这种方法流程很复杂,由于各个组件都要单独训练,导致非常难优化。
2. 论文核心思想
回归思想
传统目标检测方法流程如下:
flowchart TD
A[图像] --> B[寻找候选区]
B --> C[分类]
C --> D[调整边框位置]
D --> E[目标]
flowchart TD
A[图像] --> B[寻找候选区]
B --> C[分类]
C --> D[调整边框位置]
D --> E[目标]
flowchart TD
A[图像] --> B[寻找候选区]
B --> C[分类]
C --> D[调整边框位置]
D --> E[目标]
|
|
YOLOv1流程如下:
flowchart TD
A[图像] --> B[CNN]
B --> C[直接预测]
C --> D[边框+目标]
flowchart TD
A[图像] --> B[CNN]
B --> C[直接预测]
C --> D[边框+目标]
flowchart TD
A[图像] --> B[CNN]
B --> C[直接预测]
C --> D[边框+目标]
|
|
YOLOv1将目标检测视为一个回归问题,直接从原始图像输出边框和类概率。只需要看一次图像,就可以预测是什么物体以及它在哪里2。

Grid Cell思想
将输入图片划分为多个Grid Cell,每个Grid Cell负责检测:目标中心点落在该区域的目标。

每个Grid Cell预测。
Bounding Box预测
每个Grid Cell预测个Bounding Box,每个Bounding Box包含。其中表示目标中心点相对于Grid Cell的位置。表示目标宽和高。表示。

3. 网络结构
YOLOv1主要由24个卷积层和2个全连接层组成2:

输入,输出。
4. Loss函数

其中:
- :第个Grid Cell是否包含对象
- :它指示第个Grid Cell的第个Bounding Box是否“负责”该对象的预测
- :第个Grid Cell的
- :第个Grid Cell预测的
- :有多少个类
- :第个Grid Cell包含类对象的条件概率
- :第个Grid Cell预测为类对象的条件概率
5. 训练过程
作者在 PASCAL VOC 2007 和 PASCAL VOC 2012 的训练集与验证集上,对网络进行了约 135 个 Epoch 的训练。当测试 VOC 2012 数据集时,还将 VOC 2007 的测试集 一并加入训练数据中。
整个训练过程中采用以下超参数:
- Batch Size:64
- Momentum:0.9
- Weight Decay:0.0005
学习率(Learning Rate)采用分阶段调整策略:
- 训练初期,将学习率从 1×10⁻³ 缓慢提升到 1×10⁻²(Warm-up)。如果一开始就使用较大的学习率,模型通常会因为梯度不稳定(unstable gradients)而发生训练发散(diverge)。
- 使用 1×10⁻² 继续训练 75 个 Epoch。
- 将学习率降低至 1×10⁻³,训练 30 个 Epoch。
- 最后将学习率进一步降低至 1×10⁻⁴,再训练 30 个 Epoch。
为了减少过拟合(Overfitting),作者采用了 Dropout 和大量的数据增强(Data Augmentation)。
其中:
- 在第一个全连接层(Fully Connected Layer)之后加入一个 Dropout 层,其丢弃率(Dropout Rate)为 0.5。 Dropout 的作用是防止各层神经元之间产生协同适应(Co-adaptation),提高模型的泛化能力。
数据增强方面,主要包括:
- 对输入图像进行随机缩放(Random Scaling)和随机平移(Random Translation),变化幅度最高可达到原始图像尺寸的 20%。
- 在 HSV(Hue、Saturation、Value)颜色空间中,对图像进行随机颜色扰动。
6. 推理过程
YOLOv1 在推理阶段仅需一次前向传播即可同时完成目标定位与分类,在 VOC 上输出 98 个候选框。由于大目标或跨网格目标可能产生重复检测,作者采用 NMS 去除冗余框,从而进一步提升约 2–3% 的 mAP,同时几乎不影响其高速检测特性。
7. 源码实现
可参考Yolov1-PyTorch实现。
|
|
|
|
8. 总结
YOLOV1最重要的三个思想是:
- 把目标检测统一成一个回归问题:直接从整张图预测Bounding Boxes和类别,而不是先生成候选框再分类。
- 整张图划分为Grid Cell:目标中心落在哪个网格,哪个网格就负责预测该目标。
- 一次前向传播完成预测:网络一次输出所有预测框和类别,再通过NMS得到最终结果,因此速度远远快于当时的两阶段检测器。
9. 推荐
Concept of YOLOv1:The Evolution of Real-Time Object Detection
YOLOv1 Paper Walkthrough: The Day YOLO First Saw the World
YOLO Object Detection | YoloV1 Explanation and Implementation Tutorial
相关内容
支付宝
微信