YOLOX:Exceeding YOLO Series in 2021 阅读小笔记

概述

由于目标检测发展出许多anchor-free、advanced label assignment方法,但是这些方法在YOLO v4和YOLO v5中都没有应用,因此作者提出了YOLOX,极大提升了YOLO v3的性能。

一句话总结:YOLOX在YOLO v3的基础上,通过使用解耦检测头、强化的数据增强方法(Mosaic和MixUp)、anchor free、多正样本、SimOTA Box assign方法(每个ground truth可能对应不一样数目的正样本),提升了目标检测模型的性能。
基础起点模型使用YOLO v3-Darknet53。

另外我们也和SSD进行了对比,它的优势:

  • 实测效果提升很大;
  • 收敛稳定、不需要提前手工设计anchor宽高比例;
  • 可以根据需要选择不同大小的模型,端侧可以用推理速度快的小模型,精度要求更高可以用大模型;
  • 提供了onnxTensorRt等的支持,工程应用非常方便。

基于YOLO v3的改进措施

训练细节

总共训练300个epoch,前5个epoch进行学习率warmup,学习率设置为lr×BatchSize/64,并使用cosine学习率,增加了权值ema更新,并且使用IoU loss和IoU-aware分支。

数据增强

随机水平翻转、颜色空间增强以及多尺度数据增强,去掉了随机 resize crop增强,因为认为它和mosaic增强有些重合。并且在最后15个epoch关闭Mosaic和MixUp增强,同时作者发现使用这些增强后ImageNet预训练模型以及没有收益,因此所有的模型都是从头训练。

Mosaic数据增强

关于 Mosaic 数据增强部分,可以参考这篇博客。

MixUp数据增强

关于 MixUp 数据增强部分,可以参考这篇博客。

解耦检测头

已经有论文(例如 Rethinking classification and localization for object detection)指出分类和回归任务两个并不适合放到一起进行优化。YOLOX的分析结果也显示混合头对性能有坏影响:替换YOLO的头为解耦头极大提升了收敛速度;同时解耦头对于端到端版本的YOLO也是至关重要的。在具体实施上,第每一层FPN特征,首先都使用一个1×1卷积将特征维度降低到256维,然后增加两个并行的分支,使用两层3×3卷积,分别输入到分类和回归分支,同时IoU分支和回归分支放到一起。

YOLOX:Exceeding YOLO Series in 2021 阅读小笔记_第1张图片

Anchor-free

基于anchor的目标检测方法有些问题:首先是在训练前要对数据集信息进行聚类,这降低了检测模型的泛化性能;另外是增加了检测头的复杂度;最后在边缘设备上还可能造成性能瓶颈。因此YOLOX使用anchor-free的方法:首先将每个位置进行3个预测降低到1个预测,直接预测四个值,也就是左上角位置以及偏移。使用object的中心位置作为正样本。

Multi positives

为了稍微缓解正负样本平衡问题,参考FCOS中的方法,将中心位置3*3的地方都作为正样本。

SimOTA

对每个gt,都在一个固定的中心区域中,选择top k个和gt具有最小损失的预测结果作为正样本。每个gt可能对应不同的k值。

切换Backbone

通过切换Backbone,作者或者不同大小规模的YOLOX模型。对于大模型,使用更强的数据增强;对于小模型关闭了Mosaic和MixUp增强。同时在做MixUp增强前,先对图像进行随机尺度缩放,增强了MixUp的性能。

作者对每项带来的性能提升也做了实验:

YOLOX:Exceeding YOLO Series in 2021 阅读小笔记_第2张图片

最终性能

最终性能对比如下表,性能提升明显,相比YOLO v5,也有不错的性能提升。

YOLOX:Exceeding YOLO Series in 2021 阅读小笔记_第3张图片

你可能感兴趣的:(深度学习,目标检测,深度学习,目标检测,计算机视觉)