目标检测算法YOLO V1论文阅读

YOLO是一种创新的目标检测算法,它将检测视为回归问题,提高了计算速度。相比传统双阶段方法,YOLO减少了计算复杂性,基础模型在TitanXGPU上可实现45帧/秒的处理速度,而FastYOLO则达到155帧/秒。YOLO通过网络结构直接预测边界框和类别概率,适用于实时应用,并在泛化到不同领域如艺术作品时表现出色。
摘要由CSDN通过智能技术生成

前言:


目标检测算法在工作中用的非常多,可以说是计算机视觉任务的基础,传统的深度学习目标检测算法都是双阶段的,首先通过相关算法生成目标的候选框,然后对这些候选框再使用卷积神经网络对目标进行分类。双阶段目标检测算法由于需要产生大量的候选框,且这些候选框都需要采用卷积神经网络进行分类,所以计算速度都普遍偏慢。YOLO第一次将目标检测任务视为回归问题,实现了单阶段目标检测。

  • 论文地址:https://arxiv.org/abs/1506.02640
  • 代码地址:GitHub - pjreddie/darknet: Convolutional Neural Networks

Abstract:

YOLO提出了一种新的单阶段检测算法,前人的工作都是通过分类器进行目标检测。相反,YOLO将目标检测框架视为空间分离的边界框和相关的类概率的回归问题。YOLO 架构计算速度非常快,基本的YOLO模型在Titan X GPU上以每秒45帧的速度实时处理图像。该网络的一个较小版本Fast YOLO,处理速度达到惊人的155帧/秒,同时实现了其他实时检测器的mAP的两倍。与最先进的检测系统相比,YOLO有更多的定位误差,但对于背景的假阳性预测,可以减少误识别。最后,YOLO可以学习物体的一般表示。当从自然图像泛化到艺术作品等其他领域时,它优于其他检测方法,包括DPM和R-CNN。

P r ( O b j e c t ) ∗ I O U p r e d t r u t h Pr\left ( Object \right )\ast IOU_{pred}^{truth} Pr(Object)IOUpredtruth

Introduction:

人类瞥一眼图像,就立刻知道图像中有什么物体。当前的计算机系统为了检测目标,则会采用该目标的分类器,并在测试图像的不同位置和尺度上对其进行评估。R-CNN使用region proposal方法,首先在图像中生成潜在的boxes,然后在这些proposed boxes上运行分类器,分类后进行后处理,细化边界框,消除重复检测。这些复杂的操作很慢,很难优化,因为每个单独的组件必须单独训练。
YOLO 将目标检测视为单一的回归问题,直接预测图像的边界框坐标和类概率。如Figure 1,一个卷积网络同时预测多个边界框和这些框的类别概率。YOLO在全图像上进行训练,并直接优化检测性能。
在这里插入图片描述

YOLO框架原理:

YOLO将输入图像划分为S × S个网格。如果一个物体的中心刚好落在一个网格单元中,则该网格单元就负责检测该物体。每个网格单元预测B bounding boxes和这些框的置信度分数。YOLO假设置信度为 P r ( O b j e c t ) ∗ I O U p r e d t r u t h Pr(Object)*IOU_{pred}^{truth} Pr(Object)IOUpredtruth ,如果单元格中没有目标对象,则置信度得分为0。否则,置信度分数就是预测框与真实值之间的交并比(IOU)。

