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

news2024/9/20 14:28:53

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


第一章: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.coloradmin.cn/o/729739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一起学SF框架系列5.7-模块Beans-BeanDefinition定义

在SF下&#xff0c;开发人员用xml或注解模式定义bean&#xff0c;框架把这些定义转化为内部BeanDefinition类&#xff0c;然后通过BeanDefinition类实现Bean的管理&#xff08;包括初始化、依赖注入及生命周期管理&#xff09;&#xff0c;因此了解Bean的定义、解析、使用过程非…

[kafka] windows下安装kafka(含安装包)

[kafka] windows下安装kafka&#xff08;含安装包&#xff09; 目录 前言 一、下载kafka安装包 1&#xff09;下载安装包 2&#xff09;解压安装包 二、运行zookeeper 1.运行zookeeper&#xff08;因为kafka必须要和zookeeper一起运行&#xff09; 三、运行kafka 四、使用fafka…

web3创业有哪些机会及具体案列(二)

目录 1. 去中心化金融&#xff08;DeFi&#xff09;&#xff1a;2. 去中心化身份验证和数字身份&#xff1a;3. 去中心化市场和电子商务&#xff1a;4. 区块链游戏和虚拟资产&#xff1a;5. 数据隐私和安全&#xff1a;6. 去中心化社交媒体&#xff1a;7. 去中心化能源交易&…

Spring容器扩展点在微服务中的使用

(20230306)Spring容器扩展点在微服务中的使用 文章目录 1. Spring扩展点梳理2.Spring扩展点应用场景2.1 整合NacosApplicationListener扩展场景——监听容器中发布的事件Lifecycle扩展场景——管理具有启动、停止生命周期需求的对象 2.2 整合RibbonSmartInitializingSingleton扩…

定时器中断实验(stm32)

