目标检测——PP-YOLOv2算法解读

news2024/11/17 6:55:35

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-YOLOv2细节
  • 3、实验
    • 3.1 消融实验
    • 3.2 与其他检测算法比较
    • 3.3 不起作用的trick


PP-YOLOv2(2021.4.21)

论文:PP-YOLOv2: A Practical Object Detector
作者:Xin Huang, Xinxin Wang, Wenyu Lv, Xiaying Bai, Xiang Long, Kaipeng Deng, Qingqing Dang, Shumin Han, Qiwen Liu, Xiaoguang Hu, Dianhai Yu, Yanjun Ma, Osamu Yoshie
链接:https://arxiv.org/abs/2104.10419
代码:https://github.com/PaddlePaddle/PaddleDetection


1、算法概述

基于现有的改进trick,在保持推理时间基本不变的情况下,尽量提升PP-YOLO的mAP指标。通过结合多种有效的改进,作者将PP-YOLO在COCO2017test-dev数据集中的性能从45.9%mAP提高到49.5%mAP。PP-YOLOv2在640x640输入尺寸下运行速率为68.9FPS。如果将模型转换为TensorRT并且以FP16的推理精度在batchsize为1的情况下,推理速度可以提升至106.5FPS,远远超越了相同参数量下的YOLOv4-CSP和YOLOv5l。另外,如果用ResNet101作为PP-YOLOv2的主干网络,在COCO2017test-dev集上的mAP可达到50.3%mAP。和其他算法mAP及FPS指标对比如图:
在这里插入图片描述


2、PP-YOLOv2细节

论文通篇看下来改进的地方不多,都是借助现有trick在PP-YOLO基础上改,主要改的地方还是集中在Neck和head部分,直接看网络结构图:
在这里插入图片描述
改进的地方如下:

  • Path Aggregation Network: 直接翻译叫路径增强网络,用于加强不同层特征图进行融合。PP-YOLO中neck部分仅仅使用了FPN,特征融合还不够,现在增强特征金字塔融合的子网络有很多,比如:BiFPN,PAN,RFP等等;参考YOLOv4,PP-YOLOv2也在neck部分使用了PAN。
  • Mish Activation Function: YOLOv4和YOLOv5中都使用了Mish激活函数用于提升检测器的性能,但是它们是在主干网络中使用的。我们为了保持强大的主干预训练模型不变,所以只在neck部分使用mish激活函数。
  • Larger Input Size: 输入尺寸由608变到768,多尺度训练变换集为[320,352,384,…,704,736,768]
  • IoU Aware Branch: 改进IoU感知分支的损失计算方式,PP-YOLO是以软权重方式计算,这里改为以软标签形式计算损失:
    在这里插入图片描述
    其中t代表anchor和匹配到的gt框的IoU大小,p是IoU感知分支的预测输出,σ代表sigmoid激活函数。注意这里只有正样本的anchor才参与损失的计算。通过这个改进,IoU感知分支比上一个版本工作得更好。

3、实验

3.1 消融实验

同PP-YOLO一样,作者对如上改进实验做了消融实验以得到改进措施对应提升多少mAP,实验结果如下:
在这里插入图片描述
从表中可以看出,提升最大的还是从A->B,增加neck部分的特征融合及改进激活函数,直接提升2%mAP;虽然增加收入尺寸可以提升少许mAP,但这是以减少FPS为代价的;改进IoU感知分支在不影响推理速度的情况下也可以直接带来近1%mAP的提升。

3.2 与其他检测算法比较

PP-YOLOv2与现如今最新检测算法在COCO数据集上的mAP比较如下表所示。
在这里插入图片描述
从表中可以看出,PP-YOLOv2和YOLOv4、YOLOv5比较,相近FPS情况下,mAP都好于后者。

3.3 不起作用的trick

  • Cosine Learning Rate Decay: 由于余弦学习率衰减策略对初始学习率、预热步数和结束学习率等超参数敏感,所以作者没有采用这种方式。
  • Backbone Parameter Freezing: 在对下游任务的ImageNet预训练参数进行微调时,通常在前两个阶段冻结参数。作者在COCO minitrain数据集上确实提升了1%mAP,但在COCOtrain2017上下降了0.8%mAP,所以作者最终没有冻结训练backbone参数。
  • SiLU激活函数: 在neck部分采用SiLU激活函数会不如Mish激活函数。

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

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

相关文章

【算法与数据结构】 C语言实现单链表队列详解

文章目录 📝队列🌠 数据结构设计🌉初始化队列函数 🌠销毁队列函数🌉入队函数 🌠出队函数🌉获取队首元素函数 🌠获取队尾元素函数🌉 判断队列是否为空函数🌉获…

学习ReentrantLock 原理

ReentrantLock 与 synchronized 锁的实现:synchronized 是 JVM 实现的,而 ReentrantLock 是 JDK 实现性能:新版本 Java 对 synchronized 进行了很多优化,synchronized 与 ReentrantLock 大致相同使用:ReentrantLock 需…

tauri应用实现一键快速更新版本

tauri应用实现一键快速更新版本 创建一个项目 pnpm create tauri-app根据配置选择就可以 pnpm tauri dev启动项目 ##更新配置 打包配置在src-tauri/tauri.conf.json 修改打包命令 "bundle": {"active": true,"targets": "all",&qu…

