目录

一、速度和检测效果

二、yoloX的改进点

2.1 Decoupled Head(解耦头)

2.2数据增强:Mosaic + MixUp

2.3 Anchor Free

2.4 Label Assignment(样本匹配)

作者尝试了3种正样本选择方式:

SimOTA优点:

simOTA(Optimal Transport Assignment)整体代码逻辑:

☆dynamic top-k 的计算过程:

yoloX的精度指标


一、速度和检测效果

1、YOLOX-L和YOLOv4-CSP、YOLOv5-L有差不多参数量的情况下,YOLOX-L在COCO上取得50.0%AP(比YOLOv5-L高出1.8%的AP),且YOLOX-L在单张Tesla V100上能达到68.9FPS。

2、YOLOX-Tiny和YOLOX-Nano(只有0.91M参数量和1.08G FLOPs)比对应的YOLOv4-Tiny和NanoDet3分别高出10% AP和1.8% AP

3、在Streaming Perception Challenge (Workshop on Autonomous Driving at CVPR 2021) 只使用YOLOX-L模型取得第一名

二、yoloX的改进点

2.1 Decoupled Head(解耦头)

将网络分类头和回归头解耦。

yoloX解耦了分类头和回归头

1)解耦头的好处:

  1. 精度带来提升:相比较于非解耦的端到端方式,解耦能带来4.2%AP提升;
  2. 收敛速度也明显加快:将预测分支解耦提升了收敛速度;

2)解耦时控制计算量:

为了权衡速度和性能,使用 1个1x1 的卷积先进行降维,并在分类和回归分支里各使用了 2个3x3 卷积,最终调整到仅仅增加一点点参数。

2.2数据增强:Mosaic + MixUp

YOLOX继续给baseline增加了Mosaic和Mix-up两个数据增强手段。在训练的最后15个epoch,这两个数据增强会被关闭掉。

1)Mosaic增强:Mosaic 经过 YOLOv5 和 v4 的验证,证明其在极强的 baseline 上能带来显著涨点。

2)MixUp:用在目标检测中大概的方式是:两张图以一定的比例对rgb值进行混合,同时需要模型预测出原本两张图中所有的目标。目前MixUp在各大竞赛、各类目标检测中属于稳定提点的策略。

3)Mosaic 配上 Copypaste,依然有不俗的提升;

  • Copypaste 的实现依赖于目标的 mask 标注,而 mask 标注在常规的检测业务上是稀缺的资源。而由于 MixUp 和 Copypaste 有着类似的贴图的行为,还不需要 mask 标注,因此可以让 YOLOX 在没有 mask 标注的情况下吃到 Copypaste 的涨点。不过我们实现的 Mixup,没有原始 Mixup 里的 Bernoulli Distribution 和 Soft Label ,有的仅是 0.5 的常数透明度和 Copypaste 里提到的尺度缩放。
  • Data Augmentation 里面需要强调的一点是:训练结束前的15个 epoch 关掉 Mosaic 和Mixup ,这对于 YOLOX 非常重要。因为Mosaic+Mixup 生成的训练图片,远远脱离自然图片的真实分布,并且 Mosaic 大量的 crop 操作会带来很多不准确的标注框;

Mosaic+MixUp:马赛克是将几张图片缩放然后拼在一起,MixUp是将两张图片调整透明度然后叠加在一起

2.3 Anchor Free

将原有一个特征图预测3组不同尺寸anchor减少成只预测1组,直接预测4个值(左上角xy坐标和box高宽)。减少了参数量和GFLOPs,使速度更快,且表现更好。

Anchor Free 的优点:

  • 1)Anchor Based 检测器为了追求最优性能通常会需要对anchor box 进行聚类分析,这增加了算法工程师的时间成本,且在不同场景应用中缺乏较好的泛化性;
  • 2)Anchor 增加了检测头的复杂度,会生成大量的预测框,将大量检测结果从NPU搬运到CPU上对于某些边缘设备是无法容忍的。
  • 3)Anchor Free 的解码代码逻辑更简单,使用起来更方便。

