当前位置: 首页 > news >正文

YOLOX: Exceeding YOLO Series in 2021(2021.8)


文章目录

  • Abstract
  • Introduction
    • 介绍前人的工作
    • 提出问题
    • 解决
  • YOLOX
    • YOLOX-DarkNet53
    • Implementation details
    • YOLOv3 baseline
    • Decoupled head
    • Strong data augmentation
    • Anchor-free
    • Multi positives
    • SimOTA
    • End-to-end YOLO
    • Other Backbones
    • Modified CSPNet in YOLOv5
    • Tiny and Nano detectors
    • Model size and data augmentation
  • Comparison with the SOTA
  • 1st Place on Streaming Perception Challenge(WAD at CVPR 2021)
  • Conclusion

论文链接
源代码

Abstract

在本报告中,我们对YOLO系列进行了一些改进,形成了一种新的高性能探测器- YOLOX。我们将YOLO检测器转换为无锚点方式,并进行其他先进的检测技术,即解耦头和领先的标签分配策略SimOTA,以在大范围的模型中实现最先进的结果

对于只有0.91M参数和1.08G FLOPs的YOLO- Nano,我们在COCO上获得25.3%的AP,比NanoDet高出1.8%;对于工业中应用最广泛的探测器之一YOLOv3,我们将其在COCO上的AP提高到47.3%,比目前的最佳实践高出3.0% AP;对于参数数量与YOLOv4- CSP、YOLOv5-L大致相同的YOLOX-L,我们在Tesla V100上以68.9 FPS的速度在COCO上实现了50.0%的AP,比YOLOv5-L高出1.8% AP。此外,我们使用单个YOLOX-L模型获得了流感知挑战赛(CVPR 2021自动驾驶研讨会)的第一名

我们希望这份报告能在实际场景中为开发人员和研究人员提供有用的经验,同时我们也提供了支持ONNX、TensorRT、NCNN和Openvino的部署版本

Introduction

介绍前人的工作

随着目标检测技术的发展,YOLO系列一直在追求实时应用中速度和精度的最佳权衡,他们提取了当时可用的最先进的检测技术(例如,YOLOv2的锚点,YOLOv3的残差网络),并优化了最佳实践的实现

提出问题

尽管如此,在过去两年中,目标检测学术界的主要进展集中在无锚点检测器,先进标签分配策略和端到端(无nms)检测器,而这些还没有被整合到YOLO家族中,如yolo4和YOLOv5仍然是基于锚点的检测器,使用手工制定的训练分配规则

解决

这就是把我们带到这里的原因,通过经验丰富的优化,我们为YOLO系列提供这些最新的进步,我们选择YOLOv3作为起点(我们将YOLOv3- spp设置为默认的YOLOv3)

如图1所示,我们在640 × 640分辨率的COCO上将YOLOv3的AP提高到47.3% (YOLOv3 - darknet53),大大超过了目前YOLOv3的最佳实践(44.3% AP, ultralytics version2)
更重要的是,当切换到采用先进的CSPNet骨干网和额外的PAN头的先进YOLOv5架构时,YOLOX-L在640 × 640分辨率的COCO上达到50.0%的AP,比对应的YOLOv5- L高出1.8%的AP
我们还在小尺寸模型上测试了我们的设计策略(右图)。YOLOX-Tiny和YOLOX-Nano(仅0.91M参数和1.08G FLOPs)分别比对应的YOLOv4-Tiny和NanoDet3分别高出10%和1.8%的AP

YOLOX

YOLOX-DarkNet53

我们选择YOLOv3与Darknet53作为我们的baseline(即参照物)

Implementation details

我们的训练设置从baseline到最终模型基本上是一致的。我们在COCO train2017上对模型进行了总共300次的训练,其中有5次warmup。我们使用随机梯度下降(SGD)进行训练。我们使用的学习率为lr×BatchSize/64(线性缩放),初始lr = 0.01,余弦lr调度。权重衰减为0.0005,SGD动量为0.9。典型的8 gpu设备的批处理大小默认为128,本报告中的FPS和延迟都是在单个Tesla V100上以fp16精度和batch=1测量的

YOLOv3 baseline

我们的baseline采用了DarkNet53骨干网和SPP层的架构,在一些论文中称为YOLOv3-SPP。与原始实现相比,我们略微改变了一些训练策略,增加了EMA权值更新、余弦调度、IoU损失和IoU感知分支。我们将BCE Loss用于训练类和对象分支,IoU Loss用于训练区域分支

