PP-YOLOv2: A Practical Object Detector(2021.4)

news2024/11/18 18:27:18


文章目录

  • Abstract
  • 1. Introduction
  • 2. Revisit PP-YOLO
    • Pre-Processing
    • Baseline Model
    • Training Schedule
  • 3. Selection of Refinements
      • Path Aggregation Network
    • Mish Activation Function
    • Larger Input Size
    • IoU Aware Branch
  • 4. Experiments
  • 6. Conclusions

原文地址
源代码

Abstract

对于实际使用的目标检测器来说,有效和高效是必不可少的。为了满足这两个问题,我们综合评估了现有的改进集合,以提高PP-YOLO的性能,同时几乎保持推断时间不变。本文将分析一系列改进,并通过增量烧蚀研究来实证评估它们对最终模型性能的影响,我们尝试过但没有成功的东西也会被讨论。
通过结合多种有效的改进,我们将PP-YOLO在COCO2017测试开发中的性能从45.9% mAP提高到49.5% mAP。由于取得了显著的性能提升,我们提出了PP-YOLOv2。在速度方面,PP-YOLOv2在640x640输入尺寸下运行68.9FPS。采用TensorRT、FP16-精度和batchsize=1的桨叶推理引擎进一步提高了pp - yolov2的推理速度,达到了106.5 FPS。这样的性能超过了具有大致相同参数数量的现有目标检测器(即YOLOv4-CSP, YOLOv5l)。此外,基于ResNet101的PP-YOLOv2在COCO2017测试开发上实现了50.3%的mAP

1. Introduction

近年来,随着深度卷积神经网络(cnn)的兴起,目标检测器的性能得到了迅速提高,YOLOv3[20]仍然是工业中应用最广泛的检测器之一,YOLOv3的精度与两阶段目标探测器存在较大差距。因此,如何在保持推理速度的同时提高YOLOv3的有效性是实际应用中必不可少的问题

为了同时满足这两个问题,我们增加了一堆改进,几乎不增加推断时间,以提高PP-YOLO[16]的整体性能

实际上,这篇文章更像是一篇TECH REPORT,它告诉你如何一步一步地构建PP-YOLOv2
我们在有效性(49.5% mAP)和效率(69 FPS)之间实现了更好的平衡,超过了现有的具有大致相同参数数量的鲁棒检测器,如YOLOv4-CSP[26]和yolov5。希望我们构建PP-YOLOv2的经验可以帮助开发人员和研究人员在实际应用中实现目标检测器时进行更深入的思考

2. Revisit PP-YOLO

Pre-Processing

使用从Beta(α,β)分布中采样的权值来应用Mixup Training[27],其中α = 1.5,β = 1.5。然后,RandomColorDistortion, RandomExpand, RandCrop和RandomFlip逐个应用,概率为0.5。接下来,分别减去0.485、0.456、0.406,除以0.229、0.224、0.225,对RGB通道进行归一化。最后,从中均匀抽取输入大小 [320, 352, 384, 416, 448, 480, 512, 544, 576,608]

Baseline Model

我们的基准模型是PP-YOLO,它是YOLOv3的增强版本。具体来说,它首先将主干替换为ResNet50-vd[9]。之后,总共有10个技巧可以提高YOLOv3的性能几乎没有损失效率,如变形Conv [5], SSLD[4],协调Conv [12], Drop- Block [6], SPP[7]等。本文介绍了PP-YOLO的体系结构

Training Schedule

在COCO train2017上,使用随机梯度下降法(SGD)对网络进行500K次迭代训练,其中96张图像分布在8个gpu上。在4K迭代中,学习率从0线性增加到0.005,在迭代400K和450K时分别除以10。权重衰减设为0.0005,动量设为0.9。采用梯度裁剪来稳定训练过程

3. Selection of Refinements

Path Aggregation Network

在不同尺度上检测目标是目标检测的一个基本挑战。neck用于在所有尺度上构建高级语义特征图。在PP-YOLO中,采用FPN组成自下而上的路径,最近,人们提出了几种FPN变体来增强金字塔表示的能力。如:BiFPN[24]、PAN[14]、RFP[19]等。我们遵循PAN的设计来聚合自顶向下的信息。PAN的详细结构如图2所示

Mish Activation Function

