YOLO V1论文笔记(Anchor-free)

定期更新学习内容,一起进步,欢迎点赞和关注。

目标检测篇 - YOLO V1论文笔记(Anchor-free)

YOLO

摘要:

我们提出了YOLO,一种新的物体检测方法,之前的目标检测是通过重新使用分类器来完成检测。相反,我们将目标检测抽象为一个回归问题,描述为以空间分隔的边界框和相关的类别概率。一个简单的神经网络通过对完整图片的进行检测,直接预测边界框和分类类别。因为整个检测基于是单一网络,所以可以实现端到端优化

  我们整体的框架运行速度非常快。我们的基础模型YOLO实时处理图片速度达到45帧/秒。另一个小规模版本--Fast YOLO,达到了惊人的处理155帧/秒的图片速率,并且仍然实现了2倍于其他实时检测器的mAP。与当前最先进的检测系统相比,YOLO有较高的定位错误,但是对于没有物体区域的检测错误,YOLO优于其他系统。最后,YOLO学习了对象的通用表示,从自然图像到毕加索和PeopleArt数据集,它的性能远远超过其他检测方法,包括DPM和RCNN。

1.介绍

  人们瞥一眼图像,就能立即知道图像中的物体是什么,它们在哪里,以及他们之间的相互关系。人类的视觉系统快而准确,以至于可以允许我们完成像驾驶汽车之类的复杂任务,而不用很多的意识想法参与。快速、准确的目标检测算法将允许计算机在任何天气下驾驶汽车而不需要特定传感器,辅助设备可以将实时的场景信息传递给人类用户,并且释放通用的、反应灵敏的机器人系统能力。

  现在的检测系统重新使用分类器来进行检测。为了检测物体,这些系统使用一个对应类别的分类器,并且将其应用到测试图片中的不同区域和规模。例如deformable parts models(DPM)使用滑动窗口,以使得分类器作用于整张图片上的每一个区域。

  最近的一些方法,像R-CNN,使用建议区域方法(region proposal method)先在图片中定位边界框,然后再通过分类器来对边界框进行分类(是典型的two-staged的方法)。分类之后,使用后处理对边框进行校正,消除重复边界框(如NMS),并且根据场景中的其他物体,对边界框重新打分。该方法很难去优化,因为每一个独立的部分都需要分开训练。

  我们重新抽象目标检测为一个简单的回归问题,直接从图像像素输入到输出边界框坐标和类别概率。使用我们的系统,你只需要看一遍("you only look once", YOLO)图片就能预测出物体的类别和位置。

目标检测篇 - YOLO V1论文笔记(Anchor-free)

图1:YOLO V1系统

图1:YOLO目标检测系统。使用YOLO处理图像非常简单和直接。我们的系统(1)吊针输入图像的大小为448×448,(2)将图像输入到一个简单的卷积神经网络,并且(3)通过阈值筛选出检测结果。 

YOLO非常简单:见图1。一个简单的卷积网络同时预测多个边界框以及其每一个对应的:类别概率。YOLO是对完整图像进行训练并且直接优化检测效果。这种统一的模型相比传统的目标检测模型有几个优点。

  优点1:YOLO很快。因为我们抽象物品检测为回归问题,不需要复杂的规则。在测试时,我们将新图片喂给神经网络,基础网络运行速率为45帧/秒(在泰坦X GPU上没有批量处理),快速版本运行速率超过150帧/秒。这意味着我们能够以小于25ms的延迟实时处理视频。而且,YOLO的平均精度是其他实时系统平均精度的两倍以上。有关我们系统的Demo可以实时在网站上运行演示,请看我们的YouTube频道:https://goo.gl/bEs6Cj。

  优点2:YOLO在预测时利用了图像的全局信息。不像基于滑动窗口和基于建议区域(region proposal)的技术,YOLO在训练和测试的时都是看到整个图像的,所以它对类别的上下文信息以及它们的外观进行编码。Fast R-CNN由于无法看到更多的上下文信息,所以会在图像中错误地显示背景块(将背景块错误识别)。YOLO产生的背景错误不到R-CNN的一半。

  优点3:YOLO学习的是对象的通用表示。在自然图像进行训练并且在艺术品上进行测试时,YOLO的表现远远超过DPM和R-CNN等检测方法。由于YOLO是高度一般化的,所以当其应用到新的领域或者意外的输入时,它不太可能出现崩溃(效果很差)。代码已开源。

2.统一识别(Unified Detection)