对于数据增强,我们只执行RandomHorizontalFlip, ColorJitter和multi-scale,而放弃RandomResizedCrop策略,因为我们发现RandomResizedCrop与计划的mosaic增强有点重叠

有了这些改进,我们的baseline在COCO val上达到38.5%的AP,如表2所示

Decoupled head

在目标检测中,分类任务和回归任务之间的冲突是一个众所周知的问题。因此,解耦头部分类和定位被广泛应用于大多数一阶段和二阶段检测器中。然而,随着YOLO系列的主干和特征金字塔(如FPN、PAN)的不断演化,它们的检测头仍然保持耦合,如图2所示

对于每一层FPN特征,我们首先采用1 × 1的conv层将特征通道减少到256个,然后添加两个并行分支,每个分支有两个3 × 3的conv层,分别用于分类和回归任务,并在回归分支上添加IoU分支

我们的两个分析实验表明,耦合检测头可能会损害性能:1)将YOLO的头部替换为解耦的头部,大大提高了收敛速度,如图3所示
2)解耦头对于端到端版本的YOLO至关重要

从表1可以看出,耦合封头的端到端特性降低了4.2% AP,而解耦封头的端到端特性降低到0.8% AP

Strong data augmentation

我们将Mosaic和MixUp添加到我们的增强策略中,以提高YOLOX的性能,结果见表2,提示了2.4的AP

Anchor-free

YOLOv4和YOLOv5都遵循了YOLOv3原有的基于锚点的管道。然而,锚点机制有许多已知的问题
首先,为了达到最优的检测性能,需要在训练前进行聚类分析,确定一组最优的锚点。这些聚集的锚点是特定于领域的,泛化程度较低
其次,锚定机制增加了检测头的复杂性,以及每个图像的预测数量。在一些边缘AI系统中,在设备之间移动如此大量的预测(例如,从NPU到CPU)可能会成为整体延迟方面的潜在瓶颈

无锚机制显著减少了需要启发式调优的设计参数的数量和涉及的许多技巧(例如,Anchor Clustering , Grid Sensitive),以获得良好的性能,使检测器,特别是其训练和解码阶段,相当简单

将YOLO切换到无锚的方式非常简单。我们将每个位置的预测从3个减少到1个,并使它们直接预测4个值,即网格左上角的两个偏移量,以及预测框的高度和宽度,我们将每个对象的中心位置指定为正样本,并预先定义刻度范围,以指定每个对象的FPN级别

Multi positives

为了与YOLOv3的分配规则保持一致,上述无锚版本为每个对象均值只选择一个阳性样本(中心位置),而忽略其他高质量的预测。然而,优化这些高质量的预测也可能带来有益的梯度,这可能会缓解训练过程中正/负抽样的极端不平衡
我们简单地将中心3×3区域赋值为阳性,在FCOS中也称为“中心采样”。如表2所示,检测器的性能提高到45.0% AP,已经超过了当前的最佳实践ultralytics-YOLOv3 (44.3% AP)

SimOTA

高级标签分配是近年来目标检测的又一重要进展。基于我们自己的研究OTA,我们总结了高级标签分配的四个关键见解:1).损失/质量意识,2).中心先验,3).每个基本真理的正锚点的动态数量(简称为动态top-k), 4).全局视图。OTA满足上述所有四条规则,因此我们选择它作为候选标签分配策略

具体而言,OTA从全局角度分析标签分配问题,并将分配过程表述为一个最优运输(Optimal Transport, OT)问题,从而产生当前分配策略之间的SOTA性能。然而,在实践中,我们发现使用Sinkhorn-Knopp算法求解OTA问题会带来25%的额外训练时间,这对于训练300个epoch来说是相当昂贵的。因此,我们将其简化为动态top-k策略,称为SimOTA,以获得近似解

SimOTA不仅减少了训练时间,而且避免了Sinkhorn-Knopp算法中额外的求解器超参数。如表2所示,SimOTA将检测器的AP从45.0%提高到47.3%,比SOTA ultralytics-YOLOv3高3.0% AP,显示了高级分配策略的强大

关于OTA的详细介绍

End-to-end YOLO

我们遵循通过消除启发式nms,使目标检测变得更简单
添加两个额外的转换层、一对一的标签分配和停止梯度。这使得检测器能够以端到端方式执行,但会略微降低性能和推理速度,如表2所示。因此,我们将其作为一个可选模块,不涉及我们的最终模型

Other Backbones

除了DarkNet53之外,我们还在其他不同尺寸的骨干上测试了YOLOX,其中YOLOX对所有相应的对应部件都取得了一致的改进

