目标检测——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算法解读
  • YOLOR算法解读

文章目录

  • 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.rhkb.cn/news/283291.html

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

相关文章

二、阅读器的开发(初始)-- 2、阅读器开发

1、epubjs核心工作原理 1.1 epubjs的核心工作原理解析 epub电子书,会通过epubjs去实例化一个Book对象,Book对象会对电子书进行解析。Book对象可以通过renderTo方法去生成一个Rendition对象,Rendition主要负责电子书的渲染,通过R…

java网络原理(三)----三次握手四次挥手

三次握手 三次握手是建立连接的过程,四次挥手是断开连接的过程,三次握手发生在socket.accept()之前。 客户端和服务器尝试建立连接的时候服务器就会和客户端进行一系列的数据交换称为握手,这个过程建立完了后,连接就好了。 A和B…

python的BBS论坛系统flask-django-nodejs-php

为了更好地发挥本系统的技术优势,根据BBS论坛系统的需求,本文尝试以B/S架构设计模式中的django/flask框架,python语言为基础,通过必要的编码处理、BBS论坛系统整体框架、功能服务多样化和有效性的高级经验和技术实现方法&#xff…

数据挖掘与分析学习笔记

一、Numpy NumPy(Numerical Python)是一种开源的Python库,专注于数值计算和处理多维数组。它是Python数据科学和机器学习生态系统的基础工具包之一,因为它高效地实现了向量化计算,并提供了对大型多维数组和矩阵的支持…

2024年企业级通用人工智能的关键技术趋势

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

爬虫(七)

1.批量爬取知网数据 lxml:是 Python 的一个功能强大且易用的 XML 和 HTML 处理库。它提供了简单又轻巧的 API,使得解析、构建和操作 XML 和 HTML 文档变得非常方便。lxml 库通常用于处理 XML 和 HTML 文档,例如解析网页、处理配置文件等。openpyxl:是 Python 中用于操作 Ex…

二、Kubernetes(k8s)中部署项目wordpress(php博客项目,数据库mysql)

前期准备 1、关机顺序 2、开机顺序 (1)、k8s-ha1、k8s-ha2 (2)、master01、master02、master03 (3)、node01、node02 一、集群服务对外提供访问,需要通过Ingress代理发布域名 mast01上传 ingress-nginx.yaml node01、node02 上传 ingress-nginx.tar 、kube-webh…

五、C#归并排序算法

简介 归并排序是一种常见的排序算法,它采用分治法的思想,在排序过程中不断将待排序序列分割成更小的子序列,直到每个子序列中只剩下一个元素,然后将这些子序列两两合并排序,最终得到一个有序的序列。 归并排序实现原…

Android Studio实现内容丰富的安卓校园二手交易平台(带聊天功能)

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号083 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看二手商品列表 3.发布二手商品 4.商品详情 5.聊天功能…

【超全详解】Maven工程配置与常见问题解决指南

Maven工程 目录 Maven工程一、如何检查Maven工程是否配置正确?1、检查路径2、检查基本配置3、其他配置 二、Maven的基本操作基本操作install和package的区别 三、获取别人的Maven工程之后如何修改?四、如何正确写好配置文件?1.寻找配置资源2.…

第六十一回 放冷箭燕青救主 劫法场石秀跳楼-编译安装飞桨paddlepaddle@openKylin+RISCV

卢俊义在水里被张顺抓住,用轿子抬到了梁山。宋江等人下马跪在地上迎接,请他坐第一把交椅。卢俊义宁死不从,大家只好说留他在山寨几天,先让李固带着马车货物回去。吴用对李固说,你的主人已经答应坐第二把交椅了&#xf…

基于python+vue分类信息服务平台移动端的设计与实现flask-django-php-nodejs

分类信息服务平台是在Android操作系统下的应用平台。为防止出现兼容性及稳定性问题,框架选择的是django,Android与后台服务端之间的数据存储主要通过MySQL。用户在使用应用时产生的数据通过 python等语言传递给数据库。通过此方式促进分类信息服务平台信…

51单片机中断信号的种类及应用场景

在嵌入式系统中,中断是一种重要的事件处理机制,它可以在程序执行的任何时候暂停当前任务,转而执行与之相关的特殊任务或事件。51单片机作为一种常见的微控制器,其中断功能在各种应用中起着关键作用。然而,对于初学者和…

【理解机器学习算法】之分类问题的模型评估(ROC-AUC)

ROC曲线(接收者操作特性曲线)和AUC(曲线下面积)是在不同阈值设置下,用于分类问题的性能度量工具。下面是它们所代表的含义以及使用方法: ROC曲线 代表含义:ROC曲线是一个图形化的表示&#xf…

Unity---Lua语言

Lua Binaries Download 13.2 逻辑热更新——Lua1-3_哔哩哔哩_bilibili nil表示空 只有false和nil为false,其他值都为true ..连接两个字符串

浙江IGM机器人K5控制柜维修需要注意哪些问题?

IGM机器人K5控制柜常见故障及维修方法 1、电源故障: 表现为IGM机器人K5控制柜不能开机或突然断电。 检查:检查电源线是否连接良好,有无破损;检查电源模块的输出电压是否正常; 维修方法:如电源模块损坏&…

硬核分享|AI语音识别转文字与自动生成字幕

硬核分享|AI语音识别转文字与自动生成字幕_哔哩哔哩_bilibili 在现代快节奏的生活中,语音转文字工具成为了我们工作和学习中的得力助手。它能够将我们说出的话语迅速转化为文字或者将语音视频自动生成字幕,提供便捷和高效。 语音转文字转字幕工具是一种…

docker学习笔记 三-----docker安装部署

我使用的部署环境是centos 7.9 1、安装依赖工具 yum install -y yum-utils device-mapper-persistent-data lvm2 安装完成如下图 2、添加docker的软件信息源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo url地址为如…

【ReactJS】使用GoJS实现自己的图表App

目录 1:用于绘制自定义图表的JavaScript库:用于绘制UML(或BPMN或ERD …)图表的JavaScript库:2:为什么选择GoJS?3:让我们使用现有的React应用程序:步骤1:步骤2:步骤3:步骤4:推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战1:…

IDEA上的Scala环境搭建

Scala环境搭建 一、搭建Scala开发环境 安装Scala编译器 安装scala-2.12.10.msi 检查scala安装情况 在dos窗口输入scala,检查是否能够进入编译器。进行简单的scala命令计算 在IDEA中进行scala编码 File - Settings - Plugins - MarketPlace中搜索scala插件 安…