第六章:YOLO v1网络详解(统一的实时目标检测)

 (目标检测篇)系列文章目录


第一章:R-CNN网络详解

第二章:Fast R-CNN网络详解

第三章:Faster R-CNN网络详解

第四章:SSD网络详解

第五章:Mask R-CNN网络详解

第六章:YOLO v1网络详解

第七章:YOLO v2网络详解

第八章:YOLO v3网络详解

文章目录

  • 系列文章目录
  • 技术干货集锦
  • 前言
  • 一、摘要
  • 二、正文分析
    • 1.引入库
    • 2.读入数据
  • 总结


技术干货集锦

0.摘要

我们提出了YOLO,一种新的目标检测方法。之前的目标检测工作将分类器重新用于检测。相反,我们将目标检测视为一个回归问题,用于空间分离的边界框和相关类别概率。一个单一的神经网络可以直接从完整图像中预测边界框和类别概率。由于整个检测流程是一个单一的网络,因此可以直接在检测性能上进行端到端的优化。我们的统一架构非常快速。我们的基本YOLO模型以每秒45帧的速度实时处理图像。网络的较小版本Fast YOLO以惊人的每秒155帧的速度处理图像,同时仍然实现了其他实时检测器两倍的mAP。与最先进的检测系统相比,YOLO在定位方面可能会出现更多的错误,但在背景上预测虚假阳性的可能性较小。最后,YOLO学习到非常通用的对象表示。在从自然图像到艺术品等其他领域的泛化中,它优于其他检测方法,包括DPM和R-CNN。

1.前言

人类一眼扫过一张图像,立即知道图像中有哪些物体,它们在哪里以及它们如何交互。人类视觉系统快速而准确,使我们能够在几乎没有意识思考的情况下执行复杂任务,如驾驶。快速而准确的目标检测算法将使计算机能够在没有专用传感器的情况下驾驶汽车,使辅助设备能够向人类用户传递实时场景信息,并释放出通用响应式机器人系统的潜力。目前的检测系统将分类器重新用于检测。为了检测一个物体,这些系统在测试图像的各个位置和尺度上评估该物体的分类器。像可变部件模型(DPM)这样的系统使用滑动窗口方法,在整个图像上均匀间隔地运行分类器。更近期的方法,如R-CNN,使用区域提议方法首先在图像中生成潜在的边界框,然后在这些提议的框上运行分类器。分类后,使用后处理来精细调整边界框,消除重复检测,并根据场景中的其他物体对框进行重新评分。这些复杂的流程管道速度较慢且难以优化,因为每个组件必须单独进行训练。我们将目标检测重新定义为一个单一的回归问题,直接从图像像素到边界框坐标和类别概率。使用我们的系统,您只需一次看图(YOLO)就可以预测出图像中存在哪些物体以及它们在哪里。

YOLO的简洁性令人耳目一新,如图1所示。一个单一的卷积网络同时预测多个边界框和这些框的类别概率。YOLO在完整的图像上进行训练,并直接优化检测性能。与传统的目标检测方法相比,这种统一的模型有几个优点。首先,YOLO非常快速。由于我们将检测视为一个回归问题,所以我们不需要复杂的流程。我们只需在测试时在新的图像上运行我们的神经网络以预测检测结果。我们的基础网络在Titan X GPU上以每秒45帧的速度运行,而快速版本则以超过150帧的速度运行。这意味着我们可以实时处理流媒体视频,并且延迟低于25毫秒。此外,YOLO的平均精度比其他实时系统高出两倍以上。如需查看我们的系统在网络摄像头上实时运行的演示,请访问我们的项目网页:http://pjreddie.com/yolo/。

其次,YOLO在进行预测时全局考虑图像。与滑动窗口和基于区域提议的技术不同,YOLO在训练和测试时都能看到整个图像,因此它隐含地编码了关于类别以及它们的外观的上下文信息。快速R-CNN是一种顶级的检测方法[14],但它在图像中将背景区域误认为物体,因为它无法看到更大的上下文信息。与快速R-CNN相比,YOLO的背景错误数量少了一半以上。第三,YOLO学习到了物体的可泛化表示。当在自然图像上进行训练并在艺术作品上进行测试时,YOLO大大优于DPM和R-CNN等顶级检测方法。由于YOLO具有高度的可泛化性,当应用于新的领域或意外的输入时,它不太容易崩溃。尽管YOLO能够快速识别图像中的物体,但在精确定位一些物体,特别是小物体时存在困难。我们在实验中进一步研究了这些权衡。我们的所有训练和测试代码都是开源的,还提供了各种预训练模型供下载使用。

