YOLOX论文解读

paper:YOLOX: Exceeding YOLO Series in 2021

official implementation:https://github.com/Megvii-BaseDetection/YOLOX

本文的创新点

本文在YOLOv3的基础上进行了一些改进:包括将检测头进行解耦的decoupled head、从anchor-based转为anchor-free、标签分配使用OTA的简化版本SimOTA,提出了YOLOX,在large-scale和light-weight模型方面都取得了SOTA的结果,如图1所示。

YOLOX

YOLOX-DarkNet53

Implementation details 训练设置从baseline到最终的模型基本是一致的。我们在COCO train2017上总共训练了300个epoch,包括5个epoch的warm-up。优化器选择SGD。使用 \(lr\times Batchsize/64\) 的学习率,初始 \(lr=0.01\) 和cosine lr schedule。weight decay大小为0.0005,SGD momentum为0.9。对于8-GPU的设置,batch size默认为128。输入大小以步长32均匀的从448到832。本文中FPS和lantency都是在Tesla V100上以FP16精度和batch=1进行测量。

YOLO v3 baseline baseline采用DarkNet-53和SPP层的YOLOv3。与原来的实现相比,作者稍微改变了一些训练策略,增加了EMA权重更新、余弦学习衰减策略、IoU损失和IoU-aware分支。用BCE loss训练 \(cls\) 和 \(obj\) 分支,用IoU loss训练 \(reg\) 分支。这些通用的训练技巧与YOLOX的关键改进是orthogonal的关系,因此把它们放到了baseline上。此外,我们只进行随机水平翻转RandomHorizontalFlip、颜色抖动ColorJitter和多尺度multi-scale的数据增强,并丢弃了RandomResizedCrop,因为作者发现RandomResizedCrop和mosaic增强有一些重叠。通过这些增强,baseline在COCO val上得到了38.5% AP,如表2所示。

Decoupled head 在目标检测中,分类和回归任务之间的conflit是一个众所周知的问题,因此解耦头decoupled head被广泛用于大多数one-stage和two-stage检测模型中。但YOLO系列骨干网络和特征金字塔不断进化,检测头却仍然是coupled,如图2所示。

两个分析实验表明coupled head可能会损害性能。1)用decoupled head代替coupled head,大大提高了收敛速度,如图3所示。2)decoupled head对end-to-end版本的YOLO至关重要(后面会详述)。

 

从表1可以看出,耦合头的端到端版本AP下降了4.2,而解耦头只下降了0.8。因此我们将coupled head换成了decoupled head,如图2所示。具体而言,它包含一个1x1卷积层用来降低通道维度,两个平行分支中各有两个3x3卷积层。从表2可以看出,decoupled head带来了额外1.1ms的推理时间(11.6ms v.s. 10.5ms)。

 

Strong data augmentation 我们添加了Mosaic和MixUp到数据增强策略中来提高YOLOX的性能。Mosaic是ultralytics-YOLOv3提出的一种有效的数据增强策略,后续被广泛用于YOLOv4、YOLOv5和其它检测模型中。MixUp最初是为图像分类设计的,后来在BoF中修改用于目标检测训练。在我们的模型中,我们使用了Mosaic和MixUp,并在最后15个epoch关闭它们,得到了42%的AP,如表2所示。在使用了更强的数据增强后,我们发现ImageNet预训练不再有用,因此接下来的模型我们全部都从头训练。 

Anchor-free YOLOv4和YOLOv5都遵循了YOLOv3最初基于anchor的pipeline。然而,anchor机制存在许多问题。首先,为了达到最优检测性能,需要在训练前进行聚类分析以确定一组最优anchor,这些anchor是特定于领域的并且泛化性较差。其次,anchor机制增加了检测head的复杂性以及每张图片的预测数量。在一些边缘AI系统中,在设备之间(例如从NPU到CPU)移动如此大量的预测可能成为总体延迟的潜在瓶颈。

Anchor-free机制在过去两年发展迅速,这些工作表明,anchor-free检测模型的性能可以达到anchor-based模型的相同水平。Anchor-free机制显著减少了为了获得好的性能需要的启发式调优和相关trick的设计参数(比如Anchor Clustering, Grid Sensitive),使得检测模型,特别是训练和解码阶段变得非常简洁。

将YOLO转换到anchor-free的方式非常简单,我们将每个位置的预测数量从3减为1,并直接预测四个值,即相对网格左上角的两个偏移和预测框的宽高。我们将每个对象的中心位置指定为正样本,并像FCOS一样预先定义一个尺度范围来指定每个对象所属的FPN层级。这种修改减少了检测模型的参数和GFLOPs使其更快,并取得了更高的性能 - 42.9% AP,如表2所示。

