【论文精读】PP-YOLOE: An evolved version of YOLO

news2024/9/20 10:47:00

文章目录

  • 前言
  • 一、可扩展的 Backbone 和 Neck
  • 二、更高效的标签分配策略 TAL (Task Alignment Learning)
  • 三、更简洁有效的 ET-Head (Efficient Task-aligned Head)


前言

百度飞桨团队发布了 PP-YOLOE,与其他 YOLO 系列算法相比,其具有更强的性能、更丰富灵活的配置方案以及更全硬件支持三大优势。下面先浅列一下在文章摘要中提到的相关的性能提升:
PP-YOLOE 的 s/m/l/x 全系列四个尺寸在精度及速度方面均超越其他同体量算法。详细数据如下图 所示,其中 PP-YOLOE-l 在 COCO test-dev 上精度可达 51.4%,在 V100 上使用 TRT FP16 进行推理,速度可达 149FPS,相较于YOLOX-l[4]精度提升 1.3 AP,速度提升 24.96%;相较于YOLOv5-x[5]精度提升 0.7AP,TRT-FP16 加速 26.8%;相较于PP-YOLOv2[6]精度提升 1.9 AP,速度提升 13.35%。
在这里插入图片描述
PP-YOLOE 相较前几代 YOLO 算法的性能提升主要源于以下三点改进:

  1. 新颖、统一的 Backbone 和 Neck 设计,更方便灵活配置多种尺寸
  2. 引入了更高效的标签分配策略 TAL(Task Alignment Learning)的动态匹配策略,解决了目标检测任务中常见的分类回归不均衡难题,提高检测精度。
  3. 设计了更简洁的 ET-Head(Efficient Task-aligned Head),以少量的速度损失为代价提升了精度
    下图是PP - YOLOE的模型架构:
    在这里插入图片描述

一、可扩展的 Backbone 和 Neck

在这里插入图片描述
以 ResNet 为代表的残差连接网络和以 DenseNet 为代表的密集连接网络在现代卷积神经网络中被广泛应用。主要是因为残差连接可以作为一种模型集成的方法,解决了梯度消失问题密集连接融合则具有不同感受野的中间层特征,在目标检测等任务上表现出了良好的性能。综合以上两种结构的特点,飞桨团队设计了 RepResBlock 结构,并用于 PP-YOLOE 的 Backbone 和 Neck 中。

重新设计 Backbone 和 Neck 的初衷之一是在利用密集连接中的特征复用和多感受野融合等优势的同时,避免巨大的内存访问成本 (Memory Access Cost,MAC) 所导致的速度下降等劣势。为此主要通过以下三步核心设计实现:

  • 为了减少内存访问带来的开销,首先借鉴了TreeNet中的 TreeBlock 并将其简化成如上图中的(a)所示的形式,在最小化 block 的同时保留了特征复用和多感受野融合的特点。
  • 由于直接堆叠简化版的 TreeBlock 仍然会带来巨大的内存访问成本,因此需要对 TreeBlock 中各卷积分支解耦,将 concat 操作替换成 elementwise_add 操作,得到 RepResBlock 来实现重参数化,进一步优化网络结构。训练时网络结构如上图(b)所示,在部署时则可以被重参数化为如上图(c)所示的形式。这样在训练时既可增强模型的表征能力,在部署时也不会引入额外的计算量。
  • 堆叠的 RepResBlock 与 CSP 结构结合组成了 CSPRepResStage。CSP 结构去除了冗余的 3x3 卷积,从而避免了巨大的参数量和计算量,使得模型在推理时更加高效。同时,ESE(Effective Squeeze and Extraction)也被引入 CSPRepResStage 以施加通道注意力,进一步提升特征表示能力。

深度学习中的concat操作和elementwise_add操作是常见的两种操作方式。concat 操作是指将不同的特征图按照通道数进行拼接,生成一个更加丰富的特征图。具体来说,如果有两个特征图A和B,它们的通道数分别为a和b,那么将它们concat 起来的操作就是将两个特征图在通道维度进行拼接,生成一个新的特征图,其通道数为a+b。在深度学习中,concat 操作常用于将不同层的特征图进行融合,从而提高模型的性能。elementwise_add操作是指将两个特征图中的对应元素进行相加,生成一个新的特征图。具体来说,如果有两个特征图A和B,它们的大小和通道数都相同,那么将它们进行elementwise_add的操作就是将A和B中对应位置的元素相加,生成一个新的特征图。在深度学习中,elementwise_add操作常用于残差网络(ResNet)等模型中,用于学习残差信息,从而提高模型的性能。综上所述,concat 操作和elementwise_add操作是深度学习中常用的两种操作方式,它们都可以用于特征融合和信息增强,提高模型的性能。

CSP(Cross Stage Partial)结构是YOLOv4/v5的一个重要组成部分,主要用于提高目标检测的精度和速度。CSP结构的核心思想是通过跨阶段局部连接来提高特征图的复杂性,从而提高目标检测的性能。
具体来说,CSP结构将整个网络分成两个阶段,即CSPDarknet53和CSPHead。CSPDarknet53是一个类似于ResNet50的网络,用于提取图像特征,而CSPHead则是一个轻量级的网络,用于进行目标检测。在CSPDarknet53中,CSP结构被应用于网络的每个模块中,每个模块都包含了一个跨阶段局部连接的CSP结构。这些局部连接可以有效减少模型的计算量和内存消耗,提高模型的训练速度和精度。
在CSPHead中,CSP结构被用于将特征图分成两个部分,即背景特征和前景特征。这样可以有效减少计算量,提高目标检测的速度和精度。此外,CSPHead还采用了多尺度的特征图,可以更好地适应不同大小的目标。
总之,CSP结构在YOLOv4/v5中的应用,可以显著提高目标检测的性能和精度,使得模型更加高效和实用。

重新设计 Backbone 和 Neck 的初衷之二是为了更方便地缩放模型尺寸,以适配不同算力的硬件。因此,需要统一 Backbone 和 neck 中的模块:

  • 使用 CSPRepResStage 搭建 Backbone。与 ResNet 类似,PP-YOLOE 使用 3 个堆叠的卷积组成的
    stem 结构以及 4 个 CSPRepResStage。

  • 在 Neck 方面沿用了 PAN 的结构,由 5 个CSPRepResStage 组成,与 Backbone 不同的是,Neck 中移除了 ESE 以及 RepResBlock中的残差连接。

最终经过重新设计的 Backbone 和 Neck 相较于 PP-YOLOv2 中的结构精度提升 0.7AP,速度也大幅提升。

二、更高效的标签分配策略 TAL (Task Alignment Learning)

标签分配是指在目标检测训练的过程中,将 ground truth 分配给 anchor box 或者 anchor point 以得到正例和负例进行监督学习。目标检测中的标签分配策略通常可以分为静态匹配和动态匹配两种:

  • 静态匹配是指不依赖网络的输出,根据 ground truth 和 anchor 的 IoU 或者位置关系进行匹配,如 ATSS、YOLOv3 中的匹配策略等。
  • 动态匹配是根据网络的输出来分配正例,如 SimOTA、TAL 等。TAL 设计了综合分类任务和回归任务的指标对 ground truth 进行分配,并依据这一指标来计算 loss 以及调整 loss 的权重,使得分类和回归任务的学习产生交互,达到了对齐分类和回归任务的效果。

由于目标检测任务包含分类和回归两个子任务,但这两个子任务的学习往往不存在交互,因此会导致分类和回归任务在预测上存在不一致的问题。具体表现为一些定位准确、分类置信度不高的预测框,被定位不准确、分类置信度高的预测框抑制。
在之前版本的PP-YOLOv1/v2中是使用 IoU Aware 的方式,依据 IoU 和分类预测分数的综合指标作为 NMS 的置信度来缓解这一问题。但分类任务和回归任务的学习依然是相互独立的,为了更好地解决不一致问题,PP-YOLOE 中引入了 TOOD 中的 TAL(Task Alignment Learning)这一标签分配策略来对齐分类和回归任务
飞桨团队在基线模型上分别对 ATSS、SimOTA 和 TAL 进行了实验探索,可以看到 TAL 得到了最优的精度表现。在引入了 TAL 之后,模型也得到了 0.9AP 的大幅提升。
在这里插入图片描述

三、更简洁有效的 ET-Head (Efficient Task-aligned Head)

由于分类和回归任务需要的特征往往不完全相同,为了同时得到任务通用和任务特有的特征,PP-YOLOE 中引入了TOOD中提出的针对分类任务和回归任务对齐的 T-Head (Task-aligned Head),并对其进行了改进。
在这里插入图片描述
ET-Head 具体结构如上图所示,相较于原始的 T-Head 在网络结构上主要进行了以下四点改进:

  • 移除了 T-Head 中耗时的任务交互特征模块;
  • 在精度无损的条件下,将通道注意力模块简化成了更加高效的 ESE block;
  • 将分类任务对齐模块简化成了 shortcut,进一步提升了速度;
  • 针对 T-Head 中复杂且对部署不友好的回归任务对齐模块,通过借鉴GFL中的积分模块来建模检测框。

为了进一步提升模型性能,在损失函数方面,则主要进行了以下两点改进:

  • 采用 VFL(varifocal loss)作为分类 loss,VFL 使用 IACS(IoU-aware classification
    score)作为 target,使得模型可以学习到 classification score 和 IoU score 的联合分布;
  • 采用DFL(Distribution Focal Loss)来监督积分模块的学习,和 GIoU Loss 相结合共同监督回归任务的学习。

在这里插入图片描述

经过改进的 ET-Head,使模型取得了 0.5AP 的精度提升,最终模型在 COCO val 上达到了 50.9mAP 的精度,在
V100 上达到了 78.1FPS。

经过以上优化,PP-YOLOE-s/m/l/x 四个模型均在 COCO 2017 test-dev 取得了卓越的表现,具体对比结果如下图所示:
在这里插入图片描述

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

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

相关文章

8.2 正态总体的参数的检验

学习目标: 如果我要学习正态总数的参数检验,我会按照以下步骤进行学习: 学习正态分布的基本知识:正态分布是统计学中非常重要的概率分布之一,掌握其基本知识包括概率密度函数、期望值、方差、标准差等是非常重要的。 …

Prometheus - Grafana 监控 MySQLD Linux服务器 demo版

目录 首先是下载Prometheus 下载和安装 配置Prometheus 查看监控数据 监控mysql demo 部署 mysqld_exporter 组件 配置 Prometheus 获取监控数据 -------------------------------------- 安装和使用Grafana 启动Grafana -------------------------------------- 配…

MySQL5.5安装图解

一、MYSQL的安装 1、打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe” 2、选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,选择“Cu…

VSD Viewer for Mac,Visio绘图文件阅读器

VSD Viewer for Mac版是mac上一款非常强大的Visio绘图文件阅读器,它为打开和打印Visio文件提供了简单的解决方案。可以显示隐藏的图层,查看对象的形状数据,预览超链接。还可以将Visio转换为包含图层,形状数据和超链接的PDF文档。 …

【状态估计】基于增强数值稳定性的无迹卡尔曼滤波多机电力系统动态状态估计(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Linux 进程管理之四大名捕

一、四大名捕 四大名捕,最初出现于温瑞安创作的武侠小说,是朝廷中正义力量诸葛小花的四大徒弟,四人各怀绝技,分别是轻功暗器高手 “无情”、内功卓越的高手“铁手”、腿功惊人的“追命” 和剑法一流的“冷血”。 本文四大名捕由…

【Unity入门】11.脚本控制物体旋转

【Unity入门】脚本控制物体旋转 大家好,我是Lampard~~ 欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)控制物体自转 (1)创建RotateLogic脚本 上一篇文章我们学习了如何在脚本中获取物体对象…

【前端工具】使用真机在chrome远程调试

手机端需要做的事 手机上下载chrome浏览器 手机开启“开发者模式” 具体步骤各个品牌手机不太一样,华为手机为例: 打开手机上的 “设置” 图标, 进入最下方 “系统” 选项, 再点击最上方 “关于手机”, 接着连续点击 …

(十八)排序算法-计数排序

1 基本介绍 1.1 概述 计数排序是一个非基于比较的排序算法,元素从未排序状态变为已排序状态的过程,是由额外空间的辅助和元素本身的值决定的。该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度…

一文解读基于PaddleSeg的钢筋长度超限监控方案

项目背景 钢铁厂生产钢筋的过程中会存在部分钢筋长度超限的问题,如果不进行处理,容易造成机械臂损伤。因此,需要通过质检流程,筛选出存在长度超限问题的钢筋批次,并进行预警。传统的处理方式是人工核查,该方…

数组(九)-- LC[316][321][402] 去除重复字母

1 移掉 K 位数字 1.1 题目描述 题目链接:https://leetcode.cn/problems/remove-k-digits/ 1.2 思路分析 这道题让我们从一个字符串数字中删除 k 个数字,使得剩下的数最小。也就说,我们要保持原来的数字的相对位置不变。 以题目中的 num1432…

深度学习第J5周:DenseNet+SE-Net实战

目录 一、介绍 二、前期准备 二、模型 三、训练运行 3.1训练 3.2指定图片进行预测 🍨 本文为[🔗365天深度学习训练营]内部限免文章(版权归 *K同学啊* 所有) 🍖 作者:[K同学啊] 📌 本周任务&…

网络安全之防火墙

目录 网络安全之防火墙 路由交换终归结底是联通新设备 防御对象: 定义: 防火墙的区域划分: 包过滤防火墙 --- 访问控制列表技术 --- 三层技术 代理防火墙 --- 中间人技术 --- 应用层 状态防火墙 --- 会话追踪技术 --- 三层、四层 UTM…

【手把手带你五分钟手机端注册使用GPT的强力对手Claude,免费,无任何成本】

前言 今天刷到了号称是媲美GPT-4的Claude介绍,无需魔法,无任何成本即可以使用,果断尝试注册使用,效果确实不错,关键是免费无成本!!! Claude使用的是Constitutional AI模型。ChatGPT…

亚马逊平台快速消耗滞销品的七大方式

一、亚马逊后台直接进行清仓 1、卖家和商品的资格 在管理多余库存页面上,可以查看亚马逊根据买家需求和其他因素推荐了哪些符合要求的商品参加清仓计划。商品当前价格下的消息将显示商品是否符合清仓促销要求(通过创建清仓促销提交)或清仓店铺要求(通过创建销售提…

Windos下设置java项目开机自启动

这里是将java项目注册为Windows服务实现开机自启动。 查看.NET framework版本 因为使用winsw工具运行时需要使用.NET framework,基本上现在的win10系统带自带有.NET framework4.0,为了选择合适的版本,我们可以查看本机.NET Framework版本,根…

差速巡线机器人设计-良好(80+)的报告-2023

如何提分?将一篇报告提升20分以上呢?差速巡线机器人设计-及格(60)的报告-2023_zhangrelay的博客-CSDN博客姓名: 学号: 实践项目1名称:差速巡线机器人设计 60分:缺乏思考、没有对比、…

恒生电子面试题总结

CPU突然飙升,如何排查 1.监控cpu运行状态,显示进程运行信息列表 top -c 2. 按CPU使用率排序,键入大写的P P 3.用 top -Hp 命令查看占用 CPU 最高的线程 上一步用 top命令找到了那个 Java 进程。那一个进程中有那么多线程,不可…

[oeasy]python0132_[趣味拓展]emoji_表情符号_抽象话_由来_流汗黄豆

emoji表情符号 回忆上次内容 上次了解了unicode 和 utf-8 unicode是字符集utf-8是一种可变长度的编码方式utf-8是实现unicode的存储和传输的现实的方式 "拜"字 unicode编码是0x62dcutf-8字节形式是b"\xe6\x8b\x9c" 如果我想看看 b"\x62\xdc"用…

准确率、精确率、召回率、F1score和混淆矩阵

准确率和PR、confusion matrix的概念初次接触是在六年前,2017着手在做激光雷达点云处理的相关事宜,六年时光不长,却有很多事情发生。 精确率 precision 也叫查准率,即正确预测为正的占全部预测为正的比例(不准错,宁愿…