此篇为YOLO系列论文:YOLOv1论文翻译(You Only Look Once:Unified, Real-Time Object Detection)翻译(已逐句校正,方便大家学习)
YOLO系列论文:YOLOv1论文(原文):You Only Look Once: Unified, Real-Time Object Detection (cv-foundation.org)
YOLO系列论文:YOLOv1论文(论文解读/论文总结):YOLO系列论文:YOLOv1论文 目标检测经典论文总结(原文 +解读/总结+翻译)_耿鬼喝椰汁的博客-CSDN博客
我们提出提出了一种新的目标检测方法YOLO。以前的目标检测方法通过重新利用分类器来执行检测。与先前的方案不同,我们将目标检测看作回归问题从空间上定位边界框并预测该框的类概率。我们使用单个神经网络,在一次评估中直接从完整图像上预测边界框和类别概率。由于整个检测流水线是单个网络,因此可以直接在检测性能上对其进行端到端优化。
我们的统一架构速度极快。我们的基本YOLO模型以45 帧/秒的速度实时处理图像。该网络的一个较小版本——Fast YOLO,以155 帧/秒这样惊人的速度运行,同时仍然达到其他实时检测器的两倍。与最先进的检测系统相比,YOLO会产生较多的定位误差,但它几乎不会发生把背景预测为目标这样的假阳性的错误。最后,YOLO能学习到泛化性很强的物体表征。当从自然图像学到的模型推广到艺术品等其他领域时,它的表现都优于包括DPM和R-CNN在内的其它检测方法。
人类只需扫一眼图像,立刻就知道图像中的对象是什么,它们在哪里,以及它们如何交互。人类的视觉系统是快速和准确的,使我们用很少的意识就能够执行复杂的任务,比如驾驶。快速且准确的目标检测算法可以让计算机在没有专门传感器的情况下驾驶汽车,使辅助设备能够向人类用户传达实时的场景信息,并释放通用、响应性的机器人系统的潜能。
当前的检测系统重新确定分类器的用途以执行检测。为了检测对象,这些系统采用用于该对象的分类器,并在测试图像中的各种位置和尺度处评估该对象。像可变形部件模型(DPM)这样的系统使用滑动窗口方法,其分类器在整个图像上均匀间隔的位置上运行[10]。
最近的方法,如R-CNN使用区域候选策略,首先在图像中生成潜在的边界框,然后在这些提出的框上运行分类器。在分类之后,执行用于细化边界框的后处理(post-processing),消除重复检测,并基于场景中的其他对象对框重新评分[13]。这些复杂的流程速度慢且难以优化,因为每个独立的部分都必须单独训练。
我们将目标检测重新定义为一个单一的回归问题,直接从图像像素到边界框坐标和类别概率。使用我们的系统,您只需看一次图像(YOLO),即可预测存在哪些对象以及它们的位置。
YOLO简单得令人耳目一新(参见图1),它仅用单个卷积网络就能同时预测多个边界框和这些框的类别概率。YOLO在整个图像上训练并能直接优化检测性能。该模型与传统的目标检测方法相比,具有以下一些优点。
第一,YOLO速度极快。由于我们将检测视为回归问题,因此不需要复杂的流程。我们只需在测试时对新图像简单的运行神经网络来预测检测结果。在Titan X GPU上没有批处理的情况下,YOLO的基础版本以每秒45帧的速度运行,而快速版本运行速度超过150fps。这意味着我们可以在不到25毫秒的延迟内,实时处理流媒体视频。此外,YOLO的平均精度是其他实时系统的两倍多。有关我们的系统在网络摄像头上实时运行的演示,请参阅我们的项目网页:http://pjreddie.com/yolo/
第二,YOLO是在整个图像上进行推断的。与基于滑动窗口和候选框的技术不同,YOLO在训练和测试期间都会顾及到整个图像,因此它隐式地编码了关于类及其外观的上下文信息。Fast R-CNN是一种很好的检测方法[14],但由于它看不到更大的上下文,会将背景块误检为目标。与Fast R-CNN相比,YOLO的背景误检数量不到一半。
第三,YOLO能学习到目标的泛化表征。当把自然图像上进行训练的模型,用在艺术图像进行测试时,YOLO的性能远远优于DPM和R-CNN等顶级检测方法。由于YOLO具有高度的泛化能力,因此在应用于新领域或碰到意外的输入时,它不太可能崩溃。
YOLO在准确性方面仍然落后于最先进的检测系统。虽然它可以快速识别图像中的物体,但它很难精确定位一些物体,特别是小物体。
我们将在实验中进一步考察这些权衡。我们所有的训练和测试代码都是开源的,而且各种预训练模型也都可以下载。
我们将目标检测的各个独立部分统一到单个神经网络中。我们的网络使用整个图像的特征来预测每个边界框。它还同时预测图像的所有类别的所有边界框。这意味着我们的网络对整张图像和图像中的所有对象进行全局推理。YOLO设计支持端到端训练和实时速度,同时保持较高的平均精度。
我们的系统将输入图像分成 S×S 的网格。如果对象的中心落入某个网格单元中,那么该网格单元就负责检测该目标。
每个网格单元预测B个边界框和这些框的置信度得分。这些置信度分数反映了模型对该框包含对象的置信度以及它认为该框预测的准确度。形式上,我们将置信度定义为Pr(Object)* IOU truth| pred。如果在该单元格中不存在对象,则置信度得分应当为零。否则,我们希望置信度得分等于预测框和地面真实值之间的交集与并集(IOU)。
每个边界框包括5个预测:x、y、w、h和置信度。(x,y)坐标表示相对于网格单元边界的框中心。w,h表示相对于整个图像预测宽度和高度。最后,置信度预测表示预测框和任何地面真值框之间的IOU。
每个网格单元还预测C个条件类概率Pr(Classi|Object)。这些概率以包含对象的网格单元为条件。我们只能预测每个网格单元一组类别概率,而不管框B的数目。
在测试时,我们将条件类概率与单个框置信度预测相乘。
这给我们提供了每个框的特定类别的置信度。置信度表示了该类出现在框中的概率以及预测的框与对象的拟合程度。
(图2:模型。我们的系统将检测建模为回归问题。它将图像划分为S × S网格,并为每个网格单元预测B个边界框、这些框的置信度和C类概率。这些预测被编码为S × S ×(B * 5 + C)张量。)
为了评估PASCAL VOC上的YOLO,我们使用S = 7,B = 2。PASCAL VOC有20个标记类,因此C = 20。我们最终的预测是一个7 × 7 × 30的张量。
我们将该模型实现为卷积神经网络,并在PASCAL VOC检测数据集[9]上对其进行评估。网络的初始卷积层从图像中提取特征,而全连接层负责预测输出概率和坐标。
我们的网络架构受到了GoogleNet图像分类模型的启发[33]。我们的网络有24个卷积层,后面跟着2个全连接层。与GoogleNet使用的初始模块不同,我们简单地使用1×1降维层,接着是3×3卷积层,类似于Lin等人[22]。完整的网络如图3所示。
(图3:体系结构。我们的检测网络具有24个卷积层,其后是2个全连接层。交替的1 × 1卷积层减少了来自先前层的特征空间。我们在ImageNet分类任务中以一半的分辨率(224 × 224输入图像)预训练卷积层,然后将检测分辨率加倍。)
我们还训练了一个快速版本的YOLO,旨在推动快速目标检测的边界。快速YOLO使用具有较少卷积层(9层而不是24层)的神经网络,在这些层中使用较少的卷积核。除了网络的规模之外,基本版YOLO和Fast YOLO之间的所有训练和测试参数都是相同的。
网络的最终输出是7 × 7 × 30的预测张量。
我们在ImageNet 1000类竞争数据集上预训练卷积层[29]。对于预训练,我们使用图3中的前20个卷积层,然后是平均池化层和完全连接层。我们对该网络进行了大约一周的训练,并在ImageNet 2012验证集上获得了单一裁剪图像88%的top-5准确率,与Caffe模型池中的GoogLeNet模型相当。[24]。
然后我们转换模型来执行检测训练。Ren等人指出,在预先训练的网络中添加卷积层和连接层可以提高性能[28]。按照他们的方法,我们添加了四个卷积层和两个具有随机初始化权重的全连接层。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224 × 224提高到448 × 448。
模型的最后一层预测类别概率和边界框坐标。我们用图像的宽度和高度来归一化边界框的宽度和高度,使它们落在0和1之间。我们将边界框的x和y坐标参数化为特定网格单元位置的偏移量,因此它们也被限制在0和1之间。我们对最后一层使用线性激活函数,并且所有其它层使用以下Leaky-校正线性激活:
我们对模型输出的平方和误差进行优化。我们使用误差平方和,因为它易于运算,然而,它并不完全符合我们最大化平均精度的目标。它给分类误差与定位误差的权重是一样的,这点可能并不理想。此外,在每个图像中都有许多网格单元不包含任何对象。这会将这些单元格的“置信度”分数推向零,通常压制了包含目标的单元格的梯度。这可能导致模型不稳定,导致训练在早期出现分歧。
为了弥补这一点,我们增加了边界框坐标预测的损失,并减少了不包含对象的框的置信度预测的损失。我们使用两个参数λcoord和λnoobj来实现这一点。我们设λcoord = 5,λnoobj = 0.5。
平方和误差也同样加权大框和小框中的误差。而我们的错误指标(error metric)应该要体现出,我们的误差度量应该反映出大框中的小偏差比小框中的小偏差影响更小。为了部分解决这个问题,我们直接预测边界框宽度和高度的平方根,而不是宽度和高度。
YOLO为每个网格单元预测多个边界框。在训练时,每个目标我们只需要一个边界框预测器来负责。若某预测器的预测值与目标的实际值的IOU值最高,则这个预测器被指定为“负责”预测该目标。这导致边界框预测器之间的专业化。每一个预测器都能更好地预测特定的大小、长宽比或对象类别,从而提高整体召回率。
在训练期间,我们优化以下多部分损失函数:
其中表示对象是否出现在单元i中,并且表示单元i中的第j个边界框预测值“负责”该预测。注意,如果对象存在于该网格单元中,则损失函数仅惩罚分类错误(因此前面讨论了条件分类概率)。如果预测器“负责”实际边界框(即该网格单元中具有最高IOU的预测器),则它也仅惩罚边界框坐标误差。
我们用Pascal VOC 2007和2012的训练集和验证数据集进行了大约 135个epoch 的网络训练。在2012年测试时,我们还纳入了VOC 2007测试数据用于训练。在整个训练过程中,我们使用:batch size=64,momentum=0.9,decay=0.0005。
我们的学习率进度如下:在第一个epoch中,我们将学习率从10^{-3} 慢慢地提高到10^{-2}。如果从大的学习率开始训练,我们的模型通常会由于不稳定的梯度而发散。我们继续以 10^{-2} 进行75个周期的训练,然后以10^{-3}进行30个周期的训练,最后以 10^{-4} 进行30个周期的训练。 为避免过拟合,我们使用了Dropout和大量数据增强。 在第一个连接层之后的dropout层的丢弃率设置为0.5,以防止层之间的相互适应[18]。 对于数据增强,,我们引入了高达原始图像大小20%的随机缩放和平移。我们还在 HSV 色彩空间中以高达 1.5 的因子随机调整图像的曝光度和饱和度。
就像在训练中一样,预测测试图像的检测仅需要一个网络评估。在PASCAL VOC上,网络预测每个图像98个边界框和每个框的类别概率。YOLO在测试时非常快,因为它只需要一个单一的网络评估,这与基于分类器的方法不同。
网格设计强化了边界框预测中的空间多样性。通常一个目标落在哪一个网格单元中是很明显的,而网络只能为每个目标预测一个边界框。但是,一些大的目标或接近多个网格单元的边界的目标能被多个网格单元定位。非最大值抑制(NMS)可以用来修正这些多重检测。非最大抑制对于YOLO的性能的影响不像对于R-CNN或DPM那样重要,但也能增加2−3%的mAP。
YOLO对边界框预测施加了很强的空间约束,因为每个网格单元只能预测两个框并且只能有一个类。这种空间约束限制了我们的模型可以预测的邻近目标的数量。我们的模型难以预测群组中出现的小物体,例如成群的鸟。
由于我们的模型学会了从数据中预测边界框,因此它很难泛化到新的或不寻常的长宽比或配置的对象。我们的模型还使用相对粗糙的特征来预测边界框,为输入图像在我们的架构中历经了多个下采样层。
最后,当我们在近似检测性能的损失函数上训练时,我们的损失函数损失函数无差别地处理小边界框与大边界框的误差。大边界框的小误差通常是无关要紧的,但小边界框的小误差对IOU的影响要大得多。我们的主要错误来自于不正确的定位。
目标检测是计算机视觉中的核心问题。检测流程通常是首先从输入图像上提取一组鲁棒特征(Haar [25],SIFT [23],HOG [4],卷积特征[6])开始。然后,分类器[35,21,13,10]或定位器[1,31]来识别特征空间中的对象。这些分类器或定位器或在整个图像上或在图像中的一些子区域上以滑动窗口的方式运行[34,15,38]。我们将YOLO检测系统与几种顶级检测框架进行比较,突出了关键的相似之处和不同之处。
Deformable parts models。可变形部件模型(DPM)使用滑动窗口方法进行目标检测[10]。DPM使用不相交的流程来提取静态特征,对区域进行分类,预测高评分区域的边界框等。我们的系统用单个卷积神经网络替换所有这些不同的部分。网络同时进行特征提取,边界框预测,非最大值抑制和上下文推理。网络的特征是在线训练出来的而不是静态,因此可以根据特定的检测任务进行优化。我们的统一体系结构可提供比DPM更快、更准确的模型。
R-CNN。R-CNN及其变体使用区域候选而不是滑动窗口来查找图像中的目标。选择性搜索[34]生成潜在的边界框,卷积网络提取特征,SVM对框进行评分,线性模型调整边界框,非最大抑制消除重复检测。 这个复杂流水线的每个阶段都必须独立地进行精确调整,所得到的系统非常缓慢,在测试时每张图像需要40秒以上[14]。
YOLO与R-CNN有一些相似之处。每个网格单元提出潜在的边界框并使用卷积特征对这些框进行评分。然而,我们的系统对网格单元的候选框施加空间约束,这有助于减轻对同一目标的多次检测的问题。 我们的系统还生成了更少的边界框,每张图像只有98个,而选择性搜索则有约2000个。最后,我们的系统将这些单独的组件组合成一个单一的、联合优化的模型。
其它快速检测器。Fast and Faster R-CNN专注于通过共享计算和使用神经网络来建议区域而不是选择性搜索来加速R-CNN框架[14] [27]。虽然它们比R-CNN提供了速度和准确性的改进,但两者仍然达不到实时性能。
许多研究工作集中在加速DPM管道[30] [37] [5]。它们加速HOG计算,使用级联,并将计算推动到GPU上。然而,只有30Hz DPM [30]实际上是实时运行的。
YOLO没有试图优化大型检测管道的单个组件,而是完全抛弃了管道,并通过设计实现了快速。
针对单一类别(如人脸或人物)的检测器可以高度优化,因为他们只需处理较少的多样性[36]。YOLO是一种通用探测器,可学习同时检测多个目标。
Deep MultiBox。与R-CNN不同,Szegedy等人 训练一个卷积神经网络来预测感兴趣的区域[8],而不是使用选择性搜索。 MultiBox还可以通过用单个类别预测替换置信度预测来执行单个目标检测。 但是,MultiBox无法执行一般的目标检测,并且仍然只是较大检测流水线中的一部分,需要进一步的图像补丁分类。 YOLO和MultiBox都使用卷积网络来预测图像中的边界框,但YOLO是一个完整的检测系统。
OverFeat。Sermanet等人训练了一个卷积神经网络来执行定位,并调整该定位器进行检测[31]。OverFeat高效地执行滑动窗口检测,但它仍然是一个不相交的系统。OverFeat优化了定位功能,而不是检测性能。像DPM一样,定位器在进行预测时只能看到局部信息。OverFeat无法推断全局上下文,因此需要大量的后处理来产生连贯的检测。
MultiGrasp。我们的系统在设计上类似于Redmon等[26]的抓取检测。 我们的网格边界框预测方法基于MultiGrasp系统进行回归分析。 然而,抓取检测比物体检测要简单得多。 MultiGrasp只需要为包含一个目标的图像预测一个可抓取区域。 它不必估计目标的大小,位置或边界或预测它的类别,只需找到适合抓取的区域就可以了。 而YOLO则是预测图像中多个类的多个目标的边界框和类别概率。
首先,我们在PASCAL VOC 2007上比较了YOLO和其他实时检测系统。为了了解YOLO和R-CNN变体之间的差异,我们探讨了YOLO和Fast R-CNN(R-CNN的最高性能版本之一)在VOC 2007上造成的错误[14]。基于不同的误差分布,我们表明YOLO可以用于对快速R-CNN检测进行重新评分,并减少来自背景假阳性的误差,从而显著提高性能。我们还提供了VOC 2012结果,并将mAP与当前最先进的方法进行了比较。最后,我们在两个艺术品数据集上证明了YOLO比其他检测器更好地推广到新的领域。
目标检测方面的许多研究工作都集中在使标准的检测流程更快[5],[38],[31],[14],[17],[28]。然而,只有Sadeghi等人实际上产生了一个实时运行的检测系统(每秒30帧或更好)[31]。我们将YOLO与DPM的GPU实现进行了比较,其在30Hz或100Hz下运行。虽然其它的算法没有达到实时性的标准,我们也比较了它们的mAP和速度的关系,从而探讨目标检测系统中精度和性能之间的权衡。
Fast YOLO是PASCAL上最快的目标检测方法;据我们所知,它是现有的最快的目标检测器。具有52.7%的mAP,实时检测的精度是以前的方法的两倍以上。普通版YOLO将mAP推到63.4%的同时保持了实时性能。
我们还使用VGG-16训练YOLO。 这个模型比普通版YOLO更精确,但也明显更慢。 它的作用是与依赖于VGG-16的其他检测系统进行比较,但由于它比实时更慢,因此本文的其他部分将重点放在我们更快的模型上。
最快的DPM可以在不牺牲太多mAP的情况下有效加速DPM,但仍然会将实时性能降低2倍[37]。与神经网络方法相比,DPM的检测精度相对较低,这也是限制它的原因。
减去R的R-CNN用静态侯选边界框取代选择性搜索[20]。虽然速度比R-CNN更快,但它仍然无法实时,并且由于该方法无法找到好的边界框,准确性受到了严重影响。
Fast R-CNN加快了R-CNN的分类阶段,但它仍然依赖于选择性搜索,每个图像需要大约2秒才能生成边界候选框。因此,它虽然具有较高的mAP,但的速度是0.5 fps,仍然远未达到实时。
最近的Faster R-CNN用神经网络代替了选择性搜索,提出了边界框,类似于Szegedy等人[8]的方法。在我们的测试中,他们最精确的模型达到了7 fps,而一个较小的、不太精确的模型运行在18 fps。VGG-16版本的Faster R-CNN比YOLO高10 mAP,但也比YOLO慢6倍。ZeilerFergus Faster R-CNN的速度仅为YOLO的2.5倍,但也不如YOLO准确。
为了进一步研究YOLO和最先进的检测器之间的差异,我们详细分析了VOC 2007的分类结果。我们将YOLO与Fast R-CNN进行比较,因为Fast R-CNN是PASCAL上性能最高的检测器之一并且它的检测代码是公开可用的。我们使用Hoiem等人[19]的方法和工具,对于测试的每个类别,我们查看该类别的前N个预测。每个预测都或是正确的,或是根据错误的类型进行分类:
Correct: correct class and IOU>0.5
Localization: correct class, 0.1
Other: class is wrong, IOU>0.1
Background: IOU<0.1 for any object(所有目标的IOU都<0.1)
YOLO难以正确地定位目标,因此定位错误比YOLO的所有其他错误总和都要多。Fast R-CNN定位错误更少,但把背景误认成目标的错误比较多。它的最高检测结果中有13.6%是不包含任何目标的误报。 Fast R-CNN把背景误认成目标的概率比YOLO高出3倍。
YOLO误认背景为目标的情况比Fast R-CNN少得多。 通过使用YOLO消除Fast R-CNN的背景检测,我们获得了显著的性能提升。 对于R-CNN预测的每个边界框,我们检查YOLO是否预测了一个相似的框。 如果确实如此,那么我们会根据YOLO预测的概率和两个框之间的重叠情况提高预测值。
最好的Fast R-CNN模型在VOC 2007测试集中达到了 71.8% 的mAP。 当与YOLO合并时,其mAP增加了 3.2% 至 75.0%。 我们还尝试将顶级Fast R-CNN模型与其他几个版本的Fast R-CNN结合起来。 些组合使mAP小幅增加0.3%至0.6%,详情见表2。
结合YOLO后获得的性能提高不仅仅是模型集成的副产品,因为结合不同版本的Fast R-CNN几乎没有什么益处。 相反,正是因为YOLO在测试时出现了各种各样的错误,所以它在提高Fast R-CNN的性能方面非常有效。
不幸的是,这种组合不会从YOLO的速度中受益,因为我们分别运行每个模型,然后合并结果。 但是,由于YOLO速度如此之快,与Fast R-CNN相比,它不会增加任何显著的计算时间。
在VOC 2012测试集中,YOLO的mAp得分是57.9%。这比现有最先进的技术水平低,更接近使用VGG-16的原始的R-CNN,见表3。与其最接近的竞争对手相比,我们的系统很难处理小物体上。在瓶子、羊、电视/监视器等类别上,YOLO得分比R-CNN和Feature Edit低8-10%。然而,在其他类别,如猫和火车YOLO取得了更好的表现。我们的Fast R-CNN + YOLO模型组合是性能最高的检测方法之一。 Fast R-CNN与YOLO的组合提高了2.3%,使其在公共排行榜上上升了5个名次。
用于目标检测的学术数据集的训练和测试数据是服从同一分布的。但在现实世界的应用中,很难预测所有可能的用例,他的测试数据可能与系统已经看到的不同[3]。我们将YOLO与其他检测系统在毕加索数据集[12]和人物艺术数据集[3]上进行了比较,这两个数据集用于测试艺术品上的人物检测。
作为参考,我们提供了VOC 2007的人形检测的AP,其中所有模型仅在VOC 2007数据上训练。在Picasso数据集上测试的模型在是在VOC 2012上训练,而People-Art数据集上的模型则在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/网站。
(图6:定性结果。YOLO运行的样本艺术品和自然图像从互联网上。虽然它确实认为一个人是一架飞机,但它基本上是准确的。)
我们介绍YOLO——一种用于物体检测的统一模型。 我们的模型构造简单,可以直接在完整图像上训练。 与基于分类器的方法不同,YOLO是通过与检测性能直接对应的损失函数进行训练的,并且整个模型是一起训练的。
快速YOLO是文献中最快的通用目标检测器,YOLO推动实时对象检测的最新技术。 YOLO还能很好地推广到新领域,使其成为快速,鲁棒性强的应用的理想选择。
翻译到这里就结束啦,已经都校正过了,如果有什么问题可以在评论区留言呀~
如果帮助到大家,可以一键三连支持下~