【YOLO v1】You Only Look Once: Unified, Real-Time Object Detection阅读笔记

YOLO是一种新颖的单次评估对象检测方法,通过单一神经网络预测边界框和类概率,实现快速且端到端优化。尽管在精度上落后于高级方法,但其速度和全局推理优势使其在实时应用中极具价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

YOLO v1

一、摘要

YOLO,一种新的对象检测方法。使用我们的系统,您只需查看一次(You Only Look Once,YOLO)图像即可预测存在哪些对象以及它们的位置。

之前关于对象检测的工作将分类器重新用于执行检测。

YOLO将对象检测框架作为空间分离的边界框和相关类概率的回归问题。单个神经网络在一次评估中直接从完整图像预测边界框和类概率。

由于整个检测管道是一个单一的网络,因此可以直接在检测性能上进行端到端优化。

YOLO统一架构速度极快,但与当时先进的检测方法相比,会产生更多的定位错误,但不太可能在预测背景上进行误报。

二、介绍

人类视觉系统快速而准确。快速、准确的物体检测算法可以使计算机驾驶汽车。

当时的检测系统重新调整分类器的用途来执行检测。为了检测对象,这些系统获取该对象的分类器,并在测试图像中的不同位置和比例上对其进行评估。例如:

(1)可变形零件模型 (DPM) 等系统使用滑动窗口方法,其中分类器在整个图像上均匀分布的位置运行。

(2)R-CNN等较新的方法使用区域提案方法:

·首先在图像中生成潜在的边界框,然后在这些建议的框上运行分类器。

·分类后,后处理用于细化边界框,消除重复检测,并根据场景中的其他对象对框进行重新评分。

这些复杂的管道速度慢且难以优化,因为每个单独的组件都必须单独训练。

YOLO将对象检测重新定义为单个回归问题,直接从图像像素到边界框坐标和类概率。

YOLO 非常简单:

(1)将输入图像的大小调整为448×448,

(2)在图像上运行单个卷积网络

(3)通过模型的置信度对结果检测进行阈值测试。

单个卷积网络同时预测多个边界框和这些框的类概率。YOLO 在全图像上进行训练并直接优化检测性能。与传统的对象检测方法相比,这种统一的模型具有多个优势:

(1)YOLO运行速度非常快。可以实时处理流视频,延迟不超过25毫秒,且平均精度是其他实时系统的两倍多

(2)YOLO在进行预测时对图像进行全局推理。与基于滑动窗口和区域建议的技术不同,YOLO 在训练和测试期间看到整个图像,因此它隐式编码有关类及其外观的上下文信息。

(3)YOLO学习对象的可概括表示。由于 YOLO 是高度可推广的,因此在应用于新域或意外输入时不太可能崩溃。

YOLO在准确性方面仍然落后于最先进的检测系统:

(1)虽然它可以快速识别图像中的物体,但它很难精确定位某些物体,尤其是小物体。

三、统一检测

我们将对象检测的各个组件统一到一个神经网络中:

(1)YOLO使用整个图像的特征来预测每个边界框。

(2)同时预测图像的所有类中的所有边界框。

(3)对完整图像和图像中的所有对象进行全局推理。

(4)可实现端到端训练和实时速度,同时保持较高的平均精度。

实现步骤:

(1)系统将输入图像划分为 S × S 网格。如果对象的中心落入网格单元,则该网格单元负责检测该对象。

(2)每个网格单元都会预测B个边界框,并为这些边界框的置信度得分打分。这些置信度得分反映了模型认为该边界框包含对象的自信度,以及其认为所预测的边界框的准确度。形式上,我们将置信度定义为 \operatorname{\text{Pr}}({Object})*\mathrm{IOU}_{pred}^{truth}

如果单元格中没有物体,则置信分数应为零。否则,我们希望置信度分数等于预测框与真实框之间的交并比(IOU)。

(3)x,y,w,h 和 confidence。其中 (x, y) 坐标表示相对于网格单元边界的框中心。宽度和高度是相对于整个图像进行估测的。最后,置信度预测代表预测框与任何实际框之间的IOU。

(4)每个网格单元还预测C个条件类别的概率,即 \operatorname{Pr}\left(\text {Class}_{i} \mid \text {Object} \right)。这些概率是基于含有物体的网格单元进行条件约束的。我们只预测每个网格单元的一组类概率,而不考虑框 B 的数量。

(5)在测试时,我们将条件类别概率和单个边界框置信度预测相乘。

\operatorname{Pr}\left(\text { Class }_{i} \mid \text { Object }\right) * \operatorname{Pr}(\text { Object }) * \text { IOU }_{\text {pred }}^{\text {truth }}=\operatorname{Pr}\left(\text { Class }_{i}\right) * \text { IOU }_{\text {pred }}^{\text {truth }}

