[You Only Look Once: Unified, Real-Time Object Detection] 阅读笔记
You Only Look Once: Unified, Real-Time Object Detection
[论文连接] (https://arxiv.org/abs/1506.02640)
背景
YOLO 之前的目标检测算法是在将一个分类器在测试图片的各种位置和不同缩放的情况下进行检测。
-
Deformable parts models (DPM):使用滑动窗口的方法,使得分类器在整个图片上均匀地进行检测
-
R-CNN 系列:使用区域建议网络生成潜在的可能包含目标的边界框,并且使用分类器在目标框上进行二分类。然后,使用分类器和后处理过程去细化边界框、去除重叠检测,并对目标进行评分。
相比与传统目标检测算法,YOLO的优点
YOLO 将目标检测看作是一个单一的回归问题,直接从图片像素回归出边界坐标和类别概率。
- YOLO 非常地快。将目标检测看作回归问题,不需要复杂的过程。
- YOLO 在进行预测时对全图语义进行理解。YOLO 在训练和推理的过程中,显式的直接编码全局语义信息。
- YOLO 学习到了目标更加泛化地表达。
Unified Detection
-
YOLO 系统将输入图像划分为 \(S \times S\) 个网络。如果一个目标的中心点落在一个网络格里,那么这个网络格负责检测这个目标。
-
每个网络格预测 B 个边界框和每个框的置信分数。定义置信度为 \(Pr(Object) * IOU_{pred}^{truth}\).
-
每个边界框包含 5 个预测值:\(x,y,w,h\) 和置信分数。其中,\((x,y)\) 表示边界框中心点相对于网格格边界的差值。\((w,h)\) 是相对于这个图像的值。
-
每个网格还需要预测 C 个类别条件概率,\(Pr(Class_i|Object)\)。此时,不用考虑每个网格有 B 个边界框,对于每个网格,只有 C 个类别条件概率。
-
测试阶段,将类别条件概率与边界框置信分数相乘。
- 模型最后预测编码为 \(S \times S \times (B*5 + C)\). 在 \(PASCAL VOC\) 数据集上设置 \(S=7,B=2,C=20\), 即最后预测为 \(7 \times 7 \times 30\) 的向量。
Network Design
- 网络模型结构有 24 层卷积和 2 层全连接层组成。整个网络结构如下图所示。
Training
-
网络模型先在 \(ImageNet\) 1000 类别的数据集上预训练。预训练时,使用网络模型的前 20 层,后面接一个平均池化层和一个全连接层。
-
网络模型中最后一层使用线性激活函数,其他层使用 \(Leaky \quad rectified \quad linear \quad activation\). 公式如下:
-
在训练阶段,仅仅使得一个边界预测器负责一个目标。一个预测器只负责预测结果和 ground truth 的IOU最大的那一个。
-
训练时的损失函数如下:
Inference
- 对于每张图片,网络模型预测出 98 个边界框和49组类别概率。
Limitations of YOLO
-
YOLO 每个网格仅仅预测出 2 个边界框和 1 个类别。限制了 YOLO 去预测有大量群居的目标。
-
YOLO 模型很难推广到具有特殊长宽比的目标检测中。
-
YOLO 损失函数中同等对大边界框和小边界框的错误,使得小的边界框容易出现更大的错误。