Mish激活函数[18]在许多实际的探测器中被证明是有效的,如YOLOv4和YOLOv5。它们在骨干中采用mish激活功能。然而,我们更喜欢使用预训练的参数,因为我们有一个强大的模型,在ImageNet上达到82.4%的top-1准确率。为了保持主干不变,我们在检测颈部使用mish激活函数代替主干

Larger Input Size

增加输入大小可以扩大对象的面积。这样,小尺度物体的信息就比以前更容易保存。因此,性能将得到提高。但是,更大的输入大小占用更多的内存。为了应用这个技巧,我们需要减小批大小。更具体地说,我们将批处理大小从每个GPU 24张图像减少到每个GPU 12张图像,并将最大输入大小从608张扩展到768张。输入大小从[320,352,384,416,448,480,512,544,576,608,640,672,704,736,768]中均匀抽取

IoU Aware Branch

在PP-YOLO中, IoU aware loss是以软权重形式计算的,这与初始意图不一致。因此,我们采用软标签格式。这是 IoU aware loss

式中t为锚点与其匹配的真地边界框之间的IoU,p为IoU感知支路的原始输出,σ(·)为s型激活函数。需要注意的是,只计算阳性样本的IoU感知损失。通过替换损失函数,IoU感知分支比以前工作得更好(yolov3和pp-yolo也没见IoU aware公式呀)

4. Experiments


我们比较了批大小为1,不使用tensorRT(不使用TRT)或使用tensorRT(使用TRT)的结果。用“+”标记的结果是来自相应官方代码库的更新结果。用“*”标记的结果在我们的环境中使用官方代码和模型进行测试。“†”表示结果包括边界框解码时间(1 ~ 2ms)

6. Conclusions

本文对PP- yolo进行了一些改进,形成了高性能的目标检测器PP- YOLOv2。PP-YOLOv2比其他著名的探测器(如YOLOv4和YOLOv5)在速度和精度之间取得了更好的平衡。在本文中,我们探索了一些技巧,并展示了如何将这些技巧结合在PP- YOLO检测器上,并证明了它们的有效性。此外,有了PaddlePaddle的官方支持,模型开发和生产部署之间的差距缩小了

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

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

相关文章

Flink(五)【DataStream 转换算子(上)】

前言 这节注定是一个大的章节,我预估一下得两三天,涉及到的一些东西不懂就重新学,比如 Lambda 表达式,我只知道 Scala 中很方便,但在 Java 中有点发怵了;一个接口能不能 new 来构造对象? 答案是可以的&…

解决 requests 库下载文件问题的技术解析

在一个使用requests库的conda食谱构建过程中,我们注意到存在一个文件下载问题。该文件是从https://dakota.sandia.gov/sites/default/files/distributions/public/dakota-6.5-public.src.tar.gz下载的。使用curl和urllib2库可以正确下载文件,但使用reque…

Find My平衡车|苹果Find My技术与平衡车结合,智能防丢,全球定位

随着人们环保意识的加强,电动车的数量与日俱增。与此同时,科学家经过潜心的研究,终于开发出新款两轮电动平衡车。两轮电动平衡车是一种新型的交通工具,它与电动自行车和摩托车车轮前后排列方式不同,而是采用两轮并排固…

「Verilog学习笔记」优先编码器Ⅰ

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 分析编码器的功能表: 当使能El1时,编码器工作:而当E10时,禁止编码器工作,此时不论8个输入端为何种状态&…

锐捷网络NBR700G 信息泄露漏洞复现 [附POC]

文章目录 锐捷网络NBR700G 信息泄露漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 锐捷网络NBR700G 信息泄露漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相关技术从事非…

CNVD-2021-27648:锐捷RG-UAC统一上网行为管理与审计系统信息泄露漏洞复现