(图1:YOLO检测系统。使用YOLO处理图像简单直接。我们的系统(1)将输入图像调整为448×448,(2)在图像上运行一个单一的卷积网络,(3)通过模型的置信度对检测结果进行阈值化。)

2.正文分析

2.统一检测

我们将目标检测的各个组件统一到一个单一的神经网络中。我们的网络利用整个图像的特征来预测每个边界框。它还同时预测图像中所有类别的所有边界框。这意味着我们的网络在全局范围内推理整个图像和图像中的所有对象。YOLO的设计能够实现端到端的训练和实时速度,同时保持高平均精度。我们的系统将输入图像分割成一个 S×S 的网格。如果一个物体的中心落在某个网格单元中,该网格单元就负责检测该物体。每个网格单元预测 B 个边界框和这些边界框的置信度分数。这些置信度分数反映了模型对该框包含物体的自信程度,以及对于所预测的框的准确性的评估。形式上,我们将置信度定义为 Pr(Object) * IOU_truth_pred。如果该单元格中不存在物体,则置信度分数应为零。否则,我们希望置信度分数等于预测框与真实框之间的交并比(IOU)。每个边界框由 5 个预测组成:x、y、w、h 和置信度。其中的 (x, y) 坐标表示边界框的中心相对于网格单元边界的位置。宽度和高度相对于整个图像进行预测。最后,置信度预测表示预测框与任何真实框之间的 IOU。

每个网格单元还预测了 C 个条件类别概率,Pr(Class_i|Object)。这些概率是基于网格单元包含一个物体的条件下进行预测的。我们只预测包含目标的网格单元的类别概率。在PASCAL VOC数据集上评估YOLO时,我们使用 S=7,B=2。PASCAL VOC数据集有20个标记类别,因此 C=20。我们最终的预测是一个 7×7×30 的张量。

 (图2:模型。我们的系统将检测建模为回归问题。它将图像分成一个S×S的网格,并为每个网格单元预测B个边界框、这些边界框的置信度和C个类别的概率。这些预测被编码为一个S×S×(B*5+C)的张量)

2.1 网络设计

我们将这个模型实现为一个卷积神经网络,并在PASCAL VOC检测数据集[9]上进行评估。网络的初始卷积层从图像中提取特征,而全连接层预测输出的概率和坐标。我们的网络架构受到了GoogLeNet图像分类模型[34]的启发。我们的网络有24个卷积层,后面跟着2个全连接层。我们不使用GoogLeNet中的inception模块,而是使用1×1的降维层,然后是3×3的卷积层,与Lin等人[22]的方法类似。完整的网络结构如图3所示。我们还训练了一个快速版本的YOLO,旨在推动快速目标检测的界限。快速YOLO使用了一个卷积层数较少的神经网络(9个卷积层而不是24个),并且在这些层中使用较少的过滤器。除了网络的大小外,YOLO和快速YOLO之间的所有训练和测试参数都是相同的。我们网络的最终输出是一个7×7×30的预测张量。

 

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

2.2. 训练

我们在ImageNet 1000类比赛数据集上预训练卷积层[30]。在预训练中,我们使用图3中的前20个卷积层,接着是一个平均池化层和一个全连接层。我们训练这个网络大约一周,在ImageNet 2012验证集上实现了88%的单次裁剪Top-5准确率,与Caffe模型库中的GoogLeNet模型相当[24]。我们使用Darknet框架进行所有的训练和推理[26]。然后,我们将模型转换为执行目标检测。Ren等人表明,将卷积层和全连接层都加入预训练的网络中可以提高性能[29]。在他们的示例中,我们添加了四个卷积层和两个全连接层,并随机初始化权重。由于目标检测通常需要细粒度的视觉信息,所以我们将网络的输入分辨率从224×224增加到448×448。我们的最后一层同时预测类别概率和边界框坐标。我们通过图像的宽度和高度对边界框的宽度和高度进行归一化,使其在0和1之间。我们将边界框的x和y坐标参数化为相对于特定网格单元位置的偏移量,因此它们也被限制在0和1之间。