Multi positives 为了和YOLOv3的分配规则一致,上述anchor-free的版本只为每个对象分配了一个正样本(中心位置),但同时忽略了其它高质量的预测。但是,优化这些高质量的预测也会带来有益的梯度,这可能会缓解训练过程中正负样本的极端不平衡。因此我们将中心3x3区域分配为正样本,这在FCOS中被称为"center sampling"。如图2所示,检测模型的性能提升到了45.0% AP,已经超越了目前最好的ultralytics-YOLOv3(44.3% AP)。

SimOTA 先进的标签分配方法是近年来目标检测领域的另一项重要进展。基于我们自研的OTA,我们总结了先进标签分配的四个关键点:1)loss/quality aware 损失/质量感知的,2)center prior 中心先验,3)每个ground-truth动态的positive anchor数量(简写为动态top-k),4)global view 全局视野。OTA同时满足了上述四条,因此我们选择它作为候选标签分配策略。关于OTA的具体介绍见OTA: Optimal Transport Assignment for Object Detection 原理与代码解读-CSDN博客

具体来说,OTA从全局角度来分析标签分配,并将分配过程定义为一个最优传输问题(Optimal Transport, OT),在现有的分配策略中取得了SOTA的性能。但是我们发现通过Sinkhorn-Knopp算法解决OT问题导致训练时长增加了25%,对于训练300个epoch来说代价很大。因此我们将其简化为动态top-k策略,成为SimOTA,以得到一个近似解。

SimOTA首先计算每对prediction-gt的匹配程度,即cost。SimOTA中,gt \(g_{i}\) 和预测 \(p_j\) 之间的cost计算如下

其中 \(\lambda\) 是平衡系数,\(L_{ij}^{cls}\) 和 \(L_{ij}^{reg}\) 分别是 \(g_{i}\) 和 \(p_j\) 的分类损失和回归损失。然后对于 \(g_{i}\),我们在一个固定的中心区域内选择cost最小的 \(k\) 个预测作为它的正样本。最后,这些positive预测对应的网格grid划分为正样本,其余的grid作为负样本。注意对于不同ground-truth,\(k\) 值也不同,具体可以参考OTA中的Dynamic \(k\) Estimation策略。

SimOTA不仅减少了训练时间,而且避免了inkhorn-Knopp算法中额外的超参。如表2所示,SimOTA将模型的AP从45.0%提升到47.3%,比SOTA的ultralytics-YOLOv3高了3.0%,显示出了先进标签分配策略的作用。

End-to-end YOLO 作者遵循《Object detection made simpler by eliminating heuristic nms》的方法额外添加了两个卷积层,一对一的标签分配,停止梯度。这使模型可以端到端的执行检测,但会略微降低性能和推理速度,如表2所示。作者这里将它作为一个可选的模块,并不包含在最终的模型中。

Other Backbones

除了DarkNet53,作者还在其它不同大小的backbone上测试了YOLOX,都得到了提升。

Modified CSPNet in YOLOv5 为了公平比较,我们采用了YOLOv5的backbone,包括改进的CSPNet,SiLU激活,和PAN检测头。我们还仿照其缩放规则得到了YOLOX-S,YOLOX-M,YOLOX-L和YOLOX-X。如表3所示,和YOLOv5相比,我们的模型得到了一致的提升,~3.0%到~1.0%,只增加了少量的时间(来自于decoupled head)。

Tiny and Nano Detectors 我们进一步缩小得到了YOLOX-Tiny从而可以和YOLOv4-Tiny进行比较。对于移动设备,我们采用深度构建了YOLOX-Nano,该模型只有0.91M的参数和1.08G的FLOPs。如表4所示,YOLOX在更小的模型上也表现良好。

 

Model size and data augmentation 在我们的实验中,所有的模型都使用了相同的learning schedule和优化参数。但我们发现,对不同大小的模型,合适的数据增强策略也不同。如表5所示,对YOLOX-L应用MixUp可以提高0.9% AP,对小模型最好减小数据增强的强度。具体来说,当训练小模型(YOLOX-S, YOLOX-Tiny, YOLOX-Nano)时,我们去掉了mix-up并削弱了mosaic(尺度范围从[0.1, 2.0]变成[0.5, 1.5])。这将YOLOX-Nano的AP从24.0%提高到了25.3%。

 

