- You Only Look Once: Unified, Real-Time Object Detection论文地址
- Paperwithcode在目标检测的排名
- Github参考代码,100k个star
该论文最新由Facebook AI发表于2016年5月,截止现在2024年10月,引用数是52854次
文章目录
- 论文核心内容(省流版阅读这里即可)
- 1. 引言
- 2. YOLO 的新方法
- 3. 端到端优化
- 4. 速度优势
- 5. 性能特点
- 1. 核心思想
- 2. 网络结构
- 3. 如何训练
- 4. 推理过程
- 5. 效果
- 6. 后续工作
论文核心内容(省流版阅读这里即可)
本章节介绍了YOLO(You Only Look Once)作为一种新的目标检测方法,并对其特点和优势进行了说明。下面逐步解析论文的核心内容:
1. 引言
- 传统方法:以前的目标检测方法通常是将分类器重新用于检测任务,即先训练一个分类器,然后将其用于检测。
2. YOLO 的新方法
- 回归问题:YOLO 将目标检测视为一个回归问题,直接从图像中预测出空间上分离的边界框(bounding boxes)及其相关的类别概率。
- 单一网络:使用单一的神经网络直接从整个图像中预测边界框和类别概率,而不是通过多阶段的检测流程。
- 下图展示了论文的核心思想:
3. 端到端优化
- 统一架构:由于整个检测流程是一个单一的网络,所以可以在检测性能上进行端到端的优化。
4. 速度优势
- 实时处理:YOLO 的基础模型可以实现实时处理,处理速度为每秒45帧(FPS)。
- 快速版本:更小的网络版本(Fast YOLO)处理速度高达每秒155帧,同时仍然能够达到其他实时检测器两倍的平均精度(mAP)。
5. 性能特点
- 定位误差:相比其他最先进的检测系统,YOLO 更多的是定位误差,但在不存在物体的地方预测假阳性(false detections)的可能性远低于其他方法。
- 泛化能力:YOLO 学习到了非常通用的对象表示。在从自然图像推广到艺术作品(如 Picasso 数据集和 People-Art 数据集)时,YOLO 的表现远远超过了其他检测方法,包括 DPM 和 R-CNN。
1. 核心思想
核心思想图示:
下面是几个常见词汇的统一称呼,为了方便解释
- bounding box,翻译成边界框,简称框
- grid cell,翻译成网格单元格,简称单元格
- S × S grid,翻译成边长为S个像素的网格单元格
- confidence scores,翻译成置信度分数,简称置信度
- Object,翻译成目标检测中的待检测对象,简称对象
- conditional class probabilities,翻译成条件类别概率,简称类别概率
我们将目标检测的组件统一为一个单一的神经网络。我们的网络使用来自整个图像的特征来预测每个边界框。它还同时预测图像的所有类的所有边界框。这意味着我们的网络会对整个图像和图像中的所有对象进行全局推理。YOLO设计支持端到端训练和实时速度,同时保持较高的平均精度。
我们的系统将输入图像分割成一个S×S网格(如变成为7个像素的网格)。如果一个Object的中心落入一个网格单元格中,则该网格单元格负责检测该Object。
每个网格单元格预测B个边界框和这些边界框的置信度分数。这些置信度分数反映了模型对边界框包含Object的信心,也反映了它认为边界框预测的准确性。形式上,我们将置信度定义为Pr(Object)∗IOU(pred,truth)。如果该单元格中不存在Object,则置信度分数应该为零。否则,我们希望置信度得分等于预测框和地面真实值之间的并集的交集(IOU)。
每个边界框由5个预测组成:x、y、w、h和置信度。(x、y)坐标表示边界框的中心坐标(坐标的原点是网格单元格的左上角顶点)。并将其宽度w和高度h相对于整个图像进行了预测。最后,置信度预测表示预测的边界框和任何真实的标签边界框之间的IOU。
每个网格单元格还预测C个conditional class probabilities,,Pr(ClassI|Object)。这些条件类别概率有意义的前提是网络单元格包括了Object。
一个网络单元格预测了B个边界框,但是一个网络单元格只预测C个条件类别概率,即不是每个边界框都有C个条件类别概率,换句话说,如果图像被分成7x7=49个网络单元格,那么图像中最多识别49个类别(尽管图像中的待检测物体的种类数量大于49,也是只识别49个类别)
在模型推理时,我们将条件类概率和边界框置信度相乘,得到每个边界框包括特定类别对象的信心分数。这些分数既表示了该类出现在框中的概率,也表示了预测的边界框与特定类别对象的匹配程度。公式如下:
为了评估YOLO在PASCAL VOC数据集中的表现,我们使用S = 7,B = 2。PASCAL VOC有20个标签类,所以C = 20。我们最终的预测是一个7×7×30张量。
2. 网络结构
我们将该模型作为一个卷积神经网络实现,并在PASCAL VOC检测数据集上对其进行了评估。网络的初始卷积层从图像中提取特征,而全连接层则预测输出的概率和坐标。
我们的网络有24个卷积层,然后是2个全连接层。我们没有使用GoogLeNet使用的初始模块,而是简单地使用3×3卷积层和1×1卷积层,整个网络如图3所示。
我们还训练了一个Fast YOLO模型。Fast YOLO使用的神经网络的卷积层更少(9个而不是24个)。除了网络的大小之外,YOLO和Fast YOLO之间的所有训练和测试参数都是相同的。
3. 如何训练
我们在ImageNet-1000class数据集上预训练了我们的卷积层。对于预训练,我们使用图3中的前20个卷积层,然后是一个平均池化层和一个完全连接的层。我们对该网络进行了大约一周的训练,并在ImageNet 2012验证集上实现了88%的top-5准确度,与Caffe的Model Zoo中的GoogLeNet模型相一样,我们对所有的训练和推理都使用Darknet框架。
然后,我们使用预训练模型来进行检测。Ren等人表明,在预训练的网络中添加卷积层和连接层可以提高性能。根据他们的例子,我们添加了四个卷积层和两个具有随机初始化权值的完全连接层。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224×224提高到448×448。
我们的最后一层预测了条件类别概率和边界框坐标。我们根据图像的宽度和高度将边界框的宽度和高度进行归一化,使它们落在0到1之间。我们参数化边界框x和y坐标为特定网格单元格位置的偏移,因此它们也被限定在0和1之间。
我们对最后一层使用线性激活函数,而所有其他层使用leaky rectified linear 激活函数:
我们使用平方误差损失函数对模型进行优化。我们使用平方误差是因为它很容易优化,但是它并不完全符合我们最大化平均精度的目标。它对定位误差和分类误差的权重相同,这可能并不理想。此外,在每个图像中,许多网格单元格不包含任何对象,这会让网络单元格的置信度趋向于零,然后让包含物体的网络单元格的梯度趋向于零。这可能导致模型不稳定,导致训练在早期出现分歧。
为了解决这一点,我们增加了边界框坐标预测的损失,并减少了不包含对象的边界框的置信度的损失。我们使用两个参数,λcoord和λnoobj来完成这一点。我们设置了λcoord = 5和λnoobj = .5。
大的边界框和小边界框在计算平凡误差的时候,权重是一样的。但是我们的误差度量应该要能够突出,大边界框的偏差比小边界框的偏差更小。为了部分解决这个问题,我们预测边界框宽度和高度的平方根,而不是直接预测宽度和高度。
YOLO预测每个网格单元格有多个边界框。在训练时,我们只希望网格单元格中的一个边界框预测网格单元格负责的检测对象。我们分配了一个预测器来“负责”预测一个对象,基于这个预测边界框具有最高的当前IOU。这导致了边界框预测器之间的专门化。每个预测器都能更好地预测特定的大小、纵横比或物体的类别,从而提高整体召回率。
训练的损失函数如下:
请注意,只有当该网格单元格中存在一个对象时,损失函数才会惩罚分类错误(就是,前面讨论过的条件类概率)。如果预测器对带检测对象“负责”(即在该网格单元格中具有任何预测器的最高IOU),它也只惩罚边界框坐标错误。
我们根据PASCAL VOC 2007和2012的训练和验证数据集对网络进行了大约135个epoch的训练。在2012年的测试时,我们还包括VOC 2007测试数据用于培训。在整个训练过程中,我们使用的批量大小为64,动量为0.9,衰减为0.0005。
我们的学习速率计划如下:在第一个阶段,我们将学习速率从10−3缓慢提高到10−2。如果我们从一个较高的学习速率开始,我们的模型经常会由于不稳定的梯度而发散。我们继续用10−2训练75个,然后10−3训练30个,最后10−4训练30个。
为了避免过拟合,我们使用了dropout和广泛的数据增强。在第一个全连接层之后,使用了rate = .5的dropout层
对于数据增强,我们引入了高达原始图像大小的20%的随机缩放和转换。我们还在HSV颜色空间中随机调整图像的曝光和饱和度高达1.5倍。
4. 推理过程
就像在训练中一样,预测一个测试图像的检测只需要一个网络评估。在VOC上,网络预测每幅图像98个边界框和每个框的类概率。YOLO在测试时速度非常快,因为与基于分类器的方法不同,它只需要一个单一的网络评估。
网格设计在边界框预测中加强了空间多样性。通常,对象落入哪个网格单元格,网络只预测每个对象的一个框。然而,一些大型物体或靠近多个网格单元格边界的物体可以被多个网格单元格很好地定位。
非最大抑制可以用来修复这些多重检测。虽然不像R-CNN或DPM那样对性能至关重要,但非最大抑制在mAP中增加了2- 3%。
5. 效果
因为现在是2024年10月份,比YOLO1效果更好的模型大有存在,所以分析论文的效果意义不大,此次省略。只关注模型的实现方法。
6. 后续工作
YOLO作为目标检测的大哥,有必要在后边逐篇论文进行精读,敬请关注!