2.4 Label Assignment(样本匹配)

作者尝试了3种正样本选择方式:

1)只将物体中心点所在的位置认为是正样本,一个gt最多只会有一个正样本。AP达到42.9%。

2)Multi positives:将中心3*3区域都认为是正样本,即从策略1中每个gt有1个正样本增长到9个正样本。且AP提升到45%,已经超越U版yolov3的44.3%AP。

3)SimOTA

OTA(Optimal Transport Assignment):在目标检测中,有时候经常会出现一些模棱两可的anchor,如图3,即某一个anchor,按照正样本匹配规则,会匹配到两个gt,而retinanet这样基于IoU分配是会把anchor分配给IoU最大的gt,而OTA作者认为,将模糊的anchor分配给任何gt或背景都会对其他gt的梯度造成不利影响,因此,对模糊anchor样本的分配是特殊的,除了局部视图之外还需要其他信息。因此,更好的分配策略应该摆脱对每个gt对象进行最优分配的惯例,而转向全局最优的思想,换句话说,为图像中的所有gt对象找到全局的高置信度分配。(和DeTR中使用使用匈牙利算法一对一分配有点类似)

SimOTA优点:

  • 1、simOTA能够做到自动的分析每个gt要拥有多少个正样本
  • 2、能自动决定每个gt要从哪个特征图来检测
  • 3、相比较OTA,simOTA运算速度更快。

simOTA(Optimal Transport Assignment)整体代码逻辑:

1、确定正样本候选区域。

2、计算anchor与gt的iou。

3、在候选区域内计算cost(损失)。

4、使用iou确定每个gt的dynamic_k。

5、为每个gt取cost排名最小的前dynamic_k个anchor作为正样本,其余为负样本。

6、使用正负样本计算loss。

☆dynamic top-k 的计算过程:

  • 1.为每个grid分配正样本

1)判断grid是否在gt-box的内部,如果在则为正样本fg_mask;

2)同时判断grid在不在gt-box中心点2.5个像素点区域内(论文是3个像素点)

3)如果上面两个条件同时满足则用is_in_boxes_and_center 表示,这一步是一个筛选的过程选更靠近gt的grid为正样本。

  • 2. 计算代价矩阵
cost = (pair_wise_cls_loss                      # Lcls+ 3.0 * pair_wise_ious_loss             # λ*Lreg,实际代码中把λ设置为了3+ 100000.0 * (~is_in_boxes_and_center)  # 把不在考虑范围内的anchor置为很大的数值
)

1)代码中pair_wise_cls_loss和pair_wise_ious_loss是通过fg_mask选取的gird与gt的分类loss和IoU loss;

2)代码第3项可以看到cost 里面有100000.0 * (~is_in_boxes_and_center)的计算,发现当grid不在is_in_boxes_and_center 里面的代价cost是非常大的值。

  • 3. dynamic_k_matching

1)获取与当前gt的IoU值前10的预测结果,将这top10的IoU值相加的总和值,就为当前gt的dynamic_k。dynamic_k最小值为1,保证一个gt至少有一个正样本。

由于前期模型预测不准,导致iou基本比较小,因此模型训练前期dynamic_k大多为1

2)取cost排名最小的前dynamic_k个anchor作为gt的正样本,其余为负样本。

yoloX的精度指标

参考链接:

https://zhuanlan.zhihu.com/p/394392992

https://zhuanlan.zhihu.com/p/392221567

