目标检测--yolov1

目录
论文翻译 转自https://www.cnblogs.com/marvin-wen/p/14363523.html

摘要

我们提出一种新的目标检测算法——YOLO。以前有关目标检测的研究将检测转化成分类器来执行。然而,我们将目标检测框架化为空间分隔的边界框及相关的类概率的回归问题。在一次评估中,单个神经网络直接从整幅图像中预测边界框和类概率。因为整个检测管道是单个网络,在检测性能上可以直接进行端到端的优化。
  我们的统一架构非常快。我们的基础YOLO模型以每秒45帧的速度实时处理图像。较小型的网络Fast YOLO,以惊人的每秒155帧的速度处理图像,同时达到其他实时检测器的两倍的mAP。与最先进的检测系统相比,YOLO产生更多的定位错误,但在背景上预测错误的可能性较小。最后,YOLO学到了目标的整体特征。当从自然图像推广到艺术品等其他领域时,它的性能优于其他检测方法,包括DPM和R-CNN。

1.介绍

人们瞥了一眼图像,立即知道图像中有什么对象,它们在哪里以及它们如何相互作用。人类的视觉系统快速准确,使我们能够在极少意识思考的情况下执行一些复杂的任务,例如驾驶。快速准确的目标检测算法将使计算机无需专用传感器即可驾驶汽车,使辅助设备能够向人类用户传达实时的现场信息,并释放一般用途、响应式机器人系统的应用潜力。
  当前的检测系统将检测转化成分类器来执行。为了检测物体,这些系统需要一个该对象的分类器,并在测试图像的不同位置和不同尺寸下进行评估。像可变形组件模型(DPM)这样的系统使用滑动窗口方法,其中分类器在整个图片中均匀分布的位置运行。
  诸如R-CNN的最新方法使用区域提议方法,首先生成图像中潜在的边界框,然后在这些提议的框上运行分类器。分类之后,后处理用于完善边界框,消除重复的检测并基于场景中的其他对象重新标记边界框。这些复杂的管道运行缓慢且难以优化,因为每个独立组件必须单独训练。
  我们将目标检测重新构造为一个回归问题,直接从图像像素到边界框坐标和类概率。使用我们的系统,您只看一次(YOLO)就能预测图像中有什么对象以及他们在哪里。
目标检测--yolov1
YOLO非常简单:请参见图1。单个卷积网络可同时预测多个边界框和这些框的类概率。YOLO在全图上训练并直接优化检测性能。相较于传统的目标检测方法,这个统一的模型有几个优点。
  第一,YOLO非常快。由于我们构架检测作为回归问题,我们不需要复杂的管道。我们只需简单地在测试的新图像上运行神经网络就能预测检测结果了。在Titan X GPU上不进行批处理时,我们的基础网络运行速度每秒45帧,快速版本的运行速度超过每秒150帧。这意味着我们可以以低于25毫秒的延迟实时处理流视频。此外,YOLO的平均精度达到其他实时系统的两倍以上。有关我们系统通过网络摄像头实时运行的演示请查看我们的项目网页:http://pjreddie.com/yolo/。
  第二,YOLO在做出预测时会全局考虑图像。与滑动窗口和基于区域提案的技术不同,YOLO在训练和测试中可以看到全局图像,因此它隐式编码有关类及其外观的上下文信息。Fast R-CNN是一种*检测方法,由于看不到图像更大的范围,因此将图像中的背景错误认为是物体。与Fast R-CNN相比,YOLO产生不到其一半的背景错误。
  第三,YOLO学习对象的通用特征。在自然图像上进行训练并在艺术品上进行测试时,YOLO比DPM和R-CNN等*检测方法表现好得多。由于YOLO具有高度通用性,因此应用于新的领域或意外输入时YOLO崩溃的可能性较小。
  在准确性方面,YOLO仍然落后于最新的检测系统。尽管它可以快速识别图像中的对象,但仍难以精确定位某些对象,尤其是小的对象。我们将在我们的实验中进一步研究。
  我们所有的训练和测试代码都是开源的。各种预训练的模型也可以下载。

2.统一检测

