goz建站,如何做网页游戏,域名还在备案可以做网站吗,什么软件可以看网站PP-YOLOE: An evolved version of YOLO
Abstract
在本报告中#xff0c;我们介绍了PP-YOLOE#xff0c;一种具有高性能和友好部署的工业最先进的目标探测器。我们在之前的PP-YOLOv2的基础上进行优化#xff0c;采用无锚模式#xff0c;更强大的骨干和颈部配备CSPRepResSt…PP-YOLOE: An evolved version of YOLO
Abstract
在本报告中我们介绍了PP-YOLOE一种具有高性能和友好部署的工业最先进的目标探测器。我们在之前的PP-YOLOv2的基础上进行优化采用无锚模式更强大的骨干和颈部配备CSPRepResStage, ET-head和动态标签分配算法TAL。我们为不同的实践场景提供s/m/l/x模型。结果pp - yoloe - 1在COCO测试开发上实现了51.4 mAP在Tesla V100上实现了78.1 FPS与之前的先进工业车型PP-YOLOv2和YOLOX相比分别实现了(1.9 AP 13.35%提速)和(1.3 AP 24.96%提速)的显著提升。在TensorRT和fp16精度下PP-YOLOE推理速度达到149.2 FPS。我们还进行了大量的实验来验证我们设计的有效性。源代码和预训练模型可在PaddleDetection PaddlePaddle/PaddleDetection: Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection. (github.com)。论文地址[2203.16250] PP-YOLOE: An evolved version of YOLO (arxiv.org)首先PP-YOLOE-l 在COCO数据集上达到了51.4mAP。相比较PP-YOLOv2提升1.9AP和13.35%的速度相比较YOLOX提升1.3AP和24.96%的速度。PP-YOLOE中主要的改进点是anchor-freepowerful backbone and neckTAL动态label assignET-head。该检测器的设计机制包括Anchor free无锚盒机制可扩展的backbone和neck由CSPRepResStage(CSPNetRMNet)构成使用Varifocal Loss(VFL)和Distribution focal loss(DFL)的头部机制ET-head动态标签分配算法Task Alignment LearningTAL
Introduction 单级目标检测器由于具有良好的速度和精度平衡在实时应用中很受欢迎。单级探测器中最突出的结构是YOLO系列。自YOLOv1以来YOLO系列目标检测器在网络结构、标签分配等方面发生了巨大的变化。目前YOLOX在Tesla V100上以68.9 FPS的速度实现了50.1 mAP的速度和精度的最佳平衡。 YOLOX引入了先进的无锚方法配备了动态标签分配提高了探测器的性能在精度上明显优于YOLOv5。受YOLOX的启发我们进一步优化了之前的作品PP-YOLOv2。PP-YOLOv2是一款高性能一级探测器在特斯拉V100上具有49.5 mAP, 68.9 FPS的速度。在PP-YOLOv2的基础上提出了YOLO的演进版本命名为PP-YOLOE。PP-YOLOE避免使用可变形卷积和矩阵NMS等算子以便在各种硬件上得到很好的支持。此外PPYOLOE可以轻松扩展到具有不同计算能力的各种硬件的一系列模型。这些特点进一步推动了PP-YOLOE在更广泛的实际场景中的应用。 如图所示PP-YOLOE在速度和精度权衡方面优于YOLOv5和YOLOX。具体而言pp - yoloe - 1以 78.1 FPS的速度在640 × 640分辨率的COCO上实现了51.4 mAP比pp - yolo2 和yolox - 1分别高出1.9%和1.3% AP。此外PP-YOLOE有一系列型号可以像YOLOv5一样通过宽度乘倍器和深度乘倍器进行简单配置。我们的代码已经在PaddleDetection上发布支持TensorRT和ONNX。 PP-YOLOE与其他先进型号的比较。pp - yoloe - l在COCO测试开发上实现了51.4 mAP在Tesla V100上实现了78.1 FPS比pp - yoloe - v2获得了1.9 AP和9.2 FPS的提升。 PP-YOLOv2的总体情况包括1backbone具有可变形卷积的ResNet50-vd2neck具有SPP层的PANDropBlock3head轻量级的IoU感知4激活函数在backbone中使用ReLU激活neck中使用Mish激活5标签分配为每个ground truth目标分配一个anchor box6损失分类损失、回归损失、目标损失IoU损失和IoU感知损失 PP-YOLOE是基于PP-YOLOv2的卓越的单阶段Anchor-free模型超越了多种流行的YOLO模型。PP-YOLOE有一系列的模型即s/m/l/x可以通过width multiplier和depth multiplier配置。PP-YOLOE避免了使用诸如Deformable Convolution或者Matrix NMS之类的特殊算子以使其能轻松地部署在多种多样的硬件上。 PPYOLOE中的anchor free方法主要就是将之前anchor base中预测相较于anchor的xywh改进为预测ltrb(left,top,right,bottom)并将ltrb结果乘上当前特征图的stride。
Method 在本节中我们将首先回顾我们的基线模型然后从网络结构、标签分配策略、头部结构和损失函数等方面详细介绍PP-YOLOE的设计(下图)。 我们PP-YOLOE的模型架构。主干是CSPRepResNet颈部是Path Aggregation Network (PAN)头部是Efficient Task-aligned head (ET-head)。
A Brief Review of PP-YOLOv2
PP-YOLOv2的整体架构包括具有可变形卷积的ResNet50-vd 主干、具有SPP层和DropBlock的PAN主干和轻量级IoU感知头。在PPYOLOv2中主干使用ReLU激活函数颈部使用mish激活函数。继YOLOv3之后PP-YOLOv2只为每个 GT 值对象分配一个锚框。除了分类损失、回归损失和对象损失外PP-YOLOv2还使用IoU损失和IoU感知损失来提高性能。
Improvement of PP-YOLOE Anchor-free。如上所述PP-YOLOv2以基于锚点的方式分配基础真理。然而锚定机制引入了许多超参数并且依赖于手工设计这可能不能很好地推广到其他数据集。基于以上原因我们在PP-YOLOv2中引入无锚法。根据FCOS[26]在每个像素上贴合一个锚点我们为三个检测头设置上下限将ground truth分配给相应的feature map。然后计算边界框的中心选择最接近的像素作为正样本。根据YOLO序列预测一个四维向量(x, y, w, h)进行回归。这个修改使模型更快了一点损失了0.3 AP如表2所示。虽然根据PPYOLOv2的锚点尺寸仔细设置了上界和下界但基于锚点和无锚点的赋值结果仍然存在一些小的不一致这可能导致精度下降不大。PPYOLOE解析1 Backbone - 飞桨AI Studio (baidu.com) Backbone and Neck。残差连接和密集连接在现代卷积神经网络中得到了广泛的应用。残差连接引入了解决梯度消失问题的捷径也可以看作是一种模型集成方法。密集连接集合了具有不同接收域的中间特征在目标检测任务中表现出良好的性能。CSPNet利用跨级密集连接来降低计算负担而不损失精度这种方法在YOLOv5、YOLOX等有效的目标检测器中很流行。VoVNet和随后的TreeNet在对象检测和实例分割方面也表现出优异的性能。受这些作品的启发我们提出了一种结合残差连接和密集连接的新型RepResBlock用于我们的Backbone and Neck。 源自TreeBlock我们的RepResBlock在训练阶段如下图(b)所示在推理阶段如下图©所示。首先我们对原始TreeBlock进行简化(下图(a))。然后我们用元素相加操作代替连接操作(下图(b))因为RMNet在某种程度上显示了这两种操作的近似。因此在推理阶段我们可以将RepResBlock重新参数化为ResNet-34以RepVGG风格使用的基本残差块(下图©)。 我们的RepResBlock和CSPRepResStage的结构 我们使用所提出的RepResBlock来构建Backbone and Neck。与ResNet类似我们的主干名为CSPRepResNet包含一个由三个卷积层组成的主干以及由我们的RepResBlock堆叠的四个后续阶段如上图(d)所示。在每一步中采用跨阶段部分连接避免了大量 3 × 3 卷积层带来的大量参数和计算负担。ESE(有效挤压和提取)层也用于在构建主干时在每个CSPRepResStage中施加信道注意。我们在PP-YOLOv2之后使用所提出的RepResBlock和CSPRepResStage构建颈部。与主干不同的是主干去掉了RepResBlock中的残差链接和CSPRepResStage中的ESE层。 我们使用宽度乘法器α和深度乘法器β像YOLOv5一样对基本 Backbone and Neck 进行联合缩放。因此我们可以得到一系列具有不同参数和计算量的检测网络。基本骨干宽度设置为[64,128,256,512,1024]。除主干外基本主干的深度设置为[3,6,6,3]。基本颈宽设置为[192,384,768]深度设置为3。下表给出了不同模型的宽度乘法器α和深度乘法器β的规格。 宽度乘法器α和深度乘法器β规范的一系列网络 这样的修改使AP性能提高了0.7%即49.5%如下表所示。 pp - yoloe - l在COCO val上的烧蚀研究。我们使用640×640分辨率作为输入采用fp32精度在特斯拉V100上进行测试不进行后处理。 任务一致性学习(TAL)。为了进一步提高准确性标签分配是另一个需要考虑的方面。YOLOX使用SimOTA作为标签分配策略来提高性能。然而为了进一步克服分类和定位的错位在 TOOD 中提出了任务对齐学习(task alignment learning, TAL)它由动态标签分配和任务对齐损失组成。动态标签分配意味着预测/损失意识。根据预测为每个真值分配动态的正锚点个数。通过显式地对齐这两个任务TAL可以同时获得最高的分类分数和最精确的边界框。在PP-YOLOE训练时前5个epoch是使用ATSS中的分配方式后续的epochs才使用TAL作为label assign方式。主要原因是TAL需要模型具有一定表现的基础上才能具有比较好的分配效果。 比较值得注意的是往常我们在计算class分支的loss时候使用BCEloss时候输入分别是pred_score和label_one_hot向量。而在PP-YOLOE中将label_one_hot向量替换成了TAL分配时的alignment metric。alignment metric中分数越高就意味着越是高质量样本模型希望高质量样本拥有更高的class score。 对于与任务对齐的损失TOOD使用一个归一化的 t即 t ^ \hat{t} t^ 来代替损失中的目标。它采用每个实例中最大的IoU作为规范化。分类的二进制交叉熵(Binary Cross Entropy, BCE)可以重写为: L c l s − p o s ∑ i 1 N p o s B C E ( p i , t i ^ ) , ( 1 ) L_{cls-pos}\sum_{i1}^{N_{pos}}BCE(p_i,\hat{t_i}),(1) Lcls−posi1∑NposBCE(pi,ti^),(1) 我们研究了使用不同标签分配策略的性能。本文以CSPRepResNet为骨干在上述改进的模型上进行了实验。为了快速得到验证结果我们只在COCO train2017上训练了36个epoch并在COCO val上进行验证如下表所示TAL达到了最佳的45.2% AP性能。我们使用TAL替代标签分配如FCOS样式并实现0.9% AP改进- 50.4% AP如上表所示。 不同的标签分配在基本模型上。我们使用CSPRepResStage作为主干和颈部一个1×1 conv层作为头部在COCO train2017上只训练了36个epoch。 高效任务对齐头(ET-head)。在目标检测中分类与定位之间的任务冲突是一个众所周知的问题。许多文献都提出了相应的解决方案。YOLOX的解耦头吸取了大多数一级和二级检测器的经验并成功应用于YOLO模型提高了精度。但是解耦的头部可能会使分类和定位任务分离和独立缺乏针对任务的学习。在TOOD的基础上我们改进了头提出了以速度和精度为目标的ET-head。如图上所示我们使用ESE取代了tod中的层关注将分类分支的对齐简化为shortcut将回归分支的对齐替换为分布焦损(distributed focal loss, DFL)层。通过上述变化ET-head在V100上增加了0.9ms。 对于分类和定位任务的学习我们分别选择了变焦损失(VFL)和分布焦损失(DFL)。PP-Picodet成功地将VFL和DFL应用于目标检测器并获得了性能提升。对于VFL与[Generalized focal loss]中的质量焦点损失(quality focal loss, QFL)不同VFL使用目标分数来加权阳性样本的损失。这种实现使得高IoU的阳性样本对损失的贡献相对较大。这也使得模型在训练时更加关注高质量的样本而不是那些低质量的样本。相同的是两者都使用IACS作为预测的目标。这可以有效地学习分类分数和定位质量估计的联合表示使训练和推理之间具有较高的一致性。对于DFL为了解决边界框表示不灵活的问题[Generalized focal loss]提出使用一般分布来预测边界框。我们的模型由损失函数监督: L o s s α ⋅ L o s s V F L β ⋅ L o s s G I O U γ ⋅ L o s s D F L ∑ i N p o s t ^ , ( 2 ) Loss\frac{\alpha·Loss_{VFL}\beta ·Loss_{GIOU}\gamma ·Loss_{DFL}}{\sum^{N_{pos}}_i\hat t},(2) Loss∑iNpost^α⋅LossVFLβ⋅LossGIOUγ⋅LossDFL,(2) 其中 t ^ \hat t t^表示归一化目标得分见式(1)。如上表所示ET-head获得0.5% AP改善- 50.9% AP 分类分支VFL提出了非对称的加权操作。正负样本有不平衡的问题同样在正样本中也有不等权的问题意思就是要更多的发现有价值的正样本。在为负样本的时候不同的负样本的weight主要由当前pred_score决定pred_score越大weight越大loss越大。而在为正样本的时候weight为gt_score而gt_score来源于TAL assign时。这也就达到了①正样本和负样本权重计算方式不同②每个正负样本在计算loss时的权重都是不同的达到了非对称的加权操作。 回归分支目标检测任务中做回归一般是直接预测某个回归值或者预测相较于anchor的比例而distribution focal loss (DFL)作者认为之前的bbox regression 采用的表示不够灵活没有办法建模复杂场景下的uncertainty。用直接回归一个任意分布来建模框的表示可以有更好的效果。在PP-YOLOE中将回归看作是一个分布预测任务。
Experiment
在本节中我们给出了实验的细节和结果。所有实验都在MS COCO-2017训练集上进行训练该训练集有80个类118k张图像。对于消融研究我们在5000张图像的MS COCO-2017验证集上使用具有单一尺度的标准COCO AP度量。我们使用MS COCO-2017 test-dev报告最终结果。
Implementation details
我们使用随机梯度下降(SGD)动量 0.9权重衰减 5e-4。我们使用余弦学习率计划总epochs为300次热身次数为5次基本学习率为0.01。在8 × 32 G V100 GPU设备上总批大小默认为64个我们遵循线性缩放规则来调整学习率。在训练过程中也采用衰减 0.9998的指数移动平均(EMA)策略。我们只使用一些基本的数据增强包括随机裁剪、随机水平翻转、颜色失真和多尺度。特别地输入大小均匀地从320绘制到768步幅为32。
Comparsion with Other SOTA Detectors 下表显示了MS-COCO测试分裂与其他最先进的目标检测器的结果比较。我们使用官方代码库重新评估YOLOv5和YOLOX因为它们有非预定的更新。我们比较了批处理大小 1(没有数据预处理和非最大抑制)的模型推理速度。而PP-YOLOE系列采用桨叶推理引擎。此外为了公平比较我们还在相同的环境下测试了基于tensorRT 6.0的FP16精度速度。应该强调的是PaddlePaddle2正式支持用于模型部署的tensorRT。因此PPYOLOE可以直接使用带有tensorRT的桨叶推理其他测试遵循官方指南。 不同目标检测器在COCO 2017测试开发中的速度和精度比较。标注“”的结果为官方发布的更新结果。用“*”标记的结果在我们的环境中使用官方代码库和模型进行测试。在验证和速度测试中YOLOv5的输入大小不是640 × 640的平方所以我们在表中跳过它。默认精度的速度是FP32的无trt和FP16的有trt。此外我们为YOLOX w/o trt场景提供了FP32和FP16, FP32的速度在分割线的左侧FP16的速度在右侧。PP-YOLOE使用在Objects365数据集上预训练的模型。
Conclusion 在本报告中我们提出了PPYOLOv2的几个更新包括可扩展的主干颈架构高效的任务对齐头先进的标签分配策略和改进的目标损失函数形成了一系列高性能的目标检测器称为PP-YOLOE。同时我们提出了s/m/l/x模型可以覆盖不同的实际场景。此外在PaddlePaddle官方支持下这些模型可以顺利过渡到部署。我们希望这些令人鼓舞的设计可以为开发人员和研究人员提供灵感。 Backbone 翻译为主干网络的意思既然说是主干网络就代表其是网络的一部分那么是哪部分呢翻译的很好主干部分哈哈哈哈文字游戏了哈。这个主干网络大多时候指的是提取特征的网络其作用就是提取图片中的信息共后面的网络使用。这些网络经常使用的是resnet VGG等而不是我们自己设计的网络因为这些网络已经证明了在分类等问题上的特征提取能力是很强的。在用这些网络作为backbone的时候都是直接加载官方已经训练好的模型参数后面接着我们自己的网络。让网络的这两个部分同时进行训练因为加载的backbone模型已经具有提取特征的能力了在我们的训练过程中会对他进行微调使得其更适合于我们自己的任务。(14 封私信 / 80 条消息) 深度学习网络中backbone是什么意思? - 知乎 (zhihu.com)
SAHI超大图片中对小目标检测的切片辅助超推理库 目标检测和实例分割是迄今为止计算机视觉中最重要的应用领域。然而小物体的检测和大图像的推理仍然是实际使用中的主要问题。切片推理的概念基本上是对原始图像的较小切片执行推理然后合并原始图像上的切片预测。可以用下图表示 为了提高你的模型在小目标上的性能推荐以下技术medium.com 提高图像采集的分辨率增加模型的输入分辨率tile你的图像通过增强生成更多数据自动学习模型anchors过滤掉无关的类别 检测小物体的另一个重要策略是将图像切割后形成batch这个操作叫做tile作为预处理步骤。tile可以有效地将检测器聚焦在小物体上但允许你保持所需的小输入分辨率以便能够运行快速推断。