PP-YOLOE 论文学习

1. 解决了什么问题?

单阶段目标检测器能很好地平衡速度和精度,YOLO 系列是其中的代表。YOLOX 采用了 anchor-free 范式,加入了动态标签分配以提升检测表现,在 Tesla V100 上取得了 50.1 mAP,速度是 68.9 FPS。本文提出的 PP-YOLOE 为了适配各种硬件平台,没有使用可变形卷积、Matrix NMS 等操作。如下图,PP-YOLOE 在速度和精度方面领先于 YOLOX 和 YOLOv5。
在这里插入图片描述

2. 提出了什么方法?

2.1 PP-YOLOv2

基线模型使用的是 PP-YOLOv2,

  • 主干网络是 ResNet50-vd(使用可变形卷积);
  • neck 是带 SPP 层和 DropBlock 的 PAN;
  • head 是一个轻量级的 IoU-aware head;
  • 在主干网络中使用 ReLU,而在 neck 里面替换为 mish 激活函数;
  • 对于每个 ground-truth 目标,只分配一个 anchor box;
  • 除了分类损失、回归损失及 objectness 损失,也使用了 IoU loss 和 IoU-aware loss 来提升表现。

2.2 PP-YOLOE 改进

Anchor-free

Anchor 机制会引入不少的超参数,宽高比、个数等人为设计使其对其它数据集的泛化性不好。作者参照 FCOS,在每个像素点只放置一个 anchor point,为将 ground-truths 分配到相应的特征图上,设置三个检测 heads 的上界和下界。然后计算出边框的中心点,选择最接近该中心点的像素作为正样本。参照 YOLO 系列,预测一个 4D 向量 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)完成回归。如下表,该改进能提高计算速度,但会牺牲 0.3 AP。下表中,作者在 COCO-val 上做的消融实验,使用 640 × 640 640\times 640 640×640的输入分辨率,精度是 FP32,在 Tesla-V100 上做的测试,没加后处理。
在这里插入图片描述

Backbone and Neck

SOTA 网络普遍采用了残差连接、密集连接等技术。残差连接缓解了梯度消失问题,可以看作为模型集成方法。密集连接通过多样的感受野来聚合中间特征,在目标检测任务上效果不错。CSPNet 使用 cross stage 密集连接,降低了计算量,却没有牺牲精度。该方法在 YOLOX、YOLOv5、VoVNet、TreeNet 等目标检测和实例分割任务上都有不错的表现。本文将残差连接和密集连接结合,提出了 RepResBlock,应用在主干网络和 neck 里面。

训练时,RepResBlock 结构如下图(b) 所示,推理时如下图© 所示。推理时,将 RepResBlock 重参数化为一个 RepVGG 风格的、ResNet-34 的残差模块,如下图(d) 所示。使用该 RepResBlock 构建主干网络和 neck。与 ResNet 相似,CSPRepResNet 包括一个主干和三个卷积层,后面是由 RepResBlock 组成的四个 stages。在每个 stage,cross stage partial connections 避免了 3 × 3 3\times 3 3×3卷积造成的大量的参数及计算开支。在主干网络中,作者使用了 ESE (Effective Squeeze and Extraction) 来施加通道注意力。作者使用了 RepResBlock 和 CSPRepResStage 来构建 neck,但是移除了 RepResBlock 和 ESE 层的短路连接。
在这里插入图片描述

作者使用了一个宽度乘数 α \alpha α和深度乘数 β \beta β来缩放主干网络和 neck。因此,我们可以得到一系列不同参数量和计算量的检测网络。主干网络的宽度设定范围是 [ 64 , 128 , 256 , 512 , 1024 ] \left[64,128,256,512,1024\right] [64,128,256,512,1024],深度设定范围是 [ 3 , 6 , 6 , 3 ] \left[3,6,6,3\right] [3,6,6,3]。Neck 的宽度设定范围为 [ 192 , 384 , 768 ] \left[192,384,768\right] [192,384,768],深度设定为 3。下表展示了不同模型的 α , β \alpha,\beta α,β取值。这些改进能带来 0.7 % 0.7\% 0.7% AP 的提升。
在这里插入图片描述

Task Alignment Learning

为了进一步提升准确率,作者使用了标签分配策略。YOLOX 使用 SimOTA 标签分配的策略。TOOD 使用 TAL 进一步解决了分类和定位错位的问题,包括一个动态标签分配和一个任务对齐损失。动态标签分配的意思就是随着检测结果和损失而变化。根据预测结果,它为每个 ground-truth 动态分配若干个 positive anchors。通过对齐这俩任务,TAL 取得了最高的分类得分和最准确的边框。