Modified CSPNet in YOLOv5

为了进行公平的比较,我们采用了完全相同的YOLOv5的主干,包括修改后的CSPNet、SiLU激活和PAN头。YOLOX- S、YOLOX- m、YOLOX- l、YOLOX- x型号也遵循其缩放规则。与表3中的YOLOv5相比,我们的模型得到了一致的改善,AP提高了~ 3.0%至~ 1.0%,只有边际时间增加(来自解耦的头部)

Tiny and Nano detectors

我们进一步将模型缩小为YOLOX-Tiny,与YOLOv4-Tiny进行比较。对于移动设备,我们采用深度卷积构建了一个只有0.91M pa参数和1.08G FLOPs的YOLOX-Nano模型。如表4所示,YOLOX在更小的模型尺寸下表现良好

Model size and data augmentation

我们发现,不同尺寸的模型,合适的增强策略是不同的

Comparison with the SOTA

如表6所示,该表中模型的推理速度通常是不受控制的,因为速度随软件和硬件的不同而变化

1st Place on Streaming Perception Challenge(WAD at CVPR 2021)

WAD 2021上的流感知挑战是通过最近提出的度量:流精度 来对准确性和延迟进行联合评估
streaming accuracy
这个指标背后的关键见解是在每个时刻联合评估整个感知堆栈的输出,迫使堆栈考虑在计算发生时应该忽略的流数据量。我们发现在30fps数据流上度量的最佳折衷点是一个推理时间≤33ms的强大模型。因此,我们采用YOLOX-L模型和TensorRT来制作我们的最终模型,以获得第一名的挑战

Conclusion

在本报告中,我们介绍了YOLO系列的一些经验更新,它形成了一个高性能的anchor-free检测器,称为YOLOX。配备了一些最新的先进检测技术,即解耦头部,无锚点和先进的标签分配策略,YOLOX在所有模型尺寸上都比其他同类产品在速度和准确性之间取得了更好的平衡
值得注意的是,我们将YOLOv3的架构提升到了47.3%的AP,超过了目前最佳实践的3.0% AP

相关文章:

YOLOX: Exceeding YOLO Series in 2021(2021.8)

文章目录 AbstractIntroduction介绍前人的工作提出问题解决 YOLOXYOLOX-DarkNet53Implementation detailsYOLOv3 baselineDecoupled headStrong data augmentationAnchor-freeMulti positivesSimOTAEnd-to-end YOLOOther BackbonesModified CSPNet in YOLOv5Tiny and Nano dete…...

HBuilderX 运行Android App项目至雷电模拟器

一、下载安装HBuilderX HBuildeX官网 安装最新的正式版,或者点击历史版本查看更多版本;【ps:Alpha版本为开发版,功能更多,但是也不稳定,属于测试版本】 直接将压缩包解压,运行HBuildeX即可。 二…...

Java进阶(JVM调优)——阿里云的Arthas的使用 安装和使用 死锁查找案例,重新加载案例,慢调用分析

前言 JVM作为Java进阶的知识,是需要Java程序员不断深度和理解的。 本篇博客介绍JVM调优的工具阿里云的Arthas的使用,安装和使用,命令的使用案例;死锁查询的案例;重新加载一个类信息的案例;调用慢的分析案…...

续:将基于Nasm汇编的打字小游戏,移植到DOSBox

续:将基于Nasm汇编的打字小游戏,移植到DOSBox 文章目录 续:将基于Nasm汇编的打字小游戏,移植到DOSBox前情提要细说1 编译2 程序入口3 定位段 运行体验 前情提要 上一篇:【编程实践】黑框框里的打字小游戏,但…...

外部访问K8S集群内部的kafka集群服务

不许转载 kafka 部署 把 kafka 部署到 k8s 后,我们肯定是通过 service 从 k8s 外部访问 kafaka。这里的 service 要么是 NodePort, 要么是 LoadBalancer 类型。我们使用的方式是 LoadBalancer。 我们先看下面这张图,这是 kafka 在集群中的网…...

AttributeError: module ‘tensorflow‘ has no attribute ‘contrib‘解决办法

在TensorFlow2环境下执行1.X版本的代码时报错: AttributeError: module ‘tensorflow‘ has no attribute ‘contrib‘ 当然第一时间想到的是利用 如下代码 来解决问题(大部分情况都是这样), tf.compat.v1但是又出现以下报错 Att…...

物奇平台耳机恢复出厂设置功能实现

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙音频,DSP音频项目核心开发资料, 物奇平台耳机恢复出厂设置功能实现 一 需求 1 耳机接收到充电盒长按12S指令后触发, 2 接收到…...

