PP-YOLOE: An evolved version of YOLO

2024-03-30 20:28
文章标签 yolo version pp yoloe evolved

本文主要是介绍PP-YOLOE: An evolved version of YOLO,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要
我们在之前 PP-YOLOv2 的基础上进行了优化,使用 无锚 范式,更强大的主干和颈部配备了
CSPRepResStage ET-head 和动态标签分配算法 TAL
1 、介绍
YOLOX 的启发,我们进一步优化了之前的工作 PP-YOLOv2 PP-YOLOv2 是一款高性能单级探测器。基于PP-YOLOv2 ,我们提出了一个 YOLO 的进化版本,命名为 PP-YOLOE PP-YOLOE 避免使用像可变形 卷积和矩阵NMS 这样的运算符来在各种硬件上得到很好的支持。此外, PP-YOLOE 可以很容易地扩展到 具有不同计算能力的各种硬件的一系列模型。这些特性进一步推动了PP-YOLOE 在更广泛的实际场景中 的应用。
2 、方法
本节中,我们将首先回顾我们的基线模型,然后从网络结构、标签分配策略、头部结构和损失函数等方面详细介绍PP-YOLOE 的设计,如图 2 所示。
2.1PP-YOLOv2 简介
PP-YOLOv2 的整体架构包括具有可变形卷积的 ResNet50-vd 的主干、具有 SPP 层和 DropBlock PAN 颈部以及轻量级IoU 感知头。在 PP-YOLOv2 中, ReLU 激活功能用于主干,而 mish 激活功能用于颈部。在YOLOv3之后, PP-YOLOv2 仅为每个 ground truth 对象分配一个 anchor 盒。除了分类损失、回归损失和对象损失外,PP-YOLOv2 还使用 IoU 损失和 IoU 感知损失来提高性能。
2.2 PP-YOLOE 的改进
anchor free 。如上所述, PP-YOLOv2 以基于锚的方式分配 ground truth ,然而, anchor 机制引入了许多超参数,并依赖手工设计,这可能无法在其他数据集上很好的推广。基于上述原因,在PP-YOLOv2 中 引入了无锚方法。 FCOS 之后,我们为三个检测头设置上限和下限,以将 ground truth 分配给相应的 特征图 然后,计算边界框的中心,以选择最近的像素作为正样本 。在 YOLO 系列之后,预测 4D 向量 (x,y,w,h) 用于回归。尽管根据 PP-YOLOv2 的锚点大小仔细设置了上下限,但基于锚点和无锚点的方式之间的分配结果仍然存在小的不一致,这可能会导致精度下降。
Backbone Neck . 残差连接和密集连接已被广泛用于现代卷积神经网络。 残差连接 引入了 缓解梯度消 失问题的捷径 ,也可以被视为一种模型集成方法。 密集连接聚合 了具有 不同感受野的中间特征 ,在对象检测任务中表现出良好的性能。CSPNet 利用跨级密集连接在不损失精度的情况下降低计算负担,这在YOLOv5、 YOLOX 等有效物体探测器中很受欢迎。 VoVNet 和随后的 TreeNet 在对象检测和实例分割方面也表现出优异得性能。受这些工作的启发,我们提出了一种新的RepResBlock ,将残差连接和密集连接相结合,用于我们的主干和颈部。源自TreeBlock ,我们的 RepResBlock 如图 3(b) 所示,在训练阶段,在推理阶段如图3(c) 所示。首先,我们 简化了原始 TreeBlock (如图 3(a) )。然后,我们 将级联运算替换为 逐元素加法运算 (图 3 b)) ,因为这两个运算在某种程度上是近似的,如 RMNet 。因此,在推理阶段, 我们将RepResBlock 重新参数化为基本残差块(图 3(c)) ,由 ResNet-34 RepVGG 风格使用。我们 使用建
议的 RepResBlock 来构建主干和颈部 。与 ResNet 类似,我们的 主干名为 CSPRepResNet 包含一个由 三个卷积层组成的主干和由我们的 RepResBlock 堆叠的四个后续阶段,如图 3(d) 所示。
在每个阶段,使用跨阶段部分连接来避免大量 3x3 卷积层带来的大量参数和计算负担。 ESE (有效挤压和 提取)层也用于在每个 CSPRepResStage 中施加通道注意力 ,同时构建主干。我们在 PP-YOLOv2 之后使用拟议的RepResBlock CSPRepResBlock 构建颈部。与主干不同, 推理阶段, RepResBlock 中的快捷 方式和 CSPRepResStage 中的 ESE 层在颈部被删除
我们使用宽度系数 深度系数 联合缩放基本骨干和颈部,如 YOLOv5 。因此,我们可以得到一 系列具有不同参数和计算成本的检测网络。基于主干的宽度设置为 [64,128,256,512,1024] 。除主干外 基本主干的深度设置为 [3,6,6,3] 。基本颈部的宽度设置和深度设置分别为 [192,384,768] 3. 1 显示了不 同模型的宽度系数和深度系数的规格。如表 2 所示,此类修改可获得 0.7% AP 性能改进。
TAL (任务协调学习) 。为了进一步提升性能,标签分配是需要考虑的另一个方面。 YOLOX 使用
SimOTA 作为标签分配策略来提高性能。然而,为了进一步克服分类和定位的错位, TOOD 中提出了任 务对齐学习( TAL ,它由动态标签分配和任务对齐损失组成。动态标签分配意味着预测 / 损失感知。 据预测,它为每个 ground truth 分配动态数量的正锚 通过明确对齐这两个任务, TAL 可以同时获得最 高的分类分数和最精确的边界框。
对于任务对齐损失, TOOD 使用标准化的t,即 来替换 损失中的目标。它 采用每个实例中最大的 IoU 为规范化 分类的二进制交叉熵( BCE )可以重写为:
我们使用不同的标签分配策略来研究性能。我们在上述修改后的模型上进行了实验,该模型以
CSPRepResNet 为主干。使用 TAL 来取代 FCOS 风格的标签分配。
高效任务协调 Head ET-head 。在目标检测这中,分类和定位之间的任务冲突是一个众所周知的问题。许多论文[5,33,16,31] 提出了相应的解决方案。 YOLOX 的解耦头借鉴了大多数一级和两级探测器的 经验 ,并成功应用于 YOLO 模型,提高了精度。 然而 解耦的头部可能会使分类和定位任务分离和独 立,并且缺乏特定任务的学习 基于 TOOD ,我们改进了 head ,并提出了 ET-head ,目标是速度和准确性。如图2 所示,我们 使用 ESE 代替 TOOD 中的层注意力 将分类分支的对齐简化为快捷方式,并用分布 焦点损失( DFL )层代替回归分支的对齐 。经过上述变化, ET 头在 v100 上增加了 0.9ms
对于分类和定位任务的学习,我们分别选择变焦距损失( VFL )和分布焦距损失( DFL PP-Picodet成功地将VFL DFL 应用于物体探测器,并获得了性能的提高。对于 [33] 中的 VFL ,和 [16] 中的质量焦点损失(QFL )不同, VFL 使用目标分数来加权阳性样本的损失 。这种实现使得具有高 IoU 的正样本对损耗的贡献相对较大。这也使得模型在训练时更加关注高质量的样本,而不是那些低质量的样本。相同的是,两者都使用 IoU 感知分类得分( IACS )作为预测目标 。这可以有效地学习分类得分和定位质量估计的联合表示,从而实现训练和推理之间的高度一致性。对于DFL ,为了解决边界框表示不灵活的问题, [16]提出使用一般分布预测边界框。我们的模型受损失函数的监督:

这篇关于PP-YOLOE: An evolved version of YOLO的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/862489

相关文章

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

[数据集][目标检测]智慧农业草莓叶子病虫害检测数据集VOC+YOLO格式4040张9类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4040 标注数量(xml文件个数):4040 标注数量(txt文件个数):4040 标注类别数:9 标注类别名称:["acalcerosis","fertilizer","flower","fruit","grey

Learn ComputeShader 09 Night version lenses

这次将要制作一个类似夜视仪的效果 第一步就是要降低图像的分辨率, 这只需要将id.xy除上一个数字然后再乘上这个数字 可以根据下图理解,很明显通过这个操作在多个像素显示了相同的颜色,并且很多像素颜色被丢失了,自然就会有降低分辨率的效果 效果: 但是这样图像太锐利了,我们加入噪声去解决这个问题 [numthreads(8, 8, 1)]void CSMain(uint3 id

【YOLO 系列】基于YOLOV8的智能花卉分类检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言: 花朵作为自然界中的重要组成部分,不仅在生态学上具有重要意义,也在园艺、农业以及艺术领域中占有一席之地。随着图像识别技术的发展,自动化的花朵分类对于植物研究、生物多样性保护以及园艺爱好者来说变得越发重要。为了提高花朵分类的效率和准确性,我们启动了基于YOLO V8的花朵分类智能识别系统项目。该项目利用深度学习技术,通过分析花朵图像,自动识别并分类不同种类的花朵,为用户提供一个高效的花朵识别

水面垃圾检测数据集 3000张 水面垃圾 带标注 voc yolo

数据集概述 该数据集包含3000张图像,专注于水面垃圾的检测。数据集已经按照VOC(Visual Object Classes)和YOLO(You Only Look Once)两种格式进行了标注,适用于训练深度学习模型,特别是物体检测模型,用于识别水面上的各种垃圾。 数据集特点 多样性:包含3000张图像,涵盖了多种类型的水面垃圾,确保模型能够识别各种类型的垃圾。双标注格式:提供VO

[数据集][目标检测]抽烟检测数据集VOC+YOLO格式22559张2类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):22559 标注数量(xml文件个数):22559 标注数量(txt文件个数):22559 标注类别数:2 标注类别名称:["cig-pack","smoke"] 每个类别标注的框数: cig-pack 框数 = 2

[数据集][目标检测]人脸口罩佩戴目标检测数据集VOC+YOLO格式8068张3类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8068 标注数量(xml文件个数):8068 标注数量(txt文件个数):8068 标注类别数:3 标注类别名称:["face_with_mask","face_without_mask","mask"] 每个类别