我们在最后一层使用线性激活函数,而其他层使用下面的带泄漏的修正线性激活函数:φ(x) = (x, 0.1x), 如果 x > 0;否则,φ(x) = x (2)。我们优化模型输出的平方和误差。我们使用平方和误差是因为它易于优化,但它并不完全符合我们最大化平均精度的目标。它将定位误差与分类误差等权重考虑,这可能并不理想。此外,每个图像中许多网格单元不包含任何物体。这会将这些单元格的“置信度”分数推向零,通常会压制那些包含物体的单元格的梯度。这可能导致模型不稳定,导致训练过早发散。为了解决这个问题,我们增加了边界框坐标预测的损失,并减少了不包含物体的置信度预测的损失。我们使用两个参数λ_coord和λ_noobj来实现这一点。我们设置λ_coord = 5和λ_noobj = 0.5。平方和误差还等权重地考虑了大框和小框的误差。我们的误差度量应该反映出大框中的小偏差比小框中的小偏差重要性较低。为了部分解决这个问题,我们预测边界框的宽度和高度的平方根,而不是直接预测宽度和高度。

YOLO在每个网格单元预测多个边界框。在训练时,我们希望每个物体只有一个边界框预测器负责。我们根据当前与真实值的IOU最高的预测来指定一个预测器负责预测一个物体。这导致了边界框预测器之间的专业化。每个预测器在预测特定大小、纵横比或类别的物体方面变得更好,从而提高整体召回率。在训练过程中,我们优化以下多部分损失函数: λcoord * S^2 * Σi=0 * Σj=0 * 1obj_ij * (1obj_ij * (h(x_i - x^_i)^2 + (y_i - y^_i)^2) + λcoord * S^2 * Σi=0 * Σj=0 * 1obj_ij * 1obj_ij * ((pw_i - pw^_i)^2 + (ph_i - ph^_i)^2) + S^2 * Σi=0 * Σj=0 * 1obj_ij * 1obj_ij * (C_i - C^_i)^2 + λnoobj * S^2 * Σi=0 * Σj=0 * 1noobj_ij * 1noobj_ij * (C_i - C^_i)^2 + S^2 * Σi=0 * Σj=0 * 1obj_i * 1obj_i * Σc^2 * (p_i(c) - p^_i(c))^2 (3) 其中,1obj_i表示网格单元i中是否存在物体,1obj_ij表示网格单元i中的第j个边界框预测器是否“负责”该预测。请注意,损失函数仅在该网格单元中存在物体时惩罚分类错误(因此前面讨论的条件类概率)。如果该预测器负责地面真实框(即在该网格单元中具有最高的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和广泛的数据增强。在第一个连接层之后,使用dropout层(rate = 0.5)防止层之间的共适应。对于数据增强,我们随机缩放和平移原始图像大小的最多20%。我们还在HSV颜色空间中随机调整图像的曝光和饱和度,最多增加1.5倍。

2.3.推理 与训练时一样,对于测试图像的检测预测只需要进行一次网络评估。在PASCAL VOC上,网络对每个图像预测98个边界框和每个框的类别概率。由于YOLO只需要进行一次网络评估,因此在测试时非常快速,而不像基于分类器的方法那样。网格设计在边界框预测中强制实施空间多样性。通常,我们清楚地知道物体位于哪个网格单元,并且网络只为每个物体预测一个边界框。然而,一些大型物体或接近多个单元格边界的物体可以被多个单元格很好地定位。可以使用非极大抑制来修复这些多个检测结果。虽然非极大抑制对于性能来说并不是关键,但可以提高2-3%的mAP。 2.4.YOLO的局限性 YOLO对边界框预测施加了强烈的空间约束,因为每个网格单元只预测两个边界框,并且只能有一个类别。这种空间约束限制了模型可以预测的附近物体的数量。我们的模型在出现成群的小物体(例如一群鸟)时表现不佳。由于我们的模型从数据中学习预测边界框,因此在新的或不寻常的长宽比或配置的物体上很难进行泛化。由于我们的架构从输入图像中具有多个下采样层,因此我们的模型使用相对粗糙的特征来预测边界框。最后,虽然我们在一个近似检测性能的损失函数上进行训练,但我们的损失函数在小边界框和大边界框中对错误的处理是相同的。大边界框中的小错误通常是无害的,但小边界框中的小错误对IOU有更大的影响。我们主要的错误来源是错误的定位。

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

目标检测是计算机视觉中的一个核心问题。检测管道通常从输入图像中提取一组稳健的特征(如Haar [25]、SIFT [23]、HOG [4]、卷积特征 [6])。然后,使用分类器 [36,21,13,10]或定位器 [1,32]在特征空间中识别对象。这些分类器或定位器可以在整个图像上以滑动窗口的方式运行,也可以在图像的某些区域子集上运行 [35,15,39]。我们将YOLO检测系统与几个顶级检测框架进行比较,突出显示关键的相似性和差异。 可变形部件模型(Deformable parts models, DPM)。可变形部件模型使用滑动窗口方法进行目标检测 [10]。DPM使用一个不连续的管道来提取静态特征、对区域进行分类、预测高分区域的边界框等。我们的系统用一个卷积神经网络取代了所有这些不连续的部分。该网络同时进行特征提取、边界框预测、非极大抑制和上下文推理。网络训练特征并为检测任务进行优化,而不是使用静态特征。我们的统一架构比DPM更快、更准确。 R-CNN。R-CNN及其变种使用区域建议而不是滑动窗口在图像中找到对象。Selective Search [35]生成潜在的边界框,卷积网络提取特征,SVM评分边界框,线性模型调整边界框,非极大抑制消除重复检测。该复杂管道的每个阶段都必须独立精确地调整,结果系统非常慢,在测试时每张图像需要超过40秒 [14]。

YOLO与R-CNN有一些相似之处。每个网格单元都提出了潜在的边界框,并使用卷积特征对这些边界框进行评分。然而,我们的系统对网格单元的提案进行了空间约束,有助于减少对同一对象的多次检测。相比之下,我们的系统提出的边界框要少得多,每张图像只有98个,而Selective Search大约有2000个。最后,我们的系统将这些个别组件合并成一个单一的、联合优化的模型。 其他快速检测器 Fast和Faster R-CNN专注于通过共享计算和使用神经网络来提供区域建议,以加速R-CNN框架,而不是使用Selective Search [14] [28]。虽然它们在速度和准确性方面比R-CNN有所改进,但仍然无法实现实时性能。许多研究工作集中于加速DPM管道 [31] [38] [5]。它们加速了HOG计算,使用级联,并将计算推向GPU。然而,只有30Hz的DPM [31]实际上是实时运行的。与试图优化大型检测管道的各个组件不同,YOLO完全放弃了管道的设计,通过设计快速。对于单个类别(如人脸或人物)的检测器可以高度优化,因为它们需要处理的变化要少得多 [37]。YOLO是一个通用的检测器,可以同时学习检测多种对象。Deep MultiBox.与R-CNN不同,Szegedy等人使用卷积神经网络来预测感兴趣区域,而不使用Selective Search。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在VOC 2007上的错误。Fast R-CNN是R-CNN的最高性能版本之一[14]。根据不同的错误模式,我们展示了YOLO可以用于重新评分Fast R-CNN的检测结果,从而减少背景误报的错误,显著提高性能。我们还展示了在VOC 2012数据集上的结果,并将mAP与当前最先进的方法进行了比较。最后,我们展示了在两个艺术品数据集上,YOLO在新领域的泛化能力优于其他检测器。

4.1 与其他实时系统的比较

许多目标检测的研究工作都专注于使标准的检测流程更快速。然而,只有Sadeghi等人实际上制作了一个实时运行的检测系统(每秒30帧或更快)[31]。我们将YOLO与他们基于GPU的DPM实现进行了比较,DPM可以以30Hz或100Hz的速度运行。虽然其他研究努力没有达到实时的里程碑,但我们还是比较了它们的相对mAP和速度,以检查目标检测系统中可用的准确性和性能之间的折衷。Fast YOLO是在PASCAL数据集上最快的目标检测方法;据我们所知,它是目前最快的现有目标检测器。它的mAP为52.7%,比之前的实时检测方法准确性提高了一倍以上。YOLO将mAP提升到了63.4%,同时仍保持实时性能。我们还使用VGG-16训练了YOLO。这个模型更准确,但速度比YOLO明显慢。它对于与依赖VGG-16的其他检测系统进行比较是有用的,但由于速度比实时慢,本文的其余部分关注我们更快的模型。Fastest DPM有效地加速了DPM,而几乎不损失mAP,但它仍然比实时性能差了一倍。与神经网络方法相比,它也受限于DPM在检测上的相对低准确性。R-CNN减去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版本比YOLO高出10个mAP,但也比YOLO慢6倍。Zeiler Fergus Faster R-CNN比YOLO慢2.5倍,但准确性也较低。

 (表1:PASCAL VOC 2007上的实时系统。比较快速检测器的性能和速度。Fast YOLO是PASCAL VOC检测中速度最快的检测器,而且比任何其他实时检测器的准确度提高了一倍。相比快速版本,YOLO的准确度提高了10个mAP,同时速度仍然远超实时)

 图4:错误分析:Fast R-CNN vs. YOLO 这些图表显示了各个类别中前N个检测结果中定位错误和背景错误的百分比(N =该类别中的目标数量)。

4.2 VOC 2007错误分析

为了进一步研究YOLO与最先进的检测器之间的差异,我们对VOC 2007上的结果进行了详细的分析。我们将YOLO与Fast R-CNN进行比较,因为Fast R-CNN是PASCAL上性能最高的检测器之一,并且其检测结果是公开可用的。我们使用了Hoiem等人的方法和工具。在测试时,我们对每个类别的前N个预测进行分析。每个预测要么是正确的,要么根据错误类型进行分类:

  • 正确:正确的类别且IOU >0.5
  • 定位错误:正确的类别,0.1 < IOU < 0.5
  • 相似错误:类别相似,IOU >0.1
  • 其他错误:类别错误,IOU >0.1
  • 背景错误:对于任何物体,IOU <0.1 图4展示了每种错误类型在所有20个类别上的平均分布。YOLO在正确定位对象方面存在困难。定位错误占据了YOLO错误的大部分比例,超过了其他所有来源的错误之和。Fast R-CNN的定位错误要少得多,但背景错误要多得多。它的前N个检测结果中有13.6%是虚警,不包含任何物体。Fast R-CNN预测背景检测的可能性几乎是YOLO的3倍。

4.3 Fast R-CNN和YOLO的结合

YOLO比Fast R-CNN少犯背景错误。通过使用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。来自YOLO的增益不仅仅是模型集成的副产品,因为组合不同版本的Fast R-CNN几乎没有好处。相反,正是因为YOLO在测试时犯了不同类型的错误,所以它对于提升Fast R-CNN的性能非常有效。不幸的是,这种组合并没有从YOLO的速度中受益,因为我们分别运行每个模型,然后将结果合并。然而,由于YOLO速度非常快,与Fast R-CNN相比,它不会增加任何显著的计算时间。

 表2:VOC 2007上的模型组合实验。我们研究了将各种模型与最佳版本的Fast R-CNN结合的效果。其他版本的Fast R-CNN只提供了很小的好处,而YOLO则显著提升了性能

 表3:PASCAL VOC 2012排行榜。截至2015年11月6日,将YOLO与完整的comp4(允许使用外部数据)的公共排行榜进行比较。对于各种检测方法,显示了平均精度和每个类别的平均精度。YOLO是唯一的实时检测器。Fast R-CNN + YOLO是第四高得分的方法,比Fast R-CNN提高了2.3%。

4.4.VOC 2012结果

在VOC 2012测试集上,YOLO的平均精度为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个名次。 4.5.泛化性:艺术品中的人物检测 学术界针对目标检测的数据集通常从相同的分布中提取训练和测试数据。在实际应用中,很难预测所有可能的使用情况,测试数据可能与系统之前见过的数据有所不同。我们将YOLO与其他检测系统在Picasso数据集和People-Art数据集上进行比较,这两个数据集用于测试艺术品中的人物检测。图5显示了YOLO和其他检测方法之间的比较性能。为了参考,我们给出了在只使用VOC 2007数据进行训练的情况下,人物在VOC 2007上的检测平均精度。在Picasso数据集上,模型是在VOC 2012上训练的,而在People-Art数据集上,模型是在VOC 2010上训练的。R-CNN在VOC 2007上的平均精度很高。然而,当应用于艺术品时,R-CNN的性能明显下降。R-CNN使用选择性搜索来生成边界框提议,这对于自然图像进行了调优。R-CNN中的分类器仅看到小区域,并需要良好的提议。DPM在应用于艺术品时能够保持较高的平均精度。先前的研究推测DPM表现良好是因为它具有强大的空间模型来描述对象的形状和布局。尽管DPM的性能没有像R-CNN那样明显下降,但它的平均精度起点较低。YOLO在VOC 2007上表现良好,并且当应用于艺术品时,其平均精度下降的幅度较小。与DPM类似,YOLO建模了对象的大小和形状,以及对象之间的关系和常见出现位置。虽然艺术品和自然图像在像素级别上非常不同,但在对象的大小和形状方面它们相似,因此YOLO仍然能够预测出良好的边界框和检测结果。

5.野外实时检测

YOLO是一个快速、准确的目标检测器,非常适合计算机视觉应用。我们将YOLO连接到网络摄像头上,并验证其保持实时性能,包括从摄像头获取图像和显示检测结果所需的时间。结果系统具有交互性和吸引力。虽然YOLO对图像进行单独处理,但连接到网络摄像头时,它就像一个跟踪系统,可以检测物体的运动和外观变化。我们的项目网站上提供了该系统的演示和源代码:http://pjreddie.com/yolo/。

 图5:对Picasso和People-Art数据集的泛化结果。

 图6:定性结果。YOLO在样本艺术品和来自互联网的自然图像上运行。虽然它将一个人误认为是飞机,但大部分结果是准确的。

总结

6.结论

我们介绍了YOLO,一种用于目标检测的统一模型。我们的模型构建简单,可以直接在完整图像上进行训练。与基于分类器的方法不同,YOLO是在与检测性能直接对应的损失函数上进行训练,并且整个模型是联合训练的。在文献中,快速YOLO是最快的通用目标检测器,而YOLO推动了实时目标检测的最新技术。YOLO也能很好地泛化到新的领域,使其成为依赖于快速、稳健目标检测的应用的理想选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/36697.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记录一个heatmap.js在strict模式下的bug

ImageData的data属性只读&#xff0c;无法修改 出问题的在原始代码的490行~528行 var img this.shadowCtx.getImageData(x, y, width, height);var imgData img.data;var len imgData.length;var palette this._palette;for (var i 3; i < len; i 4) {var alpha imgD…

springboot项目中引入本地依赖jar包,并打包到lib文件夹中

1.springboot项目中引入本地依赖jar包&#xff0c;并打包到lib文件夹中 描述&#xff1a;下载了第三方相关jar包后&#xff0c;项目中引入本地jar&#xff0c;测试环境正常&#xff0c;打包线上报错提示为找到该jar 原因&#xff1a;应该在/WEB-INF/lib/xxx.jar&#xff0c;被…

基于深度学习的高精度刀具检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度刀具检测识别系统可用于日常生活中或野外来检测与定位刀具目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的刀具目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

当你按下键盘A键

CPU 里面的内存接口&#xff0c;直接和系统总线通信&#xff0c;然后系统总线再接入一个 I/O 桥接器&#xff0c;这个 I/O 桥接器&#xff0c;另一边接入了内存总线&#xff0c;使得 CPU 和内存通信。再另一边&#xff0c;又接入了一个 I/O 总线&#xff0c;用来连接 I/O 设备&…

前端框架Layui的使用讲解(Layui搭建登录注册页面)

目录 一、前言 1.什么是Layui 2.Layui的背景 3.为什么要使用Layui 4.Layui的模块化 二、Layui使用讲解 1.初识Layui 2.搭建登录页面 静态效果图​ 封装引入文件页面&#xff08;公用页面&#xff09; jsp页面搭建 userDao编写 Servlet页面编写 xml文件配置 3.搭…

DAY41:贪心算法(十)监控二叉树

文章目录 968.监控二叉树思路遍历顺序空节点处理情况列举 最开始的写法debug测试&#xff1a;travelsal的输出多了1 修改版二叉树注意点时间复杂度总结 968.监控二叉树 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及…

​python接口自动化(三十一)--html测试报告通过邮件发出去——下(详解)​

简介  本篇总结了 QQ &#xff08;SSL&#xff09;邮箱和 163&#xff08;非SSL&#xff09; 邮箱发送邮件&#xff0c;专治各种不行&#xff0c;总之看完这篇以后麻麻再也不用担心我的邮件收不到了。以下代码兼容 python2 和 python3&#xff0c;运行无异常&#xff0c;放心大…

语义分割大模型SAM论文阅读(二)

论文链接 Segment Anything 开源代码链接 SAM 论文阅读 摘要 We introduce the Segment Anything (SA) project: a new task, model, and dataset for image segmentation. Using our efficient model in a data collection loop, we built the largest segmentation dat…

Vue数据项加圆点

目录 Html 样式 方法 Html <el-table-column prop"status" label"数据状态" header-align"center" width"200"><template slot-scope"scope"><div style"display: flex; justify-content: center; a…

fun函数方法体=返回值,kotlin

fun函数方法体返回值&#xff0c;kotlin var str: String "fly"fun main(args: Array<String>) {println(getMyString())println(getMyInt())str "phil"println(getMyString())println(getMyInt()) }fun getMyInt(): Int {return if (str.equals(&…

使用OpenCV在图像上绘制质心

这段代码中已经实现了在图像上绘制质心的功能。质心,也称为重心,是物体质量分布的几何中心,可以通过物体质量和位置的加权平均来求得。 在这个程序中,图像的质心(重心)是通过计算像素强度(可以被看作是“质量”)的加权平均位置得到的。图像上每一个像素都有一个位置(…

搭建SpringBoot项目 详细教程

一、搭建SpringBoot项目 这个项目&#xff0c;可以作为种子项目&#xff0c;我打算把它放置Gitee上。包含大部分web开发的相关功能&#xff0c;后期所有的Spring Boot项目都可以用这个项目&#xff0c;简单修改一下配置&#xff0c;就可以快速开发了。 选择Spring initializr…

【Java】链表LinkedList

文章目录 一、链表1.1 链表的概念1.2 链表的结构 二、LinkedList的简介三、LinkedList的使用3.1 构造方法3.2 常见操作3.3 遍历方法 四、LinkedList的模拟实现五、LinkedList 和 ArrayList 的区别 一、链表 1.1 链表的概念 链表&#xff08;Linked List&#xff09;是一种常见…

预付费智能水表远程控制系统

预付费智能水表远程控制系统是一种基于物联网技术的智能水表管理系统&#xff0c;它通过远程通信技术和云计算平台&#xff0c;实现了对水表的实时监控、数据采集、费用计算、远程控制等功能。该系统不仅可以提高水务公司的管理效率&#xff0c;还可以为用户提供更加便捷、可靠…

Todo-List案例版本二

(160条消息) Todo-List案例版本一_bubbleJessica的博客-CSDN博客 引入了localStorage&#xff0c;让案例更加完善 src/App.vue <template><div id"root"><div class"todo-container"><div class"todo-wrap"><MyHe…

emacs下相对行号的设置

全局设置 全局开启行号显示&#xff1a;global-display-line-numbers-mode t 并设置 display-line-numbers-type的样式: relative 相对 配置代码如下: (use-package emacs:ensure t:config (setq display-line-numbers-type relative) (global-display-line-numbers-mode t)…

TypeScript 学习笔记(三):函数

一、函数定义 函数是由一连串的子程序&#xff08;语句的集合&#xff09;所组成的&#xff0c;可以被外部程序调用&#xff0c;向函数传递参数之后&#xff0c;函数可以返回一定的值。 通常情况下&#xff0c;TypeScript 代码是自上而下执行的&#xff0c;不过函数体内部的代…

SELECT * 会导致查询效率低的原因

SELECT * 会导致查询效率低的原因 前言一、适合SELECT * 的使用场景二、SELECT * 会导致查询效率低的原因2.1、数据库引擎的查询流程2.2、SELECT * 的实际执行过程2.3、使用 SELECT * 查询语句带来的不良影响 三、优化查询效率的方法四、总结 前言 因为 SELECT * 查询语句会查…

Spring整合Elasticsearch

启动Elasticsearch的集群,如果不会搭建集群可以看我以前的文章 进入到head的扩展应用,连接后面的健康值为green就表示集群没问题 Spring Data Elasticsearch 特征: Spring配置支持使用基于Java的 Configuration 类或ES客户端实例的XML命名空间。 Elasticsearc…

谈一谈LLM在推荐域的一些理解

作者&#xff1a;陈祖龙(葬青) 一、前言 最近大模型真的很火&#xff0c;从个人到公司&#xff0c;各行各业都在学习大模型、总结大模型和尝试应用大模型。大模型其实不是一个新的产物&#xff0c;已经在NLP发展了很多年。ChatGPT的诞生&#xff0c;经验的效果震惊了所有人&…
最新文章