这使我们能够为每个框提供特定于类别的置信度分数。这些分数同时编码了该类别在框中出现的概率以及预测的框与对象的匹配程度。

YOLO将检测建模为回归问题。它将图像分为S x S个网格,并为每个格单元预测B个边界框,这些框的置信度和C个类别的概率。这些预测被编码为S x S x (B * 5 + C)的张量。

在评估YOLO在PASCAL VOC上的性能时,我们采用S = 7,B = 2。PASCAL VOC有20个已标注的类别,因此C = 20。我们最终的预测是一个7×7×30张量。

3.1网络设计

我们将这个模型实现为卷积神经网络并在PASCAL VOC检测数据集[9]上进行评估。网络的初始卷积层从图像中提取特征,完全连接的层则预测输出的概率和坐标。

网络架构受到用于图像分类的GoogLeNet模型的启发。YOLO有 24 个卷积层,后跟 2 个全连接层,交替使用 1 × 1 卷积层可减少前一层的特征空间。没有使用 GoogLeNet 使用的初始模块,而是简单地使用 1 × 1 个还原层,后跟 3 × 3 个卷积层,整个网络如图所示。网络的最终输出是预测的 7 × 7 × 30 张量。

Fast YOLO (YOLO 的快速版本,旨在突破快速对象检测的界限。)使用具有较少卷积层(9 而不是 24)和这些层中较少过滤器的神经网络。除了网络的大小之外,YOLO和Fast YOLO之间的所有训练和测试参数都是相同的。

3.2训练

在 ImageNet 1000 类竞赛数据集上预训练卷积层 [29]。

对于预训练,使用图中的前 20 个卷积层,然后是平均池化层和全连接层。

然后,将模型转换为执行检测。Ren等人表明,将卷积层和连接层添加到预训练网络中可以提高性能[28]。因此,添加了四个卷积层和两个具有随机初始化权重的全连接层。检测通常需要细粒度的视觉信息,因此将网络的输入分辨率从 224 × 224 提高到 448 × 448。

最后一层预测类概率和边界框坐标。按图像宽度和高度规范化边界框的宽度和高度,使它们介于 0 和 1 之间。将边界框 x 和 y 坐标参数化为特定网格单元位置的偏移量,因此它们也介于 0 和 1 之间。

对最后一层使用线性激活函数,所有其他层使用以下泄漏整流线性激活:

\phi(x)= \begin{cases}x, & \text { if } x>0 \\ 0.1 x, & \text { otherwise }\end{cases}

优化了模型输出中的和平方误差。使用和平方误差,因为它很容易优化,但它并不完全符合最大化平均精度的目标。它将定位误差与分类误差相等,分类误差可能并不理想。此外,在每个图像中,许多网格单元不包含任何对象。这会将这些单元格的“置信度”分数推向零,通常会压倒包含对象的单元格的梯度。这可能导致模型不稳定,导致训练在早期出现分歧。

为了解决这个问题,增加了边界框坐标预测的损失,并减少了不包含对象的框的置信度预测的损失。我们使用两个参数,λcoord 和 λnoobj 来实现这一点。我们设置 λcoord =5 和λnoobj =.5

和方误差也同样加权大Boxes和小Boxes中的误差。我们的误差指标应该反映大Boxes中的小偏差比小Boxes中的小偏差更重要。

为了部分解决这个问题,作者直接预测边界框宽度和高度的平方根,而不是宽度和高度。

YOLO 预测每个网格单元有多个边界框。在训练时,只希望一个边界框预测器负责每个对象。作者分配一个预测器来"负责"基于哪个预测具有与真相相关的最高当前IOU来预测对象。这会导致边界框预测变量之间的特化。每个预测因子都能更好地预测某些大小、纵横比或对象类别,从而提高整体回忆率。

损失函数:

\begin{array}{c} \lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left[\left(x_{i}-\hat{x}_{i}\right)^{2}+\left(y_{i}-\hat{y}_{i}\right)^{2}\right] \\ +\lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left[\left(\sqrt{w_{i}}-\sqrt{\hat{w}_{i}}\right)^{2}+\left(\sqrt{h_{i}}-\sqrt{\hat{h}_{i}}\right)^{2}\right] \\ +\sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left(C_{i}-\hat{C}_{i}\right)^{2} \\ +\lambda_{\text {noobj }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {noobj }}\left(C_{i}-\hat{C}_{i}\right)^{2} \\ +\sum_{i=0}^{S^{2}} \mathbb{1}_{i}^{\text {obj }} \sum_{c \in \text { classes }}\left(p_{i}(c)-\hat{p}_{i}(c)\right)^{2} \end{array}

其中\mathbb{1}_{i}^{\mathrm{obj}} 表示对象是否出现在单元格 i 中,\mathbb{1}_{ij}^{\mathrm{obj}} 表示单元格 i 中的第 j 个边界框预测器“负责”该预测。