我们统一了目标检测的各个组成部分到单个神经网络中。我们的网络使用整个图像的特征来预测每个边界框。它也是同时预测图像所有类的所有边界框。这意味着我们的网络会在全局范围内考虑完整图像和图像中的所有对象。YOLO设计可实现端到端的训练和实时速度,同时保持较高的平均精度。
  我们的系统将输入图像划分为S×S网格。如果对象的中心落入网格单元,则该网格单元负责检测该对象。
  每个网格单元预测这些盒子的B边界框和置信度。这些置信度得分反映了模型确信盒子包含一个对象的自信度,并且以及它认为盒子预测的准确性。形式上,我们将置信度定义为
目标检测--yolov1
如果单元格中不存在对象,置信度分数应为零。否则,我们希望置信度得分等于预测框和真实值之间的联合相交(IOU)。
  每个边界框由5个预测值组成:x,y,w,h,和confidence。(x,y)坐标表示相对于网格单元边界的盒子的中心。宽度和高度是相对于整个图像的预测值。最后置信度预测表示预测框和真实值之间的IOU。
  每个网格单元还预测C个条件类别概率Pr(Classi|Object)。这些概率以网格单元包含对象为条件。我们只预测每个网格单元的一组类概率,而不管B框的数量。
  在测试时,我们将条件类别的概率与各个框的置信度预测相乘,
目标检测--yolov1
这为我们提供了对于每个框具体类别的置信度。这些分数既代表了该类别出现在方块中的概率,又代表了预测框和目标的吻合度。
目标检测--yolov1
为了在PASCAL VOC上评估YOLO,我们设S = 7,B = 2。PASCAL VOC具有20个标记的类别,因此C = 20。我们的最终预测是7×7×30的张量。

2.1.网络设计

我们将该模型实现为卷积神经网络,并在PASCAL VOC检测数据集上对其进行评估。网络的初始卷积层从图像中提取特征,全连接图层输出预测概率和坐标。
  我们的网络架构受到图像分类模型GoogLeNet的启发。我们的网络有24卷积层,然后是2个全连接层。代替GoogLeNet使用的启动模块,我们只需使用1×1降采样层,然后使用3×3卷积层,类似于Lin等。完整的网络如图3所示。
  我们还训练了旨在推广快速目标检测的Fast YOLO。Fast YOLO使用卷积层较少的神经网络(24改为9个),而且这些层中的过滤器较少。除了大小,YOLO和Fast YOLO在网络中所有训练和测试参数都相同。
目标检测--yolov1
我们网络的最终输出是7×7×30张量预测。

2.2.训练

我们在ImageNet 1000类别比赛数据集上预训练卷积层。对于预训练,我们使用图3中的前20个卷积层,然后是平均池层和全连接层。我们训练该网络大约需要一周的时间,并在ImageNet 2012验证集中,实现一次排名top-5的88%的准确率,与Caffe模型大全中的GoogLeNet模型相当。我们对所有训练和推论都使用Darknet框架。
  然后,我们将模型转换来执行检测。Ren等人表明将卷积层和连接层同时添加到预训练的网络中可以提高性能。按照他们的示例,我们添加了四个卷积层和两个完全连接的层,并进行了随机初始化权重。检测通常需要细粒度的视觉信息,因此我们提高了网络的输入分辨率从224×224到448×448。
  我们的最后一层可以预测类别概率和边界框坐标。我们根据图像的宽度和高度对边界框的宽度和高度进行归一化,使其介于0和1之间。我们将边界框x和y坐标参数化为特定网格单元位置的偏移量,因此它们也被限制在0和1之间。
  我们对最后一层使用线性激活函数,而所有其他层均使用以下泄漏整流线性激活函数:
目标检测--yolov1
我们针对损失函数的输出中的平方和误差进行了优化:
目标检测--yolov1
目标检测--yolov1
请注意,如果该网格单元中存在对象,则损失函数只会惩罚分类错误(因此前面讨论过条件分类概率)。如果该预测变量对真值框“负责”(即该网格单元中IOU最高的预测变量),它也只会惩罚边界框坐标误差。
  我们根据PASCAL VOC 2007和2012的训练和验证数据集对网络进行了135轮的训练。在2012进行测试时,我们还包含了VOC 2007测试数据进行训练。在整个训练过程中,我们使用的批次大小为64,动量为0.9,衰减为0.0005。
  我们的学习率时间表如下:在开始时期,我们将学习率从10−3缓慢提高到10−2。如果我们以较高的学习率开始,则由于不稳定的梯度,我们的模型经常会发散。我们继续以10−2训练75轮,然后以10−3训练30轮,最后以10−4训练30轮。
  为了避免过度拟合,我们使用了dropout和广泛的数据扩充。在第一个连接的层之后,比例为0.5的dropout层可防止层之间的共同适应。对于数据增强,我们引入了最多原始图像尺寸20%的随机缩放和平移。在HSV颜色空间中,我们还将图像的曝光和饱和度随机调整为至多1.5倍。