对于任务对齐损失,TOOD 使用了归一化的 t t t,即 t ^ \hat{t} t^代替损失中的目标值。归一化:对于每个实例, t ^ \hat{t} t^的最大值等于各 anchor 的 IoU 的最大值。分类损失使用了 BCE:
L c l s − p o s = ∑ i = 1 N p o s B C E ( p i , t ^ i ) L_{cls-pos}=\sum_{i=1}^{N_{pos}}BCE(p_i,\hat{t}_i) Lclspos=i=1NposBCE(pi,t^i)

作者研究了不同标签分配策略的表现,使用的模型就是上述优化后的模型,主干网络是 CSPRepResNet。在 COCO train2017 上训练了 36 个 epochs,在 COCO val 上验证。如下表,TAL 的表现最好。
在这里插入图片描述

Efficient Task-aligned Head

在目标检测中,分类和定位任务之间会有冲突。YOLOX 将 head 进行了解耦,以提升准确率。但是解耦后的 head 可能造成分类和定位任务相互独立,缺乏具体任务的学习。于是作者参照 TOOD 改进了 head,提出了 ET-head。如下图,作者使用 ESE 替换了 TOOD 的层注意力,将分类分支的对齐简化为短路连接,将回归分支的对齐替换为 DFL 层。通过这些变化,ET-head 在 V100 上提速了 0.9ms。
在这里插入图片描述

对于分类和定位任务,作者分别选用了 Varifocal Loss 和 DFL。Varifocal Loss 与 QFL 不同,它使用目标得分加权正样本的损失,这样 IoU 高的正样本对损失的贡献就更大,在训练时模型就更能关注于高质量样本。Varifocal Loss 和 QFL 都使用了 IACS 作为目标来训练,IACS 是分类得分和定位质量预测的联合表征,从而在训练和推理时都能保持一致。

对于 DFL,为了解决边框表征不灵活的问题,GFLv1 提出了使用 general distribution 预测边框。本文使用的损失函数如下:
L o s s = α ⋅ l o s s V F L + β ⋅ l o s s G I o U + γ ⋅ l o s s D F L ∑ i N p o s t ^ Loss=\frac{\alpha\cdot loss_{VFL}+\beta\cdot loss_{GIoU}+\gamma\cdot loss_{DFL}}{\sum_i^{N_{pos}}\hat{t}} Loss=iNpost^αlossVFL+βlossGIoU+γlossDFL

其中 t ^ \hat{t} t^是归一化的目标得分,如下表所示,ET-head 能提升约 0.5 % 0.5\% 0.5%AP。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

热门洗地机评测|追觅VS希亦VS米博洗地机,哪款更值得入手?

智能科技的发展越来越方便人们的生活,特别是现今人们生活水平不断提高,房子越住越大,需要顾及的房屋卫生打扫面积也越来越广。而单是通过人工去拖扫不仅很累还很浪费时间。于是洗地机的出现让很多深陷家务劳动的朋友得以解脱。因为很多洗地机…

Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

如何构建适合自己的DevOps软件测试改进方案

​目录 DevOps成熟度模型分析 构建适合企业自身性能的测试过程改进框架 资料获取方法 根据2022年的DevOps全球调查报告显示,主流软件企业采用或部分采用DevOps且已获得良好成效的占比已达70%,DevOps俨然成为当下软件开发研究的重要方向。 测试作为软…

速度优化:重新认识速度优化

作者:helson赵子健 应用的速度优化是我们使用最频繁,也是应用最重要的优化之一,它包括启动速度优化,页面打开速度优化,功能或业务执行速度优化等等,能够直接提升应用的用户体验。因此,只要是 An…

vue脚手架文件说明

vue脚手架文件说明 1、文件介绍2、脚手架里面主要文件和作用 1、文件介绍 2、脚手架里面主要文件和作用 node_modules 都是下载的第三方包public/index.html 浏览器运行的网页src/main.js webpack打包的入口src/APP.vue Vue页面入口package.json 依赖包列表文件

MFC CList 类的使用

MFC提供CList 类; 类CList支持可按顺序或按值访问的非唯一对象的有序列表;CList 列表与双链接列表行为相似; 类型POSITION的变量是列表的关键字;可使用POSITION变量作为循环因子来顺序遍历列表,作为书签来保存位置&am…