对于大模型,我们发现更强的数据增强更有帮助。实际上,我们的MixUp实现比原始实现heavier一些。受Copypaste(具体介绍见Copy-Paste(CVPR 2021)原理与代码解析-CSDN博客)的启发,在mixup之前,我们对两张图片都进行了抖动,抖动的比例因子是随机采样的。为了理解Mixup结合scale jittering的表现,我们将其与YOLOX-L上的Copypaste进行比较,注意到Copypaste需要额外的instance mask标注而MixUp不需要。但如表5所示,这两种方法获得了差不多的精度,表明当没有实例掩码标注时,MixUp结合scale jittering是CopyPaste的合格替代品。

Comparision with the SOTA

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成人商务英语,外贸英语纺织英语日常交流口语柯桥学外语

大家好,今天我们要说的这个短语,跟香蕉Banana有关,它就是top banana。 不过它可不是字面上的“顶级香蕉”的意思哦~ Top banana是一个俚语,常见的意思有两个: 1. the most important person in any group 一群人中最…

科技引领品质:飞利浦智能锁“12年免费换新机”重塑行业新标杆

随着智能锁行业的竞争愈发火热,各大品牌在技术创新和服务升级方面不断推陈出新。售后服务的形态正发生深刻变化,从传统的保修维修到如今的技术支持、24小时在线客服等,各大品牌都在不断地提升售后服务水平,以创新的服务理念和先进…

计算机设计大赛 深度学习的动物识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

elasticsearch篇

1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在电商网站搜索商品 在百度搜索答案 在打车软件搜索附近…

人力资源社会保障部教育部关于印发《关于深化中小学教师职称制度改革的指导意见》的通知

人力资源社会保障部、教育部印发 关于《深化中小学教师职称制度改革的指导意见》的通知 人社部发[2015]79号 各省、自治区、直辖市及新疆生产建设兵团人力资源社会保障厅(局)、教育部门(教委、教育局): 为深化教育…

ospf静态路由实验简述

1、ospf静态路由实验简述 实验拓扑图 实验命令 r2: sys sysname r2 undo info enable int loopb 0 ip add 2.2.2.2 32 quit int e0/0/0 ip add 23.1.1.2 24 quit ospf 1 area 0 network 23.1.1.0 0.0.0.255 network 2.2.2.2 0.0.0.0 ret r3: sys sysname r3 undo info enable …

音视频开发_音频基础知识

如何采集声音——模数转换原理 声音模数转换是将声音信号从模拟形式转换为数字形式的过程。它是数字声音处理的基础,常用于语音识别、音频编码等应用中。 音视频通信流程 音视频采集:首先是从麦克风、摄像头等设备中采集音频和视频数据,将现…

ESP8266程序烧录方法(以ESPFlashDownloadTool为例)

0 工具准备 ESP8266必须包含的目标bin ESPFlashDownloadTool_v3.6.3.exe NodeMCU(ESP8266) sscom5 1 ESP8266程序烧录方法(以ESPFlashDownloadTool为例) 1.1 生成ESP8266所需的bin文件 可以参考前面所写的《安信可IDE&#xff0…

「一本通 6.5 例 4」佳佳的 Fibonacci

题目描述 佳佳对数学,尤其对数列十分感兴趣。在研究完 Fibonacci 数列后,他创造出许多稀奇古怪的数列。例如用 S(n) 表示 Fibonacci 前 n 项和 mod m 的值,即 S(n)(F1F2...Fn) mod m,其中 F1F21, FiFi-1Fi-2。可这对佳佳来说还是…

Python快速入门系列-2(Python基础语法)

第三章:Python基础语法 3.1 变量与数据类型3.1.1 变量的定义与赋值3.1.2 数据类型3.1.3 类型转换 3.2 注释与缩进3.2.1 注释3.2.2 缩进 3.3 条件语句与循环结构3.3.1 条件语句3.3.2 循环结构 3.4 函数与模块3.4.1 函数3.4.2 参数和返回值3.4.3 模块3.4.4 标准库中的…

docker 使用官方镜像搭建 PHP 环境

一、所需环境: 1、PHP:7.4.33-fpm 的版本 2、Nginx:1.25.1 的版本 3、MySQL: 5.7 的版本 4、Redis:7.0 的版本 1.1、拉取官方的镜像 docker pull php:7.4.33-fpm docker pull nginx:1.25.1 docker pull mysql:5.7 do…

Qt 定时器事件

文章目录 1 定时器事件1.1 界面布局1.2 关联信号槽1.3 重写timerEvent1.4 实现槽函数 启动定时器 2 定时器类 项目完整的源代码 QT中使用定时器,有两种方式: 定时器类:QTimer定时器事件:QEvent::Timer,对应的子类是QTi…