2.3.推理

就像在训练中一样,预测测试图像的检测仅需要进行一次网络评估。在PASCAL VOC上,网络可预测每个图像98个边界框,并预测每个框的类概率。与基于分类器的方法不同,YOLO只需要进行一次网络评估,因此测试速度非常快。
  网格设计在边界框预测中强制执行空间分集。通常,一个对象属于哪个网格单元是很明确的,并且网络仅为每个对象预测一个框。 但是,一些大对象或多个单元格边界附近的对象可以被多个单元格很好地定位。非最大抑制可用于修复这些多次检测。尽管不像对于R-CNN或DPM而言那么至关重要,但非最大抑制可以增加2-3%的mAP。

2.4.YOLO的局限性

由于每个网格单元仅预测两个框且只能具有一个类别,因此YOLO对边界框的预测施加了强大的空间约束。这种空间限制限制了我们的模型可以预测的附近物体的数量。我们的模型在成组出现的小物体(例如成群的鸟)上表现不佳。
  由于我们的模型通过学习数据来预测边界框,因此很难将其推广到具有新的或不同寻常的宽高比或配置的对象。我们的模型还使用相对粗糙的特征来预测边界框,因为我们的体系结构从输入图像中有多个下采样层。
  最后,虽然我们训练的是近似检测性能的损失函数,但损失函数在小边界框与大边界框中对待错误的方式相同。大盒子中的小错误通常是良性的,但小盒子中的小错误对IOU的影响更大。错误的主要来源是错误的定位。

3.与其他检测系统的比较