RFID携手制造业升级,为锂电池生产带来前所未有的可靠性

应用背景 随着科技的发展和全球化的推进,产品的生产过程越来越复杂,且对品质的要求也越来越高。在锂电池生产领域,由于其高能量密度、长寿命和环保特性,已被广泛应用于电动汽车、储能系统等领域。然而,锂电池的安全性和…...

【星海出品】flask (四) 三方工具使用

学习的灵魂是公社,学习的目标是人民自治.学习是非暴力革命方式的社会改革.学习是人民对抗资本剥夺的文明方式.学习失败了,就如同巴黎公社失败了一样.但是它为今后进行成功的社会改革指明了正确的方向.学习的逻辑并不复杂,一句话,必须让知识数量与知识价值基本吻合.管理学习也不…...

MongoDB 索引

类似关系型数据库,mongodb也建立自己的一套索引机制和查询优化方法。本文简单介绍mongodb的索引。后续文章讲详细介绍索引的操作,监控和查询优化方法等。 索引 索引,是一组按照特殊结构排列的,方便检索的数据。索引中保存了集合…...

[Hive] INSERT OVERWRITE DIRECTORY要注意的问题

在使用Hive的INSERT OVERWRITE语句时,需要注意以下问题: 数据覆盖:INSERT OVERWRITE语句会覆盖目标目录中的数据。因此,在执行该语句之前,请确保目标目录为空或者你希望覆盖的数据已经不再需要。数据格式:…...

刚柔相济铸伟业 ——访湖南顺新金属制品科技有限公司董事长张顺新

时代在变,唯初心不改。 精致、谦虚、谨慎、儒雅、温和——他就是张顺新,湖南顺新金属制品科技有限公司、湖南顺新供应链管理有限公司董事长,民建长沙市委常委,民建湖南省环资委副主任,省、市民建企联会常务副会长&…...

DHorse(K8S的CICD平台)的实现原理

综述 首先,本篇文章所介绍的内容,已经有完整的实现,可以参考这里。 在微服务、DevOps和云平台流行的当下,使用一个高效的持续集成工具也是一个非常重要的事情。虽然市面上目前已经存在了比较成熟的自动化构建工具,比如…...

类图复习:类图简单介绍

入职新公司在看新项目的代码,所以借助类图梳理各个类之间的关系,奈何知识已经还给了老师,不得不重新学习下类图的相关知识,此处将相关内容记录下方便后续使用。 文章目录 类图语法类与类的关系画类图 类图语法 语法描述public-pr…...

【字符串】【双指针翻转字符串+快慢指针】Leetcode 151 反转字符串中单词【好】

【字符串】【双指针翻转字符串快慢指针】Leetcode 151 反转字符串中单词 解法1 双指针翻转字符串快慢指针更新数组大小 ---------------🎈🎈题目链接🎈🎈------------------- ---------------🎈🎈解答链接…...

3D Gaussian Splatting:用于实时的辐射场渲染

Kerbl B, Kopanas G, Leimkhler T, et al. 3d gaussian splatting for real-time radiance field rendering[J]. ACM Transactions on Graphics (ToG), 2023, 42(4): 1-14. 3D Gaussian Splatting 是 Siggraph 2023 的 Best Paper,法国团队在会议上展示了其实现的最…...

【nlp】文本处理的基本方法

文本处理的基本方法 1 什么是分词2 什么是命名实体识别3 什么是词性标准1 什么是分词 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形…...

C++17 std::filesystem

std::filesystem 是 C17 标准引入的文件系统库,提供了一套用于处理文件和目录的 API。它主要包括以下几个核心类: std::filesystem::path:用于表示文件系统路径。它提供了一系列方法,允许你对路径进行各种操作,如拼接…...

JVM在线分析-解决问题的工具一(jinfo,jmap,jstack)

1. jinfo (base) PS C:\Users\zishi\Desktop> jinfo Usage:jinfo <option> <pid>(to connect to a running process)where <option> is one of:-flag <name> to print the value of the named VM flag #输出对应名称的参数-flag [|-]<n…...

[深度学习]不平衡样本的loss

不平衡样本的loss ”softmax“、”weighted softmax“、”focal“、”class-balanced“ 和 ”balanced softmax“ 都是用于多类分类任务的损失函数。它们之间的区别在于如何处理类别不均衡的问题。 Softmax 是常用的多类分类损失函数。它将输出分布转换为概率分布&#xff0c…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...