【目标检测】yolo系列yolo x学习笔记(2021年旷视)相关推荐

  1. 目标检测中的一些指标——学习笔记

    1.参考: https://blog.csdn.net/asasasaababab/article/details/79994920 2.TP.FP.TN.FN 用人脸识别做一个例子, TP:True ...

  2. 目标检测——初始学习率设置的学习笔记

    1 学习率的搜索策略 我们采用双向搜索的方法进行搜索: 也就是从初始学习率,按照增大学习率和减小学习率两个方向进行搜索: 于是在分方向进行搜索之前,我们需要设置学习率的初始搜索点, 搜索点的初始设置可 ...

  3. 目标检测YOLO系列------YOLO简介

    目标检测YOLO系列------YOLO简介 1.为什么会出现YOLO算法 2.YOLO算法会逐渐成为目标检测的主流吗     YOLO以及各种变体已经广泛应用于目标检测算法所涉及到的方方面面,为了梳 ...

  4. 目标检测方法系列:R-CNN, SPP, Fast R-CNN, Faster R-CNN, YOLO, SSD

    本文转载自: http://www.cnblogs.com/lillylin/p/6207119.html 目标检测方法系列--R-CNN, SPP, Fast R-CNN, Faster R-CNN ...

  5. 一文看尽目标检测:从YOLO v1到v3的进化之路

    本文转载自: http://www.mamicode.com/info-detail-2314392.html 导语:如今基于深度学习的目标检测已经逐渐成为自动驾驶.视频监控.机械加工.智能机器人等领 ...

  6. 一文看尽目标检测:从 YOLO v1 到 v3 的进化之路

    点击"小詹学Python",选择"星标"公众号 重磅干货,第一时间送达 源自: http://www.mamicode.com/info-detail-2314 ...

  7. 目标检测0-02:YOLO V3-网络结构输入输出解析

    以下链接是个人关于YOLO V3所有见解,如有错误欢迎大家指出,我会第一时间纠正,如有兴趣可以加微信:17575010159 相互讨论技术. 目标检测0-00:YOLO V3目录-史上最全 一.源码目 ...

  8. PCB电路板元件目标检测数据集(YOLO标签,1400张,9类目标)

    9类目标, names: ['Cap1', 'Cap2', 'Cap3', 'Cap4', 'MOSFET', 'Mov', 'Resestor', 'Resistor', 'Transformer' ...

  9. anchor free 目标检测_《目标检测》系列之二:目标检测中的Anchor机制回顾

    前段时间,YOLOv4&v5大火,很多人忽视了yolov5在anchor上的一些细节变化,因此,本文从Faster RCNN着手,逐步分析SSD.YOLOv4&v5的anchor机制. ...

最新文章

  1. 深度学习笔记5:Building Deep Networks for Classification
  2. MapHack源代码
  3. python土味情话_有哪些比较新的土味情话?
  4. carve into_最新carve的用法和短语例句
  5. splay详解(三)
  6. Maven——安装(二)
  7. 2022年上半年软件设计师上午真题及答案解析
  8. CUDA 学习(十四)、纹理内存
  9. matlab语法——min函数
  10. 神经网络二分类输出概率,神经网络二分类预测
  11. 20.P153课后习题6-13 背包问题。设有一个背包可以放入物品的重量为s,现有n件物品,重量分别为w[0],w[1],...w[n-1]。问题是能否从这n件物品中选择若干件放入此背包中使得放入的重
  12. Android 投影MAC,Vysor pro 破解
  13. 1959-打印镂空字符三角形
  14. 分享一下我作为技能型自由职业者的常用赚钱软件
  15. html动画(1)大白
  16. springboot状态机模式
  17. 递归算法详解——递归算法的三要素以及例题分析
  18. 1.Hadoop入门
  19. Kubernetes:基于命名行终端/ Web 控制台的管理工具 kubebox
  20. tomcat启动子容器启动失败tomcat org.apache.catalina.LifecycleException异常的解决办法

热门文章

  1. Android P 源码分析 4 - logd 的初始化
  2. 诺瓦星云更新招股书,继续上市进程,“学术派”的步步为盈?
  3. harmonyOS智慧屏,华为智慧屏S系列发布 宣布HarmonyOS全新升级
  4. POJ 1375 Intervals G++ 几何 背
  5. 一文概览 NLP 算法(Python)
  6. 最全控件,开发工具,国外软件
  7. 星极制冰机:坚持自主创新 赋能产业发展
  8. 银行卡图片和银行名字怎么对应
  9. html5 canvas文本,html5 canvas文本处理
  10. iPhone重绘机制drawRect