YOLOX: Exceeding YOLO Series in 2021

YOLO系列的最新高性能探测YOLOX
YOLOX: Exceeding YOLO Series in 2021
github开源代码
领导给了篇论文说很好理解……
结果哈哈哈哈确实英文很好懂,名词一个都不认识,解耦,anchor-free,OTA
太难啦

新知识点

AP (Average Precision)
为平均精度,使用积分的方式来计算PR曲线与坐标轴围成的面积
计算出AP之后,对所有的类别的AP求平均就可以得出整个数据集上的mAP(mean Average Precision)
AP与mAP含义:目标检测指标

COCO数据集的 全称是Common Objects in COntext,是微软团队提供的一个可以用来进行图像识别的数据集。MS COCO数据集中的图像分为训练、验证和测试集。COCO通过在Flickr上搜索80个对象类别和各种场景类型来收集图像,其使用了Amazon Mechanical Turk (AMT)
COCO数据集现在有3种标注类型:object instances(目标实例), object keypoints(目标上的关键点), 和image captions(看图说话),使用JSON文件存储。

FLOPS:
是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标

FLOPs:
注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度
模型计算力(flops)和参数(parameters)

EMA 滑动平均(exponential moving average),或者叫做指数加权平均(exponentially weighted moving average),可以用来估计变量的局部均值,使得变量的更新与一段时间内的历史取值有关。

BCE损失函数
loU损失函数

解耦 Decoupled 和鲁棒性一样是个一头雾水的名词
低耦合高内聚,模块之间低耦合,模块之内高内聚,以追求消耗最小的能量,软件系统的可重用和易维护。
解耦通俗地说就是两个东西原来互相影响,现在让他们独立发展。少用全局变量。
解藕的本质就是模块化,将两者有关系的东西通过一个固定通道(即接口)进行结合,而通道的两边可以自由定义。
知乎上关于解耦
解耦的专栏

Anchor机制的缺点有:

  • 正负样本不均衡
  • 超参难调,Anchor 需要数量、大小、宽高等多个超参,这些参数对检测的召回率和速度等指标有很深的影响。
  • 训练阶段耗时严重,为了确定每个 Anchor 是正样本还是负样本,通常要将每个 Anchor 与所有的标签进行 IoU 的计算,这会占据大量的内存资源与计算时间

anchor-free
知乎对anchor-free的

OTA 最佳传输分配 (Optimal Transport Assignment)
具体来说,OTA 从全局角度分析标签分配,并将分配过程制定为最优传输 Optimal Transport (OT) 问题
Paper: OTA

对比

对于 YOLO-Nano(0.91M , 1.08G FLOPs)在 COCO 上获得了 25.3% 的 AP,超过 NanoDet 1.8% 的 AP;
对于 YOLOv3,业界最广泛使用的探测器之一,我们在COCO上提升了 47.3%,比当前最佳实践高 3.0% AP;
对于 YOLOX-L,参数量与 YOLOv4-CSP、YOLOv5-L 大致相同,我们在 COCO 上以 68.9 FPS 的速度在 Tesla V100 上实现了 50.0% AP,超过 YOLOv5-L 1.8% AP。
在这里插入图片描述

YOLOX-DarkNet53

选择 YOLOv3和 Darknet53 作为baseline。用随机梯度下降(SGD)进行训练。用lr×BatchSize/64(线性缩放)的学习率,初始 lr=0.01和余弦lr调度。权重衰减 weight decay为 0.0005,SGD 动量为 0.9。对于典型的 8-GPU 设备,批处理大小默认为 128。其他批量大小(包括单 GPU 训练)也运行良好。输入大小从 448 到 832 以 32 步均匀绘制。

YOLOv3 baseline

采用了 DarkNet53 的backtone 和 SPP 层的架构

添加了一些训练策略:

  • EMA 权重
  • cosine lr schedule
  • IoU 损失函数
  • IoU-aware

用 BCE 损失函数训练 cls 和 obj 的分支,用 IoU 损失函数训练 reg的分支。

使用的数据增强方法:

  • Random Horizontal Flip
  • ColorJitter
  • multi-scale

Decoupled head

分析实验表明耦合检测头可能会损害性能。

  • 将YOLO的头部换成解耦的头部大大提高了收敛速度
  • 耦合头的端到端属性降低了 4.2% AP,而解耦头只降低了 0.8% AP。
    在这里插入图片描述

Strong data augmentation

增加了Mosaic 和 MixUp 增强策略,以提高 YOLOX 的性能。训练了大概15个epoch,实现了 42.0% 的 AP
Mosaic 是 Ultralytics-YOLOv32 提出的一种有效的增强策略。被广泛用于 YOLOv4、YOLOv5和其他检测器。
MixUp 最初是为图像分类任务而设计的,但后来在 BoF中进行了修改,用于对象检测训练。
使用强数据增强后,作者发现 ImageNet 预训练变得没有效果,并且接下来的所有模型都是从头开始训练。

Anchor-free

首先,为了达到最优的检测性能,需要在训练前进行聚类分析,确定一组最优的anchors。
其次,anchor mechanism 增加了检测的复杂性,以及每个图像的预测数量。

将 YOLO 切换为anchor机制非常简单。
将每个图像的预测从 3 组anchor 减少到 1组,直接预测4个值,即网格左上角的xy值,以及预测框的高度和宽度。
同时只为每个对象选择一个处于中心位置的正样本,这可能会缓解训练过程正负样本极端不平衡。

Multi positives

简单地将中心 3×3 的区域指定为正样本,在 FCOS 中也称为“中心采样”。检测器的性能提高到 45.0% AP,算是一种暴力手段。

SimOTA

高质量标签对物体检测效果影响颇丰,主要为以下四个点:
1)loss/quality aware
2)center prior 先验中间
3)dynamic number of positive anchors 4 for each ground-truth (abbreviated as dynamic top-k) 每个ground-truth的动态正锚数量为4(缩写为动态 top-k)
4)global view 全球视野。
OTA 满足上述所有四个规则,因此选择它作为候选标签分配策略。然而,在实验中发现通过 Sinkhorn-Knopp 算法解决 OT 问题带来了 25% 的额外训练时间。
因此,我们将其简化为动态 top-k 策略,命名为 SimOTA。

介绍simOTA是真的理解不动了
在这里插入图片描述

与其他模型的对比

在这里插入图片描述
就是AP提升

结论

YOLOX 是igh-performance anchor-free detecto。
配备了Decoupled head、Anchor-free和 advanced label assigning strate。
YOLOX 比其他同类产品在速度和准确性之间实现了更好的权衡。

但是YOLOv3 在 COCO 上获得的 47.3% AP,超过YOLOX最佳状态的 3.0% AP,YOLOv3 依旧是YYDS(笑

词汇

Random Horizontal Flip 随机水平翻转
ColorJitter 颜色抖动 pytorch transforms 库
multi-scale 多尺度目标检测
Decoupled head 解耦头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值