我们将物体检测的几个部分统一成一个简单的神经网络。我们的网络使用整张图片的特征去预测每一个边界框,它也支持对一张图片同时预测全部边界框。这意味着网络关注整张图片以及在这张图片中的所有物体的信息。这个设计允许端到端的训练,以及在保证高准确率的同时保证实时速度。

  我们的系统将输入图像分成S×S(7x7)的网格。如果物品的中点落在某一个网格单元,这个网格单元将负责识别出这个物体。

  每一个网格单元预测B(B=2)个边界框以及对应于每一个边界框的置信分数。这些置信分数反映了这个模型预测该边界框包含某一物体的可能性以及模型认为对于这个边界框的预测有多高的准确率。我们将置信度用公式定义为Pr(Object)∗IOUtruthpred。如果在网格单元中没有物品,置信分数将为0。否则,我们定义置信分数为预测边界框和真实边界框的IOU(intersection over union)。

  每一个边界框包含5个预测值:x,y,w,h以及置信分数confidence。(x,y)表示了边界框相对于当前网格单元的位置。width和height是根据整张图片的比例预测的。最后,置信分数表示预测边界框和真实边界框的IOU。每一个网格单元同时也预测属于C类别的条件概率,Pr(Classi|Object)。这个概率表示了这个网格单元包含某一个物体的置信度。我们也预测每个网格的一组类别的概率,而不考虑边界框的数量B。

在测试的时候我们将类别概率和独立的边界框预测置信分数相乘,公式如下:

目标检测篇 - YOLO V1论文笔记(Anchor-free)

  这个给了我们对于每一个边界框属于某一个特定类别的置信分数。这些分数编码了这个类出现在框中的概率以及预测框和对象的匹配程度。在PADCAL VOC上评估YOLO,我们使用了S=7,B=2。PASCAL VOC有20个标签类别,所以C=20。我们最后的预测是一个7×7×30的张量。

目标检测篇 - YOLO V1论文笔记(Anchor-free)

图2:模型

我们的系统模型抽象为一个回归问题。它将图片分为一个一个的网格并且同时地预测边界框、置信分数以及类别概率。这些预测将被编码为S×S×(B*5+C)的张量。

2.1网络设计

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

  我们的网络架构受GoogLeNet启发,网络有24个卷积层,后面接2个全连接层。然而,不同于GoogLeNet中使用的inception modules简单地在1×1卷积层后面接上3×3卷积层。我们的整个网络如图3所示。

目标检测篇 - YOLO V1论文笔记(Anchor-free)

图3:网络结构

图3:架构。我们的检测网络拥有24个卷积层后接2个全连接层。交替使用1×1卷积层从前面网络层中减小了特征空间。我们在ImageNet分类任务上使用一办分辨率(224×224的输入图像)预训练了卷积层,然后使用一倍分辨率用来训练检测。

目标检测篇 - YOLO V1论文笔记(Anchor-free)

预测张量分析

我们也训练了一个YOLO的快速版本,其用于快速进行目标检测并且给出边界框。fast YOLO使用更少卷积层的神经网络(9个而不是24个)以及卷积层中有更少的卷积核(过滤器)。除了网络的规模,其他的训练和测试的参数YOLO和fast YOLO是一样的。网络的预测输出是一个7×7×30的张量。

2.2 训练

  我们在ImageNet 1000-class挑战赛数据集上预训练卷积层。为了预训练,我们使用了图3中的前面20个卷积层,接上一个平均池化层和一个全连接层。训练网络时间大约为一周,达到了在ImageNet 2012验证数据集上top-5 88%的准确率,可以与Caffe's的模型库中的GoogLeNet相比。

  然后我们模型应用到检测任务。Ren等人提出加入卷积层和连接层可以提高预训练网络的性能。根据他们的样例,我们在我们的预训练网络上加入了四个卷积层和两个全连接层,它们都用随机权重初始化。检测任务通常需要细粒度的视觉信息,因此我们将网络的输入像素从224×224增加到448×448。

  我们最后一层同时预测了类别概率以及边界框位置。我们利用原图像的宽和高归一化边界框的宽和高,从而使得边界框的宽和高表示数值落在0和1之间。我们将边界框的坐标x和y参数化,使得其成为特定网络单元格位置的偏移量,因此他们的数值也在0和1之间。最后一层使用线性激活函数,而其他所有层使用下述的leaky rectified线性激活函数。

我们优化模型输出的平方误差和。使用平方误差和是因为易于优化,虽然它并不符合我们最大化平均精度的目标。它将定位误差和分类误差同等加权,这可能不是理想的。同时,在每一张图片中,一些网格单元并不包含物体。这使得这些单元的置信分数为0,通常会超过包含对象的单元格梯度,这可能导致模型的不稳定。

  为了补救这个问题,我们增加边界框位置预测的损失,减少不包含物体的边界框置信预测的损失。我们使用两个参数λcoord和λnoobj来实现,设置λcoord=5和λnoobj=0.5。

  平方误差和对于大回归框和小回归框有着同等权重。我们的错误度量应该反映出小边界框的小偏差比大边界框的小偏差更重要(小的偏差一点,结果就会偏差很多,而大的偏差一点,并不会很影响结果)。为了部分解决这个问题,我们预测边界框的宽和高的平方根而不是直接预测宽和高。

  YOLO对于每一个网格单元预测多个边界框。在训练时候,我们只希望每一个对象只用一个边界框预测器来负责表示。我们根据哪一个边界框跟真实边界框有最高的IOU来决定分配其作为负责预测一个对象的预测器。这将使得边界看预测器越来越“专业”。每一个预测器对于特定的尺寸、长宽比例、或者对象类别的预测会越来越好。

  在训练的时候,我们优化下面这个多部分损失函数:

目标检测篇 - YOLO V1论文笔记(Anchor-free)

损失函数

注意:损失函数只有当有一个对象在网格单元中,才会对分类错误进行惩罚(因此前面讨论了条件类别概率)。这也只有当一个预测器负责真实边界框时才会对边界框坐标定位误差进行惩罚(也就是在该网格单元中有最高的IOU预测器)。

  我们在PASCAL VOC 2007和2012数据集上训练大约135个迭代。测试时候我们也在2012和2007测试数据集上进行。训练过程中我们使用的batch size为64,momentum为0.9以及0.0005的decay。

  学习率策略如下:对于第一个迭代,我们缓慢地将学习率从10−3提高到10−2。如果我们从较高的学习率开始我们的模型通常会因为不稳定而发散。我们接下来以10−2的学习率训练75个迭代,然后减少到10−3再继续训练30个迭代,最后减少到10−4再训练30个迭代。

  为了避免过拟合,我们使用了dropout和扩展增强数据集。第一个连接层之后的dropout层的rate为0.5,以防止层之间的相互适应。对于数据增强,我们引入了高达20%的原始图像进行随机放缩和平移。我们同时也在HSV颜色空间中随机调整图像的曝光和饱和度,其调整幅度高达1.5。

2.3 Inference(推断)

类似于训练,对一张测试图片进行预测检测只需要一次网络评估。在PASCAL VOC,这个网络对于每一张图片预测98个边界框以及对于每一个边界框预测类别概率。YOLO在测试时候特别快因为它只需要一次简单的网络评估,而不像给予分类器的方法(需要多步处理,或者需要对图片进行复杂的预处理)。

  网格的设计在边界框预测中强调了空间的多样性。通常来说,一个对象只落在一个网格单元里面,因此网络只需要对于每一个对象预测一个边界框即可。然而,一些大的对象或者对象刚好在多个网格单元的边缘可能会被归属有多个网格单元。非极大值抑制(NMS)能够用来综合这些重叠的检测。虽然不像R-CNN或者DPM那样对性能至关重要,但非极大值抑制使得mAP中增加了23%。

目标检测篇 - YOLO V1论文笔记(Anchor-free)

推断

2.4 YOLO的局限性

YOLO对边界框预测施加了严格的空间约束,因为每个网格单元只能预测两个边界框,并且只能有一个类。这个空间约束限制了我们模型能够预测的临近对象的数量。我们的模型在处理以群体形式出现的小对象时会有困难,比如成群的鸟。

  由于模型是通过数据集来学习预测边界框的,所以它很难推广到新的或不常见的宽高比例或不同属性的对象。由于我们的架构有多个从输入图像的下采样层,我们的模型还使用了相对粗糙的特征来预测边界框。

  最后,当我们训练一个大约有检测功能的损失函数时,我们的损失函数对于小边界框和大边界框中的错误做了同等的对待。大边界框的小错误可能没什么影响,但当小边界框有稍微的错误偏差将极大地影响到IOU。YOLO中的误差主要还是定位的误差。

3 与其他检测系统进行比较