请注意,损失函数仅在该网格单元中存在对象时才惩罚分类错误(因此前面讨论的条件类概率)。它还仅在边界框坐标误差“负责”时惩罚边界框坐标误差(即在该网格单元中的任何预测变量中具有最高的 IOU)。

为了避免过度拟合,使用dropout和广泛的数据增强。在第一个连接层之后速率 = .5 的辍学层会阻止层之间的协同适应 [18]。对于数据增强,我们引入了随机缩放和高达原始图像大小 20% 的平移。我们还在HSV色彩空间中将图像的曝光和饱和度随机调整为1.5倍。

3.3推论

就像在训练中一样,预测测试图像的检测只需要一次网络评估。

3.4局限性

YOLO 对边界框预测施加了强大的空间约束,因为每个网格像元只能预测两个框,并且只能有一个类。此空间约束限制了模型可以预测的附近对象的数量。我们的模型与成群出现的小物体作斗争。

由于YOLO学习从数据中预测边界框,因此它很难推广到新的或不寻常的纵横比或配置的对象。YOLO还使用相对粗糙的特征来预测边界框,因为YOLO的架构具有来自输入图像的多个下采样层。

最后,当YOLO训练近似检测性能的损失函数时,YOLO的损失函数在小边界框中与大边界框中处理错误的方式相同。大Boxes中的小错误通常是良性的,但小Boxes中的小错误对IOU的影响要大得多。YOLO的主要错误来源是不正确的本地化。

四、与其他检测系统的比较

检测管道通常从输入图像中提取一组强大的特征(Haar,SIFT,HOG,卷积特征)开始。

然后,分类器或定位器用于识别特征空间中的对象。这些分类器或定位器以滑动窗口方式在整个图像或图像中的某些区域子集上运行。

YOLO 检测系统与几个顶级检测框架进行了比较,突出了关键的异同:

(1)可变形零件模型 (DPM) :使用滑动窗口方法进行对象检测 [10]。DPM 使用不相交管道提取静态特征、对区域进行分类、预测高分区域的边界框等。YOLO用单个卷积神经网络替换了所有这些不同的部分。该网络同时执行特征提取、边界框预测、非极大抑制和上下文推理。网络不是静态特征,而是在线训练特征并针对检测任务对其进行优化。我们的统一架构可提供比 DPM 更快、更准确的模型。

(2)R-CNN:R-CNN及其变体使用区域建议而不是滑动窗口来查找图像中的对象。选择性搜索 [34] 生成潜在的边界框,卷积网络提取特征,SVM 对框进行评分,线性模型调整边界框,非最大值抑制消除重复检测。这个复杂管道的每个阶段都必须独立精确调整,并且生成的系统非常慢,在测试时每张图像需要40多秒[14]。

YOLO与R-CNN有一些相似之处。每个网格单元都提出潜在的边界框,并使用卷积特征对这些框进行评分。但是,我们的系统对网格单元建议施加了空间约束,这有助于减少对同一对象的多次检测。我们的系统还提出了更少的边界框,每张图像只有98个,而选择性搜索大约有2000个。最后,我们的系统将这些单独的组件组合成一个联合优化的模型。

(3)其他快速检测器:快速和快速 R-CNN 专注于通过共享计算和使用神经网络来建议区域而不是选择性搜索来加速 R-CNN 框架 [14] [27]。虽然它们比R-CNN提供了速度和准确性的改进,但两者都仍然达不到实时性能。

YOLO 没有尝试优化大型检测管道的单个组件,而是完全抛弃管道,并且设计速度很快。

(4)深度多盒。与R-CNN不同,Szegedy等人训练卷积神经网络来预测感兴趣的区域[8],而不是使用选择性搜索。MultiBox 还可以通过将置信度预测替换为单个类预测来执行单个对象检测。但是,MultiBox 无法执行常规对象检测,仍然只是较大检测管道中的一个部分,需要进一步的图像补丁分类。YOLO和MultiBox都使用卷积网络来预测图像中的边界框,但YOLO是一个完整的检测系统。

(5)OverFeat:Sermanet等人训练卷积神经网络来执行定位,并调整定位器以执行检测[31]。OverFeat 可以有效地执行滑动窗口检测,但它仍然是一个不相交的系统。OverFeat 针对本地化进行优化,而不是针对检测性能进行优化。与 DPM 一样,本地化人员在进行预测时只能看到本地信息。OverFeat 无法推理全局上下文,因此需要进行大量的后处理才能产生连贯的检测。