目录 TIME的代码time.ctime.h main.c TIME的代码 time.c void TIM3_Int_Init(u16 arr,u16 psc) {TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能//定时器TIM3初始化…

uview u-input 点击清除按钮,数据清空但视图未清空

问题描述&#xff1a; 点击 uview 的 u-input 输入框自带的清除按钮&#xff0c;v-model 绑定的数据清空了&#xff0c;但是输入框内还显示着之前的数据 解决方案&#xff1a; 将 v-model 绑定的值写到 data 初始变量中声明 原始代码&#xff1a; <u-input v-model"…

Spring对事务的支持

目录 事务的传播行为 一、什么是事务的传播行为 二、7种事务传播行为 1. REQUIRED 2. REQUIRES_NEW 3. NESTED 4. 总结 三、事务的传播行为&#xff08;理解记忆&#xff09; 转载&#xff1a;一个99%的人都说不清楚知识点——Spring 事务传播行为 - 哔哩哔哩 事务属性…

2023.7.7HCIA中静态路由

一、题目要求 需求&#xff1a; 1.所有节点的IP地址均属于192.168.1.0 24--子网划分 2.全网可达--静态 3.加快收敛&#xff08;尽量汇总&#xff09; 5.R6存在环回接口--6.6.6.6 24&#xff0c;不能直接写去往6.6.6.0网段的路由--缺省 6.没有环路--NUll 0 7.正常流量走100M&am…

什么是ERC20?

ERC20 是以太坊区块链上最常见的代币标准之一。它是以太坊上智能合约的一种协议&#xff0c;定义了一套规则和接口&#xff0c;使得在以太坊网络上创建和管理代币变得更加简单和标准化。 ERC20 代币标准定义了一组功能和方法&#xff0c;以便代币合约可以与其他合约和钱包进行…

dxSpreadSheetReportDesigner使用笔记

通过该控件达到显示主从表,效果如下图所示. 在界面上放置以下控件 1.新建主从表主表为tab1,从表为tab2,二表通过设置从表的mastersource及MasterFields与从表联动. 2.设置dxspreadsheetreportdesigner与主从表关联 在DataBinding中的datasource关联主从. 在details中关联从表…

UE5、CesiumForUnreal接入XYZ格式地图瓦片如高德地图、OSM、ArcGIS等

文章目录 1.实现目标2.实现过程2.1 XYZ与TMS对比2.1 cesium-native改造2.3 CesiumForUnreal插件改造2.4 XYZ瓦片加载测试3.参考资料1.实现目标 通过改造cesium-native和cesiumforunreal插件,参考tms的栅格地图瓦片加载逻辑,实现在UE5、CesiumForUnreal中接入XYZ格式的地图瓦片…

-Xmx20m -Xms5m

-Xmsjava程序启动时初始堆的大小&#xff0c;默认是物理内存的1/64-Xmxjava程序能获得的最大堆的大小&#xff0c;默认为物理内存的1/4 验证默认值 winr → systeminfo 配置JVM启动参数&#xff1a;-XX:PrintCommandLineFlags-XX:ConcGCThreads3 -XX:G1ConcRefinementThreads…

UEditor v1.4.3.3 .net版本任意文件上传 漏洞复现

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 漏洞描述02 影响范围03 验证方式04 利用方式05 实战案例06 修复方案 01 漏洞描述 UEditor是一款所见即所得的开源富文本编辑器&#xff0c;具有轻量、可定制、用户体验优秀等特点&#xff0c;被广大…

flutter聊天界面-加号【➕】更多展开相机、相册等操作Panel

flutter聊天界面-加号【➕】更多展开相机、相册等操作Panel 在之前实现了flutter聊天界面的自定义表情的展示&#xff0c;这里记录一下更多操作展开的相机、相册等操作功能实现。 一、查看效果 更多操作展开的相机、相册等操作功能实现。 二、代码实现 展开的操作按钮可能比…

前端(四)——vue.js、vue、vue2、vue3

&#x1f60a;博主&#xff1a;小猫娃来啦 &#x1f60a;文章核心&#xff1a;vue.js、vue、vue2、vue3从全局到局部 文章目录 vue.js、vue、vue2、vue3是什么关系?Vue.js简介发展历程特点与优势生态系统Vue.js基础知识安装与配置 基本语法Vue.js主要版本解析Vue.js 2.x vue2…

python 第十一章 文件操作

系列文章目录 第一章 初识python 第二章 变量 第三章 基础语句 第四章 字符串str 第五章 列表list [] 第六章 元组tuple ( ) 第七章 字典dict {} 第八章 集合set {} 第九章 常用操作 第十章 函数 文章目录 系列文章目录11.1文件操作的作用11.2文件的基本操作打开打开文件模式 …

string底层是如何实现的

前言 在我们学习的时候总是会用到string&#xff0c;知道它具备各种功能&#xff0c;它也是一种很强大的模板&#xff0c;那么有没有想过&#xff0c;我们天天都在使用的它&#xff0c;它的底层又是怎么样的&#xff0c;它又是如何实现的呢。这里讲挑选几个比较常用的一个功能…

SGD原理及Pytorch实现

&#x1f38f;目录 &#x1f388;1 SGD       &#x1f384;1.1 原理       &#x1f384;1.2 构造       &#x1f384;1.3 参数详解——momentum ✨1 SGD &#x1f95a;2.1 原理 SGD为随机梯度下降&#xff0c;原理可看刘建平老师博客。 &#x1f383;…

Blender--原理化体积

“原理化体积 着色器将所有体积着色组件组合到一个易于使用的节点中。该节点含有散射&#xff0c;吸收和黑体辐射属性&#xff0c;因此&#xff0c;可以仅仅使用该着色器节点对烟雾和火焰等进行渲染。” 官方文档介绍&#xff1a;原理化体积 — Blender Manual 可以用于实现丁…

Rainbond开源

Rainbond的 Gateway API 插件制作实践 Gateway API 作为新一代的流量管理标准&#xff0c;对原有 Ingress 的扩展不规范、移植性差等问题做出了改进。从兼容K8s生态和优化网关体验出发&#xff0c;Rainbond 支持以插件的形式扩展平台网关能力&#xff0c;目前已经有多家社区提供…