文章目录 锐捷RG-UAC统一上网行为管理与审计系统信息泄露(CNVD-2021-27648)漏洞复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.复现 0x06 修复建议 锐捷RG-UAC统一上网行为管理与审计系统信息泄露(CNVD…

在Ubuntu系统上部署Inis博客,并使用内网穿透将博客网站发布到公共互联网上

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总…

vue实现类似c#一样,鼠标指到方法或者变量上,能显示自己备注的信息

之前从c#转vue的时候,就问同事,为啥我给刚写的方法备注,在其他地方调用的时候看不到备注信息,同事说不知道怎么才能做到。今天无意间看前端知识的时候发现了还有如下的方法: 如下,在变量之前增加多一个星号…

AMEYA360分析:蔡司工业CT中的自动缺陷检测

蔡司自动缺陷检测:适用于您的应用领域的AI软件 蔡司自动化缺陷检测机器学习软件将人工智能应用于3D CT和2D X射线系统,树立了新的标杆,可对缺陷或异常(不规则)进行检测、定位与分类,同时通过读取CT扫描和X射线结果对其进行详细分析…

2023美亚杯个人赛复盘(一)火眼+取证大师

第一次参加美亚杯,手忙脚乱,不过也学到了很多东西,接下来会分篇介绍writeup,感兴趣的小伙伴可以持续关注。 案件基本情况: (一)案情 2023月8月的一天,香港警方在调查一起网络诈骗案…

爆款元服务!教你如何设计高使用率卡片

元服务的概念相信大家已经在 HDC 2023 上有了很详细的了解,更轻便的开发方式,让开发者跃跃欲试。目前也已经有很多开发者开发出了一些爆款元服务,那么如何让你的元服务拥有更高的传播范围、更高的用户使用率和更多的用户触点呢?设…

java,springboot钉钉开发连接器,自定义连接器配合流程使用,流程加入连接器,连接器发送参数,然后你本地处理修改值,返回给流程

1.绘制连接器,注意出餐入参的格式, 2.绘制流程,绑定连接器,是提交后出发还是表单值变化后 3.编写本地接口(内网穿透),绑定连接器 钉钉开发连接器,自定义连接器配合流程使用&#x…

高防IP是什么?如何隐藏源站IP?如何进行防护?

高防IP是针对互联网服务器遭受大流量的DDoS攻击后导致服务不可用的情况下,推出的付费增值服务。用户在数据不转移的情况下,就可以通过配置高防IP , 将攻击流量引流到高防|P,确保源站的稳定可靠。高防IP采用的技术手段包括DDoS防护、WAF ( Web应用程序防火墙)等,它能够有效抵御来…

建筑楼宇智慧能源管理系统,轻松解决能源管理问题

随着科技的进步与人们节能减排意识的不断增强,建筑楼宇是当下节能减排的重要工具。通过能源管理平台解决能效管理、降低用能成本、一体化管控、精细化管理和服务提供有力支撑。 建筑楼宇智慧能源管理系统是一种利用先进手段,采用微服务架构,…

Python小白之环境安装

一、安装包 1、Python开发环境,下载地址: Welcome to Python.org 2、Python工具 Python是强依赖缩进的语言,Node pad等容易有缩进问题,还是使用IDE比较合适,推荐使用PythonCharm。 PythonCharm下载地址&#xff1a…

2023年好用的远程协同运维工具当属行云管家!

对于IT小伙伴而言,一款好用的远程协同运维工具是非常重要的,不仅可以提高工作效率,还能第一时间解决运维难题,所以好用的远程协同工具是非常必要的。这里就给大家推荐一款哦! 2023年好用的远程协同运维工具当属行云管…

免费内网穿透?让外网能访问到自己的接口springboot,暴露自己的接口给外网

内网穿透?让外网能访问到自己的接口java,暴露自己的接口给外网 内网穿透听着就很吊,不就是把没有备案的服务器暴露出去,给别人访问嘛。 自己免费使用测试的话。 下载一个Cpolar 然后注册一下,进来后,直接…

Express基本接口开发-入门学习与后续进阶

前提推荐 任何一个新的知识都是从文档看起,因此express官方文档示例有必要去学习一遍。 推荐看: 推荐入门指南-路由指南-中间件 看完这几个内容之后心里大概知道express有些什么东西了,然后现在就可以去练习了 注意:更多示例-代…

三菱PLC小项目系列—传送带多地控制

目录 一、项目描述 二、IO口分配 三、项目程序 四、总结 一、项目描述 化工厂中有传送带进行原料传送加工,当按下启动按钮SB1或者SB2,电机M1接通控制传送带运转,直至按下停止按钮SB3,电机停止并使传送带停止运行。 二、IO口分…