目标检测——PP-YOLOE-R算法解读

PP-YOLO系列,均是基于百度自研PaddlePaddle深度学习框架发布的算法,2020年基于YOLOv3改进发布PP-YOLO,2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet,2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列,所以放一起解读,方便对比前后改进地方。


PP-YOLO系列算法解读:

  • PP-YOLO算法解读
  • PP-YOLOv2算法解读
  • PP-PicoDet算法解读
  • PP-YOLOE算法解读
  • PP-YOLOE-R算法解读

YOLO系列算法解读:

  • YOLOv1通俗易懂版解读
  • SSD算法解读
  • YOLOv2算法解读
  • YOLOv3算法解读
  • YOLOv4算法解读
  • YOLOv5算法解读

文章目录

  • 1、算法概述
  • 2、PP-YOLOE-R细节
  • 3、实验


PP-YOLOE-R(2022.11.4)

论文:PP-YOLOE-R: An Efficient Anchor-Free Rotated Object Detector
作者:Xinxin Wang, Guanzhong Wang, Qingqing Dang, Yi Liu, Xiaoguang Hu, Dianhai Yu
链接:https://arxiv.org/abs/2211.02386
代码:https://github.com/PaddlePaddle/PaddleDetection


1、算法概述

面向任意方向的目标检测是航拍场景、遥感图像和文本视觉场景中的一项基本任务。作者基于PP-YOLOE检测算法提出高效无锚框旋转目标检测器PP-YOLOE-R。作者在PP-YOLOE-R中引入了一套有用的技巧来提高检测精度,并减少了额外的参数和计算成本。结果表明,通过单尺度训练和测试,PP-YOLOE-R-l和PP-YOLOE-R-x在DOTA1.0数据集上的mAP分别达到78.14%和78.28%,优于几乎所有其他旋转目标检测器。通过多尺度训练和测试,PP-YOLOE-R-l和PP-YOLOE-R-x进一步提高了检测精度,分别达到80.02%和80.73%mAP。在这种情况下,PP-YOLOE-R-x超越了所有无锚点的方法,与目前最先进的基于锚点的两阶段模型相比,也非常具有竞争力。此外,PP-YOLOER具有部署友好性,PP-YOLOE-R-s/m/l/x在RTX 2080 Ti上使用TensorRT和fp16精度分别可以达到69.8/55.1/48.3/37.1 FPS,可以看出这个推理速度是满足实时性要求的。
在这里插入图片描述


2、PP-YOLOE-R细节

PP-YOLOE-R基于PP-YOLOE改进而来,和PP-YOLOE网络结构非常相似,其网络结构图如下所示:
在这里插入图片描述
图中画红框的就是PP-YOLOE-R新增的角度预测头分支,除此之外,backbone,neck,及剩余head部分结构一模一样。
相对于PP-YOLOE,PP-YOLOE-R主要做了4点改进:

  • 1、借鉴FCOSR[1]的方式也引入了ProbIoU loss[2]作为回归损失以避免边界不连续问题。
  • 2、改进任务一致性学习(Task Alignment Learning, TAL)以适配旋转目标检测算法。
  • 3、设计了一个解耦的角度预测头,通过DFL损失直接学习角度的一般分布,以获得更准确的角度预测。
  • 4、对重新参数化机制做了一些修改,增加了一个可学习的门控单元来控制来自前一层的信息量。

做的改进:
Baseline:添加FCOSR的标签分配策略和引入ProbIoU损失作为回归损失到PP-YOLOE中作为实验baseline;其backbone与neck部分和PP-YOLOE保持一样,但是head中的回归分支被调整为预测旋转矩形框5个值,即(x,y,w,h,θ),单尺度训练和测试情况下,baseline能在DOTA1.0数据集上达到75.61%mAP。
改进地方及其消融实验结果如下:
在这里插入图片描述

Rotated Task Alignment Learning: 任务一致性学习由任务对齐的标签分配和任务对齐的损失组成。任务对齐标签分配构建了一个任务对齐度量,用来从候选锚点中选择正样本;当候选锚点坐标落在任何gt真值框中,就可以根据这个对齐度量判定是否属于正样本。其计算公式如下:
在这里插入图片描述
这里s代表预测类别分数,u代表预测框和gt框的IoU大小。
在带旋转的任务一致性学习(Rotated Task Alignment Learning)中,候选锚点的选取过程则利用了gt真值边界框及其锚点的几何特性,采用预测值与gt真值边界框的SkewIoU值作为u。经过如上改变就可将任务对齐的标签分配策略应用在旋转框检测任务中。对于TAL的另一部分,任务对齐的损失,作者没有做出改变,经过上述改变后,mAP提升至77.24%。

Decoupled Angle Prediction Head: 大多数旋转目标检测算法都是在回归分支中预测5个参数(x,y,w,h,θ)用来预测带旋转的矩形框。这里作者假设了θ可能和其他4个坐标需要不同的特征,所以作者设计了另外的一个角度预测分支。这个改进措施给模型带来0.54%mAP的提升。

Angle Prediction with DFL: ProbIoU损失作为回归损失是通过联合优化(x,y,w,h,θ)这5个参数,为了计算ProbIoU损失,旋转矩形框被转换到高斯矩形框(Gaussian bounding box)。当旋转矩形框大致为正方形时,由于高斯矩形框中的方向是继承自椭圆表示,因此无法确定旋转矩形框的方向。为了克服这个问题,作者引入了Distribution Focal Loss(DFL)来预测角度。DFL的目的是学习角度的一般分布。在本文中,作者离散了角度值,用等间隔角度w来切分,预测角度值θ可表示为:
在这里插入图片描述
Pi代表角度落在第i个间隔的可能性,本文的旋转矩形框遵从OpenCV的定义,w设置为π/180。通过在角度预测时引入DFL,mAP提升了0.23%。

Learnable Gating Unit for RepVGG: RepVGG提出了一个由3x3卷积、1x1卷积和一个shortcut路径组成的多分支架构。其训练阶段的信息流可表示为:
在这里插入图片描述
其中f(x)代表3x3卷积,g(x)代表1x1卷积。在推理过程中,将该体系结构重新参数化为等效的3x3卷积。虽然RepVGG相当于卷积层,但在训练过程中使用的RepVGG多分支架构可以使得训练收敛效果更好,这得益于多分支结构引入了有用的先验知识。受此启发,作者在RepVGG中引入了一个可学习的门控单元来控制来自前一层的信息量。本设计主要针对微小物体或密集物体,自适应融合不同感受野的特征,可表述如下:
在这里插入图片描述
其中α1和α2是可学习参数,在PP-YOLOE的网络结构RepResBlock中,没有使用shortcut连接,所以这里RepResBlock只有一个参数α1,在推理过程中,可学习参数可以随着卷积层的变化而重新参数化,这样既不会改变参数的速度,也不会改变参数的数量。通过引入这个改变,mAP提升0.13%。

ProbIoU Loss: 在ProbIoU损失中,使用两个高斯分布的Bhattacharyya系数来度量两个旋转边界盒的相似度。但是GWD、KLD、KFIoU也能度量高斯矩形框的相似性。作者拿KLD Loss和ProbIoU Loss做对比,证明ProbIoU Loss确实更合适,如下:
在这里插入图片描述


3、实验

PP-YOLOE-R在DOTA1.0数据集上与现如今先进的旋转框检测算法对比情况如下表所示:
在这里插入图片描述
从表中结果可以看出,PP-YOLOE-R是具有高精度、实时性高,参数少,计算成本低的检测算法,优于所有无锚旋转框目标检测算法。


参考文献:
[1] Zhonghua Li, Biao Hou, Zitong Wu, Licheng Jiao, Bo Ren, and Chen Yang. Fcosr: A simple anchor-free rotated detector for aerial object detection. arXiv preprint arXiv:2111.10780, 2021. 1, 2, 3, 4, 5
[2] Jeffri M Llerena, Luis Felipe Zeni, Lucas N Kristen, and Claudio Jung. Gaussian bounding boxes and probabilistic intersection-over-union for object detection. arXiv preprint arXiv:2106.06072, 2021. 1, 2, 3, 4, 5

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

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

相关文章

数据库中DQL、DML、DDL、DCL的概念与区别

目录 DQL (Data Query Language) DML (Data Manipulation Language) DDL (Data Definition Language) DCL (Data Control Language) 数据库语言可以根据其功能被分为几个不同的类别:DQL(数据查询语言)、DML(数据操纵语言&…

多线程实现龟兔赛跑

pos从0到100&#xff0c;代表龟兔距离起点的长度。 兔兔一步10米&#xff0c;每次休息10s&#xff1a; public class Rabbit extends Thread {int pos0;Overridepublic void run() {while(this.pos<100){this.pos10;System.out.println("兔兔的位置&#xff1a;"…

从头手搓一台ros2复合机器人(带机械臂)

一.前言 大家好呀&#xff0c;从本小节开始我们就步入了仿真篇&#xff0c;主要对机器人仿真进行介绍与操作&#xff0c;当然仿真有优点也有缺陷&#xff0c;基于对此学习&#xff0c;我们可以对上几小节创建的小车模型模拟硬件的特性&#xff0c; 比如&#xff1a; 有多重…

洛谷[NOIP2016 提高组] 玩具谜题

[NOIP2016 提高组] 玩具谜题 题目背景 NOIP2016 提高组 D1T1 题目描述 小南有一套可爱的玩具小人&#xff0c;它们各有不同的职业。 有一天&#xff0c;这些玩具小人把小南的眼镜藏了起来。小南发现玩具小人们围成了一个圈&#xff0c;它们有的面朝圈内&#xff0c;有的面…

JetBrains学生包续期

Pycharm进入显示your license has expired 这个意思是你的许可过期了&#xff0c;重新输入最新的激活码就可以了。 1. 说明我的JetBrains学生包需要进行续期了。首先登录JetBrains官网打开个人主页&#xff0c;点击Renew my Education Pack 2. 然后填写一系列信息&#xff0c;…

面经(六)武汉超星

总体评价&#xff1a; 大意了&#xff0c;本来投完简历&#xff0c;然后对方说有没有时间聊一下&#xff0c;我以为就是聊一下技术之外的东西&#xff0c;比如待遇、离职原因之类的东西&#xff0c;没想到上来就是技术面&#xff0c;啥心理准备没有&#xff0c;一通问问给我问…

VR历史建筑漫游介绍|虚拟现实体验店|VR设备购买

VR历史建筑漫游是一种利用虚拟现实技术&#xff0c;让用户可以身临其境地参观和探索历史建筑的体验。通过VR头显和相关设备&#xff0c;用户可以在虚拟环境中自由移动和互动&#xff0c;感受历史建筑的真实氛围和文化内涵。 在VR历史建筑漫游中&#xff0c;您可以选择不同的历史…

手机备忘录怎么导出到电脑,如何将手机备忘录导出到电脑

备忘录是我们日常生活和工作中常用的工具之一&#xff0c;我们可以在手机上轻松地记录重要的事务、想法和灵感。然而&#xff0c;在某些情况下&#xff0c;我们可能需要将手机备忘录导出到电脑进行更详细的整理和管理。那么&#xff0c;手机备忘录怎么导出到电脑&#xff0c;如…

开箱即用之 windows部署jdk、设置nginx、jar自启

jdk安装 官网下载对应的安装包&#xff0c;解压之后放在本地指定的文件夹下 传送门https://www.oracle.com/java/technologies/downloads/#jdk21-windows 我比较喜欢下载zip方式的&#xff0c;解压之后直接能用&#xff0c;不需要安装了 配置环境 JAVA_HOME 添加path路径 …

Echarts折线图x轴不显示全部数据的解决办法,亲测有效

Echarts中&#xff0c;当横轴数据非常多的时候&#xff0c;这时候canvas无法渲染出全部数据的效果图来&#xff0c;可以进行以下配置&#xff0c;亲测有效。 xAxis: {type: "category",axisLabel: {interval: 0,} },type: “category” 这一行&#xff0c;不能省略&…

Solr完结版

Solr是基于Apache Lucene构建的用于搜索和分析的开源解决方案。提供可拓展索引、搜索功能、高亮显示和文字解析功能。本质是一个java web项目&#xff0c;内嵌Jetty服务器&#xff0c;安装方便。 请求Solr中的控制器&#xff0c;处理完数据后把结果相应给客户端 正向索引&#…

MySQL数据导入的方式介绍

MySQL数据库中的数据导入是一个常见操作&#xff0c;它涉及将数据从外部源转移到MySQL数据库表中。在本教程中&#xff0c;我们将探讨几种常见的数据导入方式&#xff0c;包括它们的特点、使用场景以及简单的示例。 1. 命令行导入 使用MySQL命令行工具mysql是导入数据的…

有关【指针运算】的经典笔试题

题目1&#xff1a; #include <stdio.h>int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } //程序的输出结果是什么&#xff1f; 2 5解析&#xff1a; 代码的内存布局如图&#xff1a…

第二十五章 Web Gateway 管理页面概述 - 可用选项

文章目录 第二十五章 Web Gateway 管理页面概述 - 可用选项Localization 第二十五章 Web Gateway 管理页面概述 - 可用选项 下表显示了 Web Gateway 管理主菜单页面上的可用选项。 Menu ItemActionAbout Web Gateway显示有关 Web 网关的信息&#xff0c;包括 IRIS 发行版的版…

Nutanix 国产化替代|一文了解 SmartX 超融合替代可行性与迁移方案

2022 年 8 月 19 日&#xff0c;Nutanix&#xff08;路坦力&#xff09;宣布中国市场自 2023 财年起将转型为合作伙伴销售主导模式&#xff0c;引起了广泛关注&#xff1b;同时结合当前 IT 基础架构的国产化趋势背景&#xff0c;不少正在使用和考虑使用 Nutanix 产品的企业开始…

编译原理-实现LR语法分析器——沐雨先生

实验任务&#xff1a; 实现LR语法分析器 实验要求&#xff1a; 根据编译原理理论课教材中例3.22给出的算术表达式文法以及该文法的LR分析表&#xff0c;用C语言编写接受算术表达式为输入的语法分析器&#xff0c;以控制台&#xff08;或文本文件&#xff0c;也可以结合词法分…

C语言种sizeof()和strlen的区别

sizeof 是 C 语言内置的操作符关键字&#xff0c;而 strlen 是 C 语言库函数&#xff1b; sizeof 仅用于计算数据类型的大小或者变量的大小&#xff0c;而 strlen 只能以结尾为 \0 的字符串作为参数&#xff1b; 编译器在编译时就计算出了 sizeof 的结果&#xff0c;而 strlen …

Spring Security的开发

文章目录 1,介绍2, 核心流程3, 核心原理3.1 过滤器链机制3.2 主体3.3 认证3.4 授权3.5 流程图4, 核心对象4.1 UserDetailsService 接口4.2 PasswordEncoder 接口4.3 hasAuthority方法4.4 hasAnyAuthority方法4.5 hasRole方法4.5 hasAnyRole方法5, 核心注解5.1 @PreAuthorize5.1…

【Linux】系统开启和关闭过程

Linux 系统启动过程 BIOS 自检&#xff1a;在计算机开机时&#xff0c;BIOS 会进行自检&#xff0c;检查硬件设备是否正常。 加载引导程序&#xff1a;BIOS 自检完成后&#xff0c;会加载引导程序&#xff0c;如 GRUB、LILO 等。引导程序会加载内核和初始化 RAM 磁盘&#xff…

想入门Web测试,看这篇文章!

今天要谈的是很多软件测试工程师都需要面对的——Web测试 不管你是处在二十不惑的青春有你阶段还是三十而已的乘风破浪阶段我们都需要面对“Web测试”。 Web测试其实有以下几个方面&#xff1a; 1、页面测试 大多数的Web网站的网页都是html语言编写的&#xff0c;测试工程师…