对象检测是计算机视觉中的核心问题。检测管线通常从输入图像中提取一组鲁棒特征开始(卷积特征[6)。然后,使用分类器或定位器来识别特征空间中的对象。这些分类器或定位器在整个图像上或图像中区域的某些子集上以滑动窗口的方式运行。我们将YOLO检测系统与几个*检测框架进行了比较,突出了关键的异同。
  DPM。可变形零件模型(DPM)使用滑动窗口方法进行对象检测。DPM使用不相交的管线来提取静态特征,对区域进行分类,预测高分区域的边界框等。我们的系统用单个卷积神经网络替换了所有这些不同的部分。网络同时执行特征提取,边界框预测,非最大抑制和上下文推理。并非静态特征,网络线性训练特征并针对检测任务对其进行优化。与DPM相比,我们的统一体系结构可导致更快更准确的模型。
  R-CNN。R-CNN及其变形使用区域提议而不是滑动窗口在图像中查找对象。选择性搜索生成潜在的边界框,卷积网络提取特征,SVM为该框评分,线性模型调整边界框,非最大抑制消除重复的检测。这个复杂的流水线的每个阶段都必须独立地精确调整,并且结果系统非常慢,在测试时每个图像需要40秒钟以上的时间。
  YOLO与R-CNN有一些相似之处。每个网格单元都会提出潜在的边界框,并使用卷积特征对这些框进行评分。但是,我们的系统在网格单元建议上施加了空间限制,这有助于减轻对同一对象的多次检测。我们的系统还提出了更少的边界框,每个图像只有98个边界框,而选择性搜索有2000个边界框。最后,我们的系统将这些单独的组件组合成一个共同优化的模型。
  其他快速检测器Fast和Faster R-CNN专注于通过共享计算并使用神经网络来提议区域而不是选择性搜索来加快R-CNN框架。尽管它们相比R-CNN在速度和准确性方面有所改进,但两者仍然都缺乏实时性能。
  许多研究工作都集中在加快DPM流程上。它们加快了HOG计算,使用级联并将计算推入GPU中。但是,只有30Hz DPM实际上可以实时运行的。
  YOLO并没有尝试优化大型检测管道的各个组件,而是完全淘汰了该管道,并且设计合理。
  像人脸或人这样的单一类别的检测器可以进行高度优化,因为它们必须处理更少的变化。YOLO是一种通用检测器,可学习同时检测各种物体。
  Deep MultiBox。与R-CNN不同,Szegedy等人训练卷积神经网络来预测感兴趣区域,而不是使用选择性搜索。MultiBox还可以通过用单个类别预测替换置信度预测来执行单个对象检测。但是,MultiBox无法执行常规的对象检测,并且仍然只是较大检测管道中的一部分,需要进一步的图像补丁分类。YOLO和MultiBox都使用卷积网络来预测图像中的边界框,但是YOLO是一个完整的检测系统。
  OverFeat。Sermanet等人训练一个卷积神经网络执行定位,并使该定位器执行检测。OverFeat有效地执行滑动窗口检测,但它仍然是不相交的系统。OverFeat针对定位而不是检测性能进行优化。像DPM一样,定位器只能在进行预测时看到本地信息。OverFeat无法推理全局上下文,因此需要进行大量后期处理才能产生连贯的检测结果。
  MultiGrasp。我们的工作在设计上类似于Redmon等人的抓握检测工作。我们用于边界框预测的网格方法是基于MultiGrasp系统进行回归分析的。 但是,抓取检测比对象检测要简单得多。MultiGrasp只需要为包含一个对象的图像预测单个可抓握区域。不必估计物体的大小,位置或边界或预测其类别,仅需找到适合抓握的区域即可。YOLO预测图像中多个类别的多个对象的边界框和类别概率。

4.实验

首先,我们将YOLO与PASCAL VOC 2007上的其他实时检测系统进行比较。为了了解YOLO和R-CNN变体之间的差异,我们探究了YOLO和Fast R-CNN(性能最高的R-CNN版本之一)在VOC 2007上的错误。基于不同的错误配置文件,我们证明了YOLO可用于对Fast R-CNN检测进行评分,并减少背景假阳性引起的错误,从而显着提高性能。我们还将介绍VOC 2012的结果,并将mAP与当前的最新方法进行比较。最后,我们在两个艺术品数据集上证明了YOLO可以比其他检测器更好地推广到新领域。

4.1.与其他实时系统的比较

在目标检测方面的许多研究工作都集中在快速建立标准检测管道上。但是,只有Sadeghi等人实际上产生了一个实时运行的检测系统(每秒30帧或更高)。我们将YOLO与他们在30Hz或100Hz GPU上运行的DPM进行了比较。尽管其他工作尚未达到实时里程碑,但我们还比较了它们的相对mAP和速度,以检查目标检测系统中可用的精度-性能折衷。
  Fast YOLO是PASCAL上最快的目标检测方法。据我们所知,它是现存最快的目标检测器。凭借52.7%的mAP,它的准确度是以前实时检测工作的两倍以上。YOLO将mAP提升至63.4%,同时仍保持实时性能。
  我们还使用VGG-16训练YOLO。该模型比YOLO更准确,但速度也要慢得多。与其他依赖VGG-16的检测系统进行比较时,它很有用,但由于它比实时系统慢,因此本文的其余部分集中在我们更快的模型上。
  最快的DPM可以在不牺牲很多mAP的情况下有效地加快DPM的速度,但是它仍然将实时性能降低了2倍。与神经网络方法相比,它还受到DPM检测精度相对较低的限制。
目标检测--yolov1
R-CNN minus R用静态边界框建议替换“选择性搜索”。尽管它比R-CNN快得多,但是它仍然缺乏实时性,并且由于没有好的建议而使准确性大大降低。
  Fast R-CNN可以加快R-CNN的分类速度,但是它仍然依赖于选择性搜索,每个图像可能需要2秒钟左右的时间来生成边界框建议。因此,它具有较高的mAP,但0.5 fps仍离实时性还很远。
  最近的Faster R-CNN用神经网络取代了选择性搜索,以提出边界框,类似于Szegedy等人。在我们的测试中,他们最准确的模型达到了7 fps,而较小的,精度较低的模型则以18 fps运行。Faster R-CNN的VGG-16版本高出10 mAP,但比YOLO慢6倍。ZeilerFergus的Faster R-CNN仅比YOLO慢2.5倍,但准确性也较低。

4.2. VOC 2007错误分析

为了进一步检查YOLO和最先进的探测器之间的差异,我们查看了VOC 2007的详细结果细分。我们将YOLO与Fast RCNN进行了比较,因为Fast R-CNN是PASCAL上性能最高的探测器之一并且它的检测结果是公开可用的。
  我们使用Hoiem等人的方法和工具。对于测试时的每个类别,我们查看该类别的前N个预测。每个预测要么是正确的,要么根据错误的类型进行分类:
正确:分类正确并且IOU > 0.5
定位:分类正确,0.1 < IOU <0.5
相似:分类相似,IOU > 0.1
其他:分类错误,IOU > 0.1
背景:任意对象,IOU < 0.1
目标检测--yolov1
图4显示了所有20个类别的平均每种错误类型的细分。
  YOLO在定位目标方面需要努力。定位错误占YOLO错误的比所有其他来源的总和还多。Fast R-CNN产生的定位错误少得多,但是背景错误却多得多。最高检测到的13.6%是不包含任何物体的误报。Fast R-CNN预测背景错误的可能性是YOLO的三倍。

4.3.结合Fast R-CNN和YOLO

与Fast R-CNN相比,YOLO产生的背景错误少得多。通过使用YOLO消除Fast R-CNN的背景检测,我们可以显着提高性能。对于R-CNN预测的每个边界框,我们都会检查YOLO是否预测了类似的框。如果是这样,我们将根据YOLO预测的概率和两个框之间的重叠来对该预测进行增强。
  最佳的Fast R-CNN模型在VOC 2007测试集上的mAP达到71.8%。与YOLO结合使用时,其mAP增长3.2%,达到75.0%。我们还尝试将*Fast R-CNN模型与Fast R-CNN的其他几个版本结合使用。这些组合的mAP在0.3和0.6%之间有小幅增加,有关详细信息,请参见表2。
目标检测--yolov1
YOLO的推动力不只是模型集成的副产品,因为结合使用不同版本的Fast R-CNN几乎没有好处。恰恰是因为YOLO在测试时犯了各种错误,所以它在提高Fast R-CNN的性能方面是如此有效。
  不幸的是,这种组合无法从YOLO的速度中受益,因为我们分别运行每个模型然后组合结果。 但是,由于YOLO如此之快,与Fast R-CNN相比,它不会增加任何可观的计算时间。

4.4. VOC 2012结果

在VOC 2012测试集上,YOLO的mAP得分为57.9%。这比当前的技术水平低,更接近使用VGG-16的原始R-CNN,请参见表3。与最接近的竞争者相比,我们的系统在小物体上表现不佳。在瓶、羊和电视/显示器等类别中,YOLO得分比R-CNN或Feature Edit低8-10%。但是,在猫和火车等其他类别上,YOLO则具有更高的性能。
目标检测--yolov1
我们的Fast R-CNN + YOLO组合模型是性能最高的检测方法之一。与YOLO的组合使Fast R-CNN改进了2.3%,在公共排行榜上的排名上升了5位。

4.5.通用性:艺术品中的人检测

用于对象检测的学术数据集从同一分布中提取训练和测试数据。在现实世界的应用程序中,很难预测所有可能的用例,并且测试数据可能会与系统之前看到的有所不同。我们将YOLO与Picasso数据集和People-Art数据集上的其他检测系统进行比较,这两个数据集用于测试艺术品上的人物检测。
  图5显示了YOLO和其他检测方法之间的比较性能。作为参考,我们给出了所有模型仅在VOC 2007数据上训练的检测人的AP。在毕加索上,模型在VOC 2012上进行训练,而在People-Art上,模型在VOC 2010上进行训练。
目标检测--yolov1
目标检测--yolov1
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仍可以预测良好的边界框和检测。

5.野外实时检测

YOLO是一种快速,准确的物体检测器,非常适合计算机视觉应用。 我们将YOLO连接到网络摄像机,并验证它是否保持实时性能,包括从摄像机获取图像并显示检测结果的时间。
  最终的系统是交互式的并且引人入胜。YOLO单独处理图像时,将其连接到网络摄像头后,其功能类似于跟踪系统,可以检测到物体在周围移动和外观变化。可以在我们的项目网站上找到该系统的演示和源代码:http://:pjreddie.com/yolo/。

6.总结

我们介绍了YOLO,这是用于对象检测的统一模型。 我们的模型构造简单,可以直接在完整图像上进行训练。 与基于分类器的方法不同,YOLO在直接与检测性能相对应的损失函数上进行训练,并且整个模型都在一起进行训练。
  Fast YOLO是文献中最快的通用目标检测器,YOLO推动了实时目标检测的最新发展。YOLO还很好地推广到了新领域,使其成为依赖快速强大的目标检测的应用程序的理想选择。

================================================
https://github.com/yjh0410/new-YOLOv1_PyTorch

上一篇:YOLOv1


下一篇:目标检测算法——YOLOV1