PDF文件转换成word软件有哪些?分享两个文件格式转换软件

在日常办公中,我们经常使用各种办公软件,其中PDF和Word是最常见的两种格式。相较于Word文件,PDF文件具有更强的兼容性和安全性,因此我们通常会选择以PDF格式分享文件。然而,如果我们需要提取PDF文件中的部分内容&#…

Flask 创建文件目录,删除文件目录

项目结构 app.py from flask import Flask, render_template, request, redirect, url_for import osapp Flask(__name__) BASE_DIR os.path.abspath(os.path.dirname(__file__)) FILE_DIR os.path.join(BASE_DIR, testfile)app.route(/, methods[GET, POST]) def index():…

Elasticsearch

概念 Elasticsearch是Java语言开发的分布式的查询系统,它的每一个节点(每一个运行实例)都是一个基于Lucene的查询引擎,把Lucene用Netty封装成服务。 Lucene使用的是倒排索引的结构,如下图: Elasticsearc…

8-js高级-6(promise)

一 Promise 的理解和使用 1 Promise 是什么? 理解 抽象表达: Promise 是一门新的技术(ES6 规范)Promise 是 JS 中进行异步编程的新解决方案 (备注:旧方案是单纯使用回调函数) 具体表达: 从语法上来说: Promise 是一个构造函数从功能上来说: promise 对象用来…

239. 滑动窗口最大值

力扣题目链接 (opens new window) 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 进阶: 你能在线性时间复杂度内解…

根据UIL下载图片/视频、根据URL自动下载图片/视频、GUI自动下载想要的图片

1,根据UIL下载图片/视频 def downForInterface(file_path):count 1value_rows []with open(file_path, encodingUTF-8) as file:f_csv csv.reader(file)for r in f_csv:value_rows.append(r)for file_path in value_rows:cunmulu if . in file_path[0]:print(cu…

[VUE]Element_UI 实现TreeSelect 树形选择器

文章目录 前言1、安装2、引用3、使用 前言 最近在做一个人员管理系统,在增改用户信息时,可能会设置用户所在的部门,因为部门是多级的,于是想到用Element_UI的TreeSelect组件实现 效果: 1、安装 npm install --save…

【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(持久化功能分析)

探究Redis服务启动的过程机制的技术原理和流程分析的指南(持久化功能分析) Redis提供的持久化机制Redis持久化如何工作Redis持久化的故障分析持久化频率操作分析数据库多久调用一次write,将数据写入内核缓冲区?内核多久将系统缓冲…

网络安全(黑客)学习笔记

1.什么是网络安全? 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有…

微服务安全简介

​由于其可扩展性、灵活性和敏捷性,微服务架构已经变得越来越受欢迎。然而,随着这种架构的分布和复杂性增加,确保强大的安全措施变得至关重要。微服务的安全性超越了传统的方法,需要采用全面的策略来保护免受不断演变的威胁和漏洞…

Nginx与Tomcat服务器的区别以及个人网站部署方案

- Nginx和Tomcat作用一样吗? 答:不完全相同。Nginx 和 Tomcat 都可以作为 Web 服务器,但它们的作用略有不同。 Nginx 是一个高性能的 Web 服务器和反向代理服务器。它的主要作用是提供静态文件服务、反向代理、负载均衡、缓存、SSL 加密等功…

从新手到大师:优雅的Vim熟练之旅(万文详解)

从新手到大师:优雅的Vim熟练之旅 博主简介一、前言1.1、Vim编辑器的重要性和流行性1.2、目标 二、Vim简介2.1、什么是Vim2.2、历史和背景简介2.3、Vim的优势和适用场景 三、安装和设置Vim3.1、下载和安装Vim编辑器3.2、基本配置:.vimrc文件的重要性和常用…

解决使用@Field注解配置分词器失效问题(Spring Data Elasticsearch)

问题复现:插入数据时,实体类配置的Field注解没有生效 实体类: package cn.aopmin.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.Id; import…

网工玩虚拟机,别再只会用VMware了

中午好,我的网工朋友。 说起虚拟机,大家都不陌生吧。 虽然容器技术现在很火爆,但虚拟机还是业内网红。 毕竟使用场景非常多,比如说搭建测试环境、在Windows系统中安装Linux或在Mac机器上运行Windows系统…… 甚至还可以用来进…