(6)MultiGrasp:我们的工作在设计上与Redmon等人[26]的抓取检测工作相似。我们的边界框预测网格方法基于 MultiGrasp 系统,用于回归抓取。但是,抓取检测是一项比对象检测简单得多的任务。MultiGrasp只需要预测包含一个对象的图像的单个可抓取区域。它不必估计物体的大小、位置或边界或预测它的类别,只需要找到一个适合抓取的区域。YOLO 预测图像中多个类的多个对象的边界框和类概率。

五、实验

首先,将YOLO与PASCAL VOC 2007上的其他实时检测系统进行比较。

为了了解YOLO和R-CNN变体之间的差异,我们探讨了YOLO和Fast R-CNN(R-CNN的最高性能版本之一)在VOC 2007上产生的错误[14]。

基于不同的错误配置文件,表明 YOLO 可用于重新评分Fast R-CNN 检测并减少后台误报带来的错误,从而显着提高性能。

本文还介绍了VOC 2012的结果,并将mAP与当前最先进的方法进行了比较。

5.1与其他实时系统的比较

对象检测领域的许多研究工作都集中在使标准检测管道快速。虽然其他工作没有达到实时里程碑,但我们还比较了它们的相对mAP和速度,以检查对象检测系统中可用的准确性-性能权衡。

表:PASCAL VOC 2007 上的实时系统。比较快速探测器的性能和速度。Fast YOLO是PASCAL VOC检测记录中最快的探测器,其准确性仍然是任何其他实时探测器的两倍。YOLO 比快速版本准确 10 mAP,同时速度仍远高于实时。

5.2VOC 2007 误差分析

为了进一步研究YOLO和最先进的探测器之间的差异,文中作者查看了VOC 2007结果的详细细分。将YOLO与Fast RCNN进行比较,因为Fast R-CNN是PASCAL上性能最高的探测器之一,并且它的检测是公开的。

使用Hoiem等人的方法和工具[19]在测试时查看每个类别的前N个预测。每个预测要么是正确的,要么根据错误类型进行分类:

• 正确:正确的类, IOU > .5

• 本地化:正确的类,.1 < IOU < .5

• 相似:类相似,IOU > .1

• 其他: class 是错的,IOU > .1

• 背景:IOU < .1 对于任何对象

图显示了所有 20 个类别的平均每种错误类型的细分。这些图表显示各种类别(N = # 该类别中的对象)的前 N 个检测中本地化和背景错误的百分比。

YOLO 难以正确定位对象。本地化错误比所有其他来源的总和还要多,导致 YOLO 的错误更多。Fast R-CNN产生的定位错误要少得多,但后台错误要多得多。其中 13.6% 的顶级检测是不包含任何对象的误报。Fast R-CNN预测背景检测的可能性几乎是YOLO的3倍。

4.3快速R-CNN和YOLO的结合

YOLO犯的背景错误比Fast R-CNN少得多。通过使用 YOLO 消除快速 R-CNN 的背景检测,我们显著提高了性能。对于R-CNN预测的每个边界框,我们检查YOLO是否预测了类似的框。如果是这样,我们根据 YOLO 预测的概率和两个框之间的重叠来提升该预测。

Fastest R-CNN模型在VOC 2007测试集上实现了71.8%的mAP。与YOLO相结合后,他的mAP增长率3.2%达到了75.0%

本文还尝试将顶级快速R-CNN模型与其他几个版本的快速R-CNN模型相结合。这些集合产生了mAP的小幅增加,介于0.3%和0.6%之间,详见表。

4.4 2012年VOC结果

4.5可推广性:艺术品中的人体检测

用于物体检测的学术数据集从相同的分布中提取训练和测试数据。在实际应用中,很难预测所有可能的用例,测试数据可能与系统之前看到的不同[3]。我们将YOLO与Picasso 和 People-Art上的其他检测系统进行了比较,这两个数据集用于测试艺术品上的人物检测。

毕加索数据集精确回忆曲线

VOC 2007、Picasso 和 People-Art 数据集的定量结果。

六、在野外实时检测

YOLO 是一款快速、准确的目标检测器,是计算机视觉应用的理想选择。我们将 YOLO 连接到网络摄像头并验证它是否保持实时性能,包括从相机获取图像并显示检测结果的时间。

虽然YOLO单独处理图像,但当连接到网络摄像头时,它的功能就像一个跟踪系统,在物体移动和外观变化时检测物体。

七、结论

本文介绍了 YOLO,一个用于对象检测的统一模型。YOLO模型易于构建,可以直接在完整图像上进行训练。与基于分类器的方法不同,YOLO 在直接对应于检测性能的损失函数上进行训练,并且整个模型是联合训练的。

Fast YOLO是文献中最快的通用目标检测器,YOLO推动了实时目标检测的最新技术。YOLO还很好地推广到新领域,使其成为依赖快速,强大的目标检测的应用程序的理想选择。

文章链接:CVPR 2016 Open Access Repository

引用:Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 779-788.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值