目标检测是计算机视觉中的一个核心问题。检测过程通常是从输入图像提取一组鲁棒特征开始。然后,使用分类器或者定位器来从特征空间中识别出对象。这些分类器或者定位器既可以以滑动窗口的方式在整个图像上运行,也可以在图像中的某些子区域进行运行。我们着重将YOLO检测系统和几个顶尖的识别框架的关键的相似点和不同点进行比较。

  Deformable parts models(DPM):DPM使用滑动窗口方法来进行目标检测。DPM使用不相交的通道(disjoint pipeline,分离模块?)来提取静态特征,区域分类,对高分区域预测边界框等等。我们的系统将这些分离的部分都替换成一个简单的卷积神经网络。这个网络提供了特征提取,边界框预测,非极大值抑制以及上下文并发推理(contextual reasoning all concurrently)等功能。相比DPM,我们的网络不是提取静态特征,而是在线训练特征,并且根据检测任务优化它们。我们的统一模型相比DPM有着更快的速度以及更高的准确率。

   R-CNN:R-CNN以及它的一些变种使用建议区域(region proposals)而不是滑动窗口去找到图片中的目标。选择性搜索生成潜在可能的边界框,一个卷积网络用来提取特征,一个SVM(支持向量机)来对边界框进行平衡,一个线性模型来调整边界框,以及非极大值抑制来消除重复的检测。这个复杂的方法要求每个阶段都必须独立地进行精确的调优,这导致系统非常慢,在测试时候预测一张图片需要40秒以上。

  YOLO和R-CNN有一些相似之处。每一个网格单元通过卷积特征提出一个潜在的边界框和对应的分数。然而,我们的系统在网格单元上设置了空间约束,这有助于减少同一个对象被多次检测。我们的系统也给出了更少的回归框,对于每张图片之给出了98个,而选择性搜索大约有2000个。最后,我们的系统综合了这些分离的部分为一个简单的、联合优化(jointly optimized)的模型。

  其他快速分类器:快速的和更快的R-CNN是通过共享计算以及使用神经网络去提供预测区域而不是选择性搜索来加速R-CNN框架的速度。当它们实现了在R-CNN的基础上的速度和准确率的提升的同时,还是仍然不能达到实时性能。

  一些研究工作致力于加速DPM。它们加速了HOG计算,使用级联,并将计算放入GPU中。但是,DPM实际上实时速度只有30Hz。相比分开的去优化一个大的检测系统中的某一些独立的部分,YOLO提出了一个统一的模型设计并且它很快。像人脸或者人这样的单一检测器能够被高度的优化,因为它们处理很少的变化。YOLO是一种通用的目标检测器,它可以学习同时检测多种目标。

  Deep MultiBox:不像R-CNN,Szegedy等人训练一个卷积神经网络来预测感兴趣的区域而不是通过选择性搜索。MultiBox能够在单一目标检测中把置信分数预测替换成单一类别预测。然而,MultiBox不能够实现通用的目标检测,并且它只是一个大的检测系统中的一个部分,需要更进一步的图片小块分类。YOLO和MultiBox都使用了卷积网络去预测一张图片中的边界框,但是YOLO是一个完整的检测系统。

  OverFeat:Sermanet等人训练一个卷积神经网络预测定位并且调整定位器去做检测。OverFeat有效地使用了滑动窗口检测,当它仍然是一个分离系统。OverFeat优化对象是定位信息,而不是检测性能。类似DPM,定位器在做预测的时候只看到了定位信息。OverFeat不能关注到全局的上下文信息,因此需要有效的后续处理来提供目标间具有相关性的检测效果。

  MultiGrasp:我们的工作跟Redmon等人提出的grasp detection设计相似。我们的网格边界框预测方法是基于回归抓取的MultiGrasp系统(the MultiGrasp system for regression to grasps)。然而,grasp detection是一种比目标检测更加简单的任务。MultiGrasp只需要去预测一张只包含一个对象的图片中的一个单一区域。它不需要去评估尺寸、位置以及边界,也不需要预测它所属的类别,而只需要找到一个适合抓取的区域。而YOLO需要对一张图片中有多个对象以及多种物体来预测边界框以及类别概率。

4.实验

目标检测篇 - YOLO V1论文笔记(Anchor-free)

表1

表1:在PASCAL VOC 2007上的实时系统。比较快速检测器的性能和速度。Fast YOLO是PASCAL VOC检测中历史上最快的检测器,而且它还有其他检测器两倍的准确率。YOLO相比Fast YOLO多了10 mAP的准确度而且还保持着实时性。

目标检测篇 - YOLO V1论文笔记(Anchor-free)

图4:错误分析

图4:错误分析:Fast R-CNN vs. YOLO:这些图显示了对于不同类别的top N检测的定位和背景错误的百分比(N=#个在该类别的对象)。

目标检测篇 - YOLO V1论文笔记(Anchor-free)

表2:对比fast R-CNN

表2:在VOC 2007上的模型综合实验。我们验证了将最好版本的Fast R-CNN综合不同模型的效果。综合YOLO提升了不错的性能,而综合其他版本的Fast R-CNN相比没有提高很多效果。

5 结论

我们介绍了YOLO,这是一个统一模型来做目标检测。我们的模型结构简单,可以在完整图片上直接进行训练。不像基于分类器的方法,YOLO直接训练与检测性能相关的损失函数,并且整个模型是一起训练的。

  Fast YOLO是文献中最快的通用目标检测方法,而YOLO则是代表实时目标检测的最前沿。YOLO同时也能够很好的推广到新领域,这使得它成为依赖于快速、健壮的目标识别领域的理想选择。


论文链接:https://arxiv.org/pdf/1506.02640.pdf

代码链接:http://pjreddie.com/yolo/

完结撒花!


分享到:


相關文章: