PP-YOLO论文阅读笔记

article/2025/9/24 12:37:23

PP-YOLO: An effective and efficient implementation of object detector
期刊: arXiv preprint年份:2020
主要内容列举:
① :实现一个有效性和效率相对平衡的对象检测器,可以直接应用于实际应用场景;
② ②:添加了一系列几乎不会增加推断时间的技巧,以提高模型的整体性能;
③:PP-YOLO可以在有效性(45.2%mAP)和效率(72.9 FPS)之间实现更好的平衡,超过现有的最先进探测器,如EfficientDet和 YOLOv4。
(一)数据方面
1.数据集
CoCo
(二)方法方面
1.创新工作
PP-YOLO 的目标是实现一个有效性和效率相对平衡的对象检测器,可以直接应用于实际应用场景,而不是提出一种新的检测模型。PP-YOLO主要尝试将现有的各种技巧结合起来,在保证速度几乎不变的情况下,尽量不增加模型参数和触发器的数量,以达到尽可能提高检测器精度的目的。通过结合多种技巧,PP-YOLO可以在有效性(45.2%mAP)和效率(72.9FPS)之间实现更好的平衡,超过现有的最先进探测器,如EfficientDet和 YOLOv4
PP-YOLO的重点是如何堆叠一些几乎不影响效率的有效技巧以获得更好的性能。这些技巧中的许多无法直接应用于YOLOv3的网络结构,因此需要进行小的修改。此外,在哪里添加技巧也需要仔细考虑和实验。它更像是一个配方,告诉你如何一步一步地构建一个更好的检测器。
2.模型结构
在这里插入图片描述

一个anchor-based的one-stage的检测器通常由backbone、neck(通常为特征金字塔网络(feature pyramid network,FPN))和用于对象分类和定位的head组成。它们也是大多数基于anchor-point的one-stage anchor-free检测器中的常见部件。PP-YOLO首先修改了YOLOv3的结构,并引入了一个改进版本,该版本取代了作为 baseline的ResNet50-vd-dcn的主干。
对于backbone,直接使用最常见的ResNet。对于数据扩充,直接使用了最基本的MixUp。一个原因是ResNet 的应用越来越广泛,使得各种深度学习框架针对ResNet系列进行了深度优化,在实际部署中会更加方便,在实际应用中会有更好的推理速度。另一个原因是主干网的更换和数据扩充是相对独立的因素,几乎与论文讨论的技巧无关。

  1. Backbone
    1)Backbone
    PP-YLO中用ResNet50-vd替换原来YOLOv3的主干DarkNet-53。因为直接用ResNet50-vd代替DarkNet-53会影响YOLOv3探测器的性能。因此,PP-YOLO用deformable convolutional layers替换ResNet50-vd中的一些卷积层。DCN (Deformable Convolutional Networks)的有效性已在许多检测模型中得到验证。DCN本身不会显著增加模型中的参数和FLOPs,但在实际应用中,过多的DCN层会大大增加传输时间。因此,为了平衡效率和有效性,PP-YOLO在最后阶段仅使用DCN替换3x3卷积层。PP-YOLO将这种改良后的backbone记为ResNet50-vd-dcn,第3、4和5阶段的输出表示为C、C和Cs。
    2)Detection Neck
    然后使用FPN构建特征金字塔,特征地图之间具有横向连接。特征图C3、C4、C5输入FPN模块。我们将金字塔级别1的输出特征映射表示为P,在实验中,1-3,4,5。
    3)Detection Head
    YOLOv3的Detection Head非常简单。它由两个卷积层组成。采用3×3卷积层和1×1卷积层进行最终预测。每个最终预测的输出通道为3(K+5),其中K为类数。每个最终预测图上的每个位置都与三个不同的anchor关联。对于每个anchor,前K个通道是K类概率的预测,
    剩下4个通道是边界框定位的预测,最后一个通道是预测的客观评分。对于分类和定位,相应地采用了交叉嫡损失和L1损失。
    4)Tricks
    (1) Larger Batch Size:使用较大的批量可以提高训练的稳定性并获得更好的结果。在 PP-YOLO里,将训练批大小从64更改为192,并相应地调整训练计划和学习速率。
    (2)EMA:在训练模型时,保持训练参数的移动平均值通常是有益的。使用平均参数的评估有时会产生比最终训练值更好的结果。指数移动平均(EMA)使用指数衰减计算训练参数的移动平均值。
    (3)DropBlock: DropBlock是结构化的 dropout 的一种形式,其中要素图的相邻区域中的单元一起被删除。与其他的文章不同,PP-YOLO只将 DropBlock应用到FPN中,因为实验发现在 backbone中添加 DropBlock 会导致性能下降。
    (4)loU Loss:边界框回归是目标检测的关键步骤。在YOLOv3中,采用Ll Loss进行边界盒回归。它不是根据mAP评估指标定制的, mAP评估指标强烈依赖于联合上的交集(IoU)。已提出loU损失和其他变化,如CloU损失和 GloU损失,可以解决这一问题。与YOLOv4不
    同的是,PP-YOLO不直接用loU Loss替换Ll Loss,而是添加另一个分支来计算loU Loss.实验发现各种loU Loss的改进结果是相似的,因此选择了最基本的loULoss。
    (5)loU Aware:在 YOLVO3中,将分类概率和目标分数作为最终的检测置信度,不考虑定位精度。为了解决这个问题,增加了一个loU预测分支来测量定位精度。在训练过程中,采用loU感知丢失来训练loU预测分支。在推理过程中,将预测的 IoU乘以分类概率和客观评分来计算最终检测置信度,这与定位精度更相关。然后将最终检测置信度用作后续NMS 的输入。 loU感知分支将增加额外的计算成本。但是,只添加了0.01%的参数和0.0001%的FLOPs,这几乎可以忽略。
    (6) Grid Sensitive:
    x=s·(g,+α·o(P,)-(a -1)/ 2)y=s -(g,+a -a(p,)-(a-1)/ 2)
    其中α为sigmoid 函数,g,和g,为整数,s为比例因子,x和y是边界框中心的坐标。其中α设置为1.05。这使得模型更容易预测精确位于栅格边界上的边界框中心。Grid Sensitive添加的FLOPs非常小,可以完全忽略。
    (7)Matrix NMS: Matrix NMS源于Soft-NMS,Soft-NMS 将其他检测分数衰减为其重叠的非单调递减函数。然而,这种过程与传统Greedy NMS一样是顺序的,不能并行实现。Matrix NMS从另一个角度观察此过程,并以并行方式实施。因此,Matrix NMS 比传统NMS 更快,不会带来任何效率损失。
    (8)CoordConv : CoordConv工作原理是通过使用额外的坐标通道,让 convolution访问自己的输入坐标。CoordConv允许网络学习完全translation invariance或不同程度的translation dependence。考虑到Coord-Conv将向卷积层添加两个输入通道,将添加一些参数和 FLOPs。
    为了尽可能地减少效率损失,PP-YOLO不改变 backbone中的卷积层,只使用CoordConv替换FPN中的1x1卷积层和检测头中的第一卷积层。
    (9)SPP:空间金字塔池〈Spatial Pyramid Pooling,SPP)将SPM集成到CNN 中,并使用最大池化操作而不是词袋操作。YOLOv4通过将最大池输出与内核大小kk
    接走己来来s用SPP模块,其中 k={1,5,9,13},步长等于1。在这种设计下,相对较大的k×k最大池化有效地增加了主干特征的接收视野。具体而言,SPP仅应用于顶部特征图。SPP本身不引入任何参数,但后续卷积层的输入通道数将增加。因此,引入了大约2%的额外参数和1%的额外FLOPs。
    (10) Better Pretrain Model:在 ImageNet 上使用分类精度更高的预训练模型可能会产生更好的检测性能。这里,PP-YOLO使用蒸馏后的ResNet50-vd模型作为预训练模型。这显然不会影响检测器的效率。
    结果方面:

在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/bBwK28J0.shtml

相关文章

【paddle】PP飞桨

PP飞桨AI Studio 项目:https://aistudio.baidu.com/aistudio/projectoverview/public 数据集:https://aistudio.baidu.com/aistudio/datasetoverview 课程:https://aistudio.baidu.com/aistudio/course 比赛:https://aistudio.ba…

PP-ShiTu: A Practical Lightweight Image Recognition System

最近看了一个新的分享,关于图像识别的,对于大规模图像搜索以及新物品频繁情况下表现良好。 论文: https://arxiv.org/abs/2111.00775项目: https://github.com/PaddlePaddle/PaddleClas Abstract 近年来,图像识别的…

SAP_PP模块流程

1、SAP_PP模块介绍 PP模块涉及到工程部、财务部、PC、MC、生产部这些业务部门;主要大块在于PMC和生产;是整个SAP的源头所在; 2、整体业务逻辑 工程部:维护物料主数据、收集业务视图、维护BOM、工艺路线、生产版本,这些数据维护…

PP模块学习总结

PP模块总览 生产业务主要包含三部分: 主数据管理(有效 、准确,用来确保查询速度)生产计划安排(满足销售、降低库存)生产制造执行 PP模块数据 定义:是企业运行基本数据,描述业务流…

PP-OCR

论文: PP-OCR: A Practical Ultra Lightweight OCR System Github:https://github.com/PaddlePaddle/PaddleOCR 百度开源的ocr检测识别系统,称为PP-OCR。PP-OCR的中文字符识别模型仅3.5M,支持识别6622个中文字符。英文字符识别模…

pp助手可以刷机吗android,如何使用PP助手进行刷机?

PP助手官方版是当前最适合的苹果助手,iPhone/iTouch/iPad通通完美支持,个性铃声自制,一键越狱插件安装、资料备份、SHSH管理等通通都具备,PP助手官方版汇集了很多大型热门游戏软件,统统一键即可简单下载!今天在这里小编…

pp助手可以刷机吗android,pp助手刷机 pp助手怎么刷机

小编今天带来pp助手刷机,pp助手怎么刷机的教程。想用pp助手刷机?要知道刷机有风险,刷机需谨慎。想清楚了,那么就进来看教程刷机吧。包教包会! 注意:刷机前一定要备份好自己的东西。 1.首先下载更新新版本pp…

pp-vehicle简介

简介 飞桨目标检测端到端开发套件PaddleDetection正式开源车辆分析工具PP-Vehicle!该工具主要包含:提供车牌识别、车辆属性分析(颜色、车型)、车流量统计以及违章检测四大功能,兼容图片、在线视频流、视频输入&#x…

PP-YOLO

PP-YOLOv2 目录 PP-YOLOv2的改进点 数据增强 : MixUp Backbone :换R50 Better Pre-Train dcn Neck : SPP CoordConv DropBlock PAN MISH Loss : IoU Loss IoU Aware Loss 其他 : Large Batch Size Grid…

PP-LiteSeg

简介 整体还是采用跳层连接结构,引入了统一注意力融合模块(空间和通道注意力机制)、金字塔模块来聚合上下文。 使用统一注意力模块来提高分割精度,通过融合解码器中的低级和高级特征来实现的,与之前的BiSeNetV2中的通道…

SPSS PP图和QQ图

P-P图和Q-Q图都是用来观察变量是否服从正太分布的。 选择菜单中的分析-描述统计-P-P图,则如下图 1变量选项栏:选择绘制pp图的变量,可多选 2检验分布选项栏:用于检测待检验分布的类型,如beta,卡方&#xff0…

PP图和QQ图以及它们意义

先说结论1: P-P图和Q-Q图的用途完全相同,只是检验方法存在差异。 如果两个分布相似,则该Q-Q图趋近于落在y=x线上。如果两分布线性相关,则点在Q-Q图上趋近于落在一条直线上,但不一定在y=x线上。 再说结论2:Q-Q图可以用来在分布的位置-尺度范畴上可视化的评估参数。 从定义…

正态性检验之QQ图与PP图

正态性检验方法有很多种,主要可以分为以下几类: 图示法统计方法正态概率图、频率直方图、PP图、QQ图偏度峰度检验、皮尔逊卡方检验、K-S检验、W检验、EP检验、秩和检验、游程检验等非参检验 按理说图示法应该是最简单的方法,但大多本科统计…

PP图,QQ 图,及 python 画图

统计学中有时会用到 PP 图 或 QQ 图,用来看样本数据是否服从某一特定分布。 若 PP 或 QQ 图中的点基本落在一条 45度 的线上,则说明服从特定分布。 一般的步骤为: 将样本数据从小到大排序,假设排序后的样本数据为 x 1 x_1 x1​…

pptp服务搭建

1 检查系统是否支持pptp cat /dev/ppp 如果输出 cat: /dev/ppp: No such device or address 则说明可以正常架设pptp服务 2 设置内核转发,开启路由转发 vi /etc/sysctl.conf 添加 net.ipv4.ip_forward1 通过下面命令查看 sysctl -p 3更新yum相关源 wget http…

VPN服务搭建流程记录

之前,一直有想法搭建一套属于自己的VPN服务,但是,一直苦于"拖延症"的困扰,没有真正实际去实践。最近,终于打破了这个困扰,所以,也希望记录一下整体的搭建流程,操作系统Cen…

Guava常用方法

目录 简介 Maven依赖 字符串检查工具 NULL值检查 先决条件检查 判断对象是否为null 操作集合 简介 Guava,中文是石榴的意思,Guava项目,是基于java的Google的开源的工具类库,包含了许多被Google的java项目广泛依赖的核心库&…

【guava】基础用法

依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>29.0-jre</version></dependency> 不可变集合与对象 优点&#xff1a;1、线程安全 2、可用作常熟 ImmutableXXX 创建方式&…

guacamole 源码_Guacamole学习笔记

1: 介绍: Guacamole可以同HTML5来代理远程桌面协议(如: VNC, RDP, Telnet, SSH) 官网: http://guac-dev.org/ 2: 架构: 架构图: image.png 架构解释: 用户通过浏览器连接到Guacamole的服务端, Guacamole通过JS写的客户端是为用户提供服务, 服务端和客户端的通信是基于HTTP的私有…

Guacamole 介绍以及架构

目前在从事一些虚拟化解决方案方面的工作&#xff0c;最近项目有需求&#xff0c;希望能在浏览器上远程操作虚拟机。 此时发现了Guacamole&#xff0c;一个提供远程桌面的解决方案的开源项目&#xff0c;通过浏览器就能操作虚拟机&#xff0c;适用于Chrome&#xff0c;Firefox&…