在这里插入图片描述
每个边界框由5个预测结果组成:x、y、w、h和置信度。(x, y)坐标表示相对于网格单元格边界的方框中心。宽度和高度相对于整个图像进行预测。最后,置信度预测表示预测框和任何真实框之间的IOU。每个网格单元还预测C个条件类别概率 P r ( C l a s s i ∣ O b j e c t ) Pr(Class_{i} |Object) Pr(ClassiObject),作者只预测每个网格单元格的一组类概率,与网格B的数量无关。在测试时,作者将条件类别概率与单个框置信度预测相乘,根据条件概率公式 P ( A B ) = P ( A ) P ( B ∣ A ) = P ( B ) P ( A ∣ B ) P(AB)=P(A)P(B|A)=P(B)P(A|B) P(AB)=P(A)P(BA)=P(B)P(AB),当 O b j e c t Object Object不存在时,公式的值为0,所以只有目标存在时,公式才有意义,公式可以做如下简化:
P r ( C l a s s i ∣ O b j e c t ) ∗ P r ( O b j e c t ) ∗ I O U p r e d t r u t h = P r ( C l a s s i ) ∗ I O U p r e d t r u t h Pr(Class_{i} |Object)*Pr(Object)*IOU_{pred}^{truth}=Pr(Class_{i} ) *IOU_{pred}^{truth} Pr(ClassiObject)Pr(Object)IOUpredtruth=Pr(Classi)IOUpredtruth
为了在PASCAL VOC上评估YOLO,作者使用S = 7,B = 2。PASCAL VOC有20个标记类,因此C = 20。我们的最终预测是一个7 × 7 × 30=1470的张量。

YOLO网络结构:

YOLO网络架构的灵感来自于GoogLeNet模型,有24个卷积层,其次是2个全连接层,最后的全连接层预测输出概率和坐标,其结构如下图:
在这里插入图片描述
YOLO训练了一个快速版本Fast YOLO,Fast YOLO使用的神经网络卷积层更少(9层而不是24层),这些层中的滤波器也更少。

训练过程:

YOLO使用Darknet在ImageNet 1000类竞赛数据集上预训练了前20个卷积层、平均池化层和全连接层,在ImageNet 2012验证集上实现了88%的top-5准确率。在预训练模型的基础上添加了四个卷积层和两个全连接层,输入图像的分辨率从224 × 224增加到448 × 448。YOLO的最后一层同时预测类别概率和边界框坐标,利用原始图像的宽度和高度将边界框的宽度和高度归一化为0~1范围,边界框x和y坐标参数化offset偏移量,训练的损失函数如下:
在这里插入图片描述
YOLO的损失函数使用平方和误差,实验表明采用定位误差与分类误差同等加权的方式效果不理想,YOLO增加了边界框坐标预测的损失,并减少了不包含对象的框置信度预测的损失,设置 λ c o o r d = 5 \lambda _{coord} =5 λcoord=5 λ n o o b j = 0.5 \lambda _{noobj} =0.5 λnoobj=0.5解决了这个问题。大box中的偏差比小box中的偏差影响更小,YOLO则预测边界框宽度和高度的平方根,而不是直接预测宽度和高度。 1 i o b j 1_{i}^{obj} 1iobj代表目标是否出现在第 i i i个格子中, 1 i j o b j 1_{ij}^{obj} 1ijobj代表在第 i i i个格子的第 j j j个box预测器,损失函数仅在网格单元中存在对象时才惩罚分类错误。

YOLO的缺陷:

YOLO对边界框预测施加了空间约束,每个网格单元只能预测两个框,并且只能有一个类别,这种空间约束限制了模型可以预测的物体数量,当物体出现成群物体的小物体时,很难泛化这种不寻常纵横比的对象。小box的影响比大box影响大,所以当样本出现错误时,对IOU影响比较大。

实验部分:

首先在PASCAL VOC 2007上将YOLO与其他实时检测系统进行比较,然后探索YOLO和Fast R-CNN在VOC 2007上的错误,了解YOLO和R-CNN变体之间的差异。

YOLO与其它实时检测器比较:

在这里插入图片描述
Fast YOLO在当时是PASCAL上最快的目标检测方法,该算法的mAP值为52.7%,比之前的实时检测精度提高了一倍以上。YOLO将mAP提高到63.4%,同时仍然保持实时性能。Fast R-CNN加快了R-CNN的分类阶段,但它仍然依赖于选择性搜索,每个图像大约需要2秒来生成建议边界框。

VOC 2007错误率分析:

在这里插入图片描述
YOLO对每个类别使用Hoiem等人的方法和工具,查看该类别的前N个预测。每个预测要么是正确的,要么是根据错误类型进行分类:
Correct: correct class and I O U > 0.5 IOU>0.5 IOU>0.5
Localization: correct class, 0.1 < I O U < 0.5 0.1 < IOU < 0.5 0.1<IOU<0.5
Similar: class is similar, I O U > 0.1 IOU > 0.1 IOU>0.1
Other: class is wrong, I O U > 0.1 IOU > 0.1 IOU>0.1
Background: I O U < 0.1 IOU < 0.1 IOU<0.1 for any object
YOLO很难正确定位对象。定位错误占YOLO错误的比例超过所有其他来源的总和。Fast R-CNN的定位误差要少得多,但背景误差要大得多。13.6%的顶级检测是不包含任何对象的误报。Fast R-CNN预测背景检测的可能性几乎是YOLO的3倍。

比较Fast R-CNN和YOLO:

YOLO比Fast R-CNN犯的背景错误要少得多。通过使用YOLO消除Fast R-CNN中的背景检测,我们获得了性能的显著提升。
在这里插入图片描述
YOLO尝试将顶级的Fast R-CNN模型与其他几个版本的Fast R-CNN相结合。这些集合在0.3%到0.6%之间产生了较小的mAP增长,详见Table 2。

VOC 2012测试结果:

在这里插入图片描述
在VOC 2012测试集上,YOLO得分57.9%。这比目前的技术水平要低,更接近使用VGG-16的原始R-CNN,见Table 3。与最接近的竞争对手相比,YOLO在处理小对象时很吃力。在瓶子、绵羊和电视/监视器等类别上,YOLO的得分比R-CNN或特征编辑低8-10%。然而,在其他类别上,如cat和train, YOLO取得了更高的性能。结合Fast R-CNN + YOLO模型是性能最高的检测方法之一。通过与YOLO的结合,Fast R-CNN的性能提升了2.3%,使其在公共排行榜上上升了5个名次。

YOLO泛化能力:艺术作品中的任务检测

在这里插入图片描述
用于目标检测的学术数据集从相同的分布中提取训练数据和测试数据。在真实的应用程序中,很难预测所有可能的用例和测试数据,因为这些数据与YOLO之前看到的数据不同。YOLO与毕加索数据集和人-艺术数据集上的其他检测系统进行比较,这两个数据集用于测试艺术品上的人物检测。
图5显示了YOLO与其他检测方法的对比性能。作为参考,我们给出了VOC 2007对人的检测AP,其中所有模型仅在VOC 2007数据上训练。毕加索模型是在VOC 2012上训练的,而人艺术模型是在VOC 2010上训练的。R-CNN在VOC 2007上有较高的AP。然而,R-CNN在应用于艺术品时下降很大。R-CNN对针对自然图像调整的边界框建议框使用选择性搜索。R-CNN中的分类器步骤只能看到小区域,需要好的建议。DPM很好地维护了它的AP应用于美术作品。之前的工作理论认为,DPM表现良好是因为它具有强大的物体形状和布局的空间模型。虽然DPM的退化程度不如R-CNN,但它从较低的AP开始。YOLO在VOC 2007上有良好的性能,当应用于艺术品时,它的AP退化小于其他方法。与DPM一样,YOLO对对象的大小和形状,以及对象之间的关系和对象通常出现的位置进行建模。艺术品和自然图像在像素级别上非常不同,但它们在物体的大小和形状方面是相似的,因此YOLO仍然可以预测良好的边界框和检测。

YOLO用于现实世界中的实时检测:

将YOLO连接到网络摄像头,并验证它保持实时性能,包括从相机获取图像和显示检测结果的时间。虽然YOLO单独处理图像,但当连接到网络摄像头时,它的功能就像一个跟踪系统,在物体移动和外观变化时检测它们。该系统的演示和源代码可以在我们的项目网站上找到:http://pjreddie.com/yolo/。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值