石子合并与果子合并:区间动态规划和贪心

果子合并是如何将一堆果子合并起来所消耗体力最少,石子合并也是将一堆石子合并起来质量最小,但不同的是 石子合并只能相邻的两个合并 。本篇通过讲解这两个相似例题,来学习区间dp与贪心。 目录 石子合并: 题目: 思路…

Dr4g0n

信息收集 # nmap -sn 192.168.56.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-03-04 08:52 CST Nmap scan report for 192.168.56.2 Host is up (0.00012s latency). MAC Address: 00:50:56:FE:B1:6F (VMware) Nmap scan report …

【Redis】Redisson实现分布式锁

Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。 官网地址 GitHub地址 Redisson入门 1.引…

docker安装ES7.1.1(单机版)+ik分词器+es-head可视化

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Elasticsearch 是一…

海外媒体发稿:7款爆款标题生成器解析-华媒舍

科普文章是将科学知识普及给大众的一种方式,而一个引人入胜的标题往往是吸引读者的第一步。在科普领域中,标题的吸引力至关重要。以下将介绍7款风靡科普界的爆款标题生成器,帮助你创作出引人入胜的科普文章。 1. 情感引爆 情感是人类行为中的…

卷积篇 | YOLOv8改进之主干网络中引入可变形卷积DConv

前言:Hello大家好,我是小哥谈。可变形卷积模块是一种改进的卷积操作,它可以更好地适应物体的形状和尺寸,提高模型的鲁棒性。可变形卷积模块的实现方式是在标准卷积操作中增加一个偏移量offset,使卷积核能够在训练过程中扩展到更大的范围,从而实现对尺度、长宽比和旋转等各…

QML 布局管理器之GridLayout 项目demo

一.气体控制效果图 二.界面布局代码实现 //DottedLline.qml 虚线绘制 import QtQuick 2.12 import QtQuick.Shapes 1.12Shape {id:canvaswidth: parent.widthheight: parent.heightShapePath{strokeStyle: ShapePath.DashLinestartX: 8startY: 10dashPattern: [1, 3]PathLine{…

多线程和线程同步

文章目录 进程和线程线程的操作线程创建线程退出线程回收线程分离线程取消和ID比较 线程同步互斥锁死锁读写锁条件变量信号量 进程和线程 线程是轻量级的进程,在Linux环境下线程的本质还是进程。 在计算机上运行的程序是一组指令及指令参数的组合,指令按…

Web前端-JS

JavaScript,简称js:负责网页的行为(交互效果)。是一门跨平台,面向对象的脚本语言(编写出来的语言不需要编译,通过浏览器的解释就可以运行) JS引入方式 1.内嵌样式 这样打开页面就会…

毕业答辩PPT模板涵盖多种风格,包括母版的设计及主题色的设计

毕业答辩PPT模板涵盖多种风格,包括母版的设计及主题色的设计 前言一两个页面的展示研究内容主题概述主题内容一:主要面向三点研究内容主题内容二:主要面向两点研究内容主题内容三:主要面向包含应用开发的研究 前言 之前做了有关开…

Oracle Data Guard部署

Oracle的主备DG搭建 1. 修改主机名,同步时间 主库IP:192.168.100.137 备库IP:192.168.100.138配置主机名(主库) Hostname zygjpdb vim /etc/hosts 192.168.100.137 zygjpdb 192.168.100.138 zygjsdbvim /etc/sysconfig/network HOSTNAMEzygjpdb ------…

电脑如何关闭自启动应用?cmd一招解决问题

很多小伙伴说电脑刚开机就卡的和定格动画似的,cmd一招解决问题: CtrlR打开cmd,输入:msconfig 进入到这个界面: 点击启动: 打开任务管理器,禁用不要的自启动应用就ok了

机器学习算法那些事 | 使用Transformer模型进行时间序列预测实战

本文来源公众号“机器学习算法那些事”,仅用于学术分享,侵权删,干货满满。 原文链接:使用Transformer模型进行时间序列预测实战 时间序列预测是一个经久不衰的主题,受自然语言处理领域的成功启发,transfo…

C语言分支和循环

目录 一.分支 一.if 二.if else 三.if else嵌套 四.else if 五.switch语句 二.循环 一.while (do while)break : 二.for函数: 三.goto语句: 四.猜数字: 一.分支 一.if if要条件为真才执行为假不执行而且if只能执行后面第一条如果要执行多条就…

Java基础之关键字instanceof(七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【C语言】linux内核pci_iomap

一、pci_iomap /** pci_iomap 是一个用于映射 PCI 设备的 BAR(Base Address Register,基地址寄存器)的函数。* 此函数返回指向内存映射 IO 的指针,用于直接访问 PCI 设备的内存或 I/O 空间。* * 参数:* dev - 指向pci_dev结构的指…

Android Jetpack Compose基础之组件的帧渲染

Android Jetpack Compose基础之组件的帧渲染 组合布局LayoutModifier示例 LayoutCompsable示例 绘制CanvasDrawModifierDrawModifier-drawWithContent示例 DrawModifier-drawBehind源码示例 DrawModifier-drawWithCache源码示例 拓展Modifier.graphicsLayer Android View 系统&…