目标检测 YOLO 系列:你有我无 YOLOX

目标检测 YOLO 系列:你有我无 YOLOX

  • 目标检测 YOLO 系列: 开篇
  • 目标检测 YOLO 系列: 开宗立派 YOLO v1
  • 目标检测 YOLO 系列: 更快更准 YOLO v2
  • 目标检测 YOLO 系列: 持续改进 YOLO v3
  • 目标检测 YOLO 系列: 你有我有 YOLO v4
  • 目标检测 YOLO 系列: 快速迭代 YOLO v5
  • 目标检测 YOLO 系列:你有我无 YOLOX

作者:Zheng Ge
发表时间:2021
Paper 原文:YOLOX: Exceeding YOLO Series in 2021

1. 概览

那边 YOLOv5 还在不断更新,这边旷世 YOLOX 又开了新头了,真是一幅百舸争流啊。。。当然作为一名工业界的搬运工,还是很兴奋的,又有新的砖可以搬了。YOLOX 一出,各种公众号“吊打一切”,“秒天秒地” 的声音就出来了,真有这么神?作为一名搬运工,我觉得单从工业应用的角度,吸引力没有那么大,因为精度提升不大(一两个点的提升),推理速度相比 YOLOv5 同级网络还略有下降。

当然这不妨碍 YOLOX 中那些发光点。论文作者在知乎上也亲自上台推广 YOLOX,做了比较全面的梳理。所以如果不想看论文,看论文作者的科普应该好过看那些二道贩子的公众号:论文作者自述 YOLOX。我觉得这些发光点里最吸引我的还是 Anchor Free,所以我 YOLOX 最大的两点是你有(Anchor)我无 (Anchor)。另外 YOLOX 还直接做好了各个平台(trt, ncnn, openvino)的移植配套,真是贴心啊。特别对于移动端(板子)推出了轻量化模型 YOLOX-Nano, YOLOX-Tiny。

  • Anchor Free
  • Decoupled Head
  • SimOTA
  • End2End(最终没有采用)

2. 网络结构

作者尝试了多种 backbone,最好的还是 Modified CSP 效果最好。关于 网络结构这一块,推荐参考江大白的 深入浅出Yolo系列之Yolox核心基础完整讲解。

目标检测 YOLO 系列:你有我无 YOLOX_第1张图片
目标检测 YOLO 系列:你有我无 YOLOX_第2张图片
以上面的 YOLOX-Darknet53 的结构为例。YOLOX-Darknet53 的 Backbone(Darknet 53) 和 Neck(FPN) 部分和 YOLOv3 是一致的,变化比较大的是 Prediction 部分。

2.1 Decoupled Head

Decoupled Head 的结构如下所示。Decouple 指的是把 reg,obj 和 cls 分开处理,然后 concate。
目标检测 YOLO 系列:你有我无 YOLOX_第3张图片
作者通过实验发现 Decoupled Head 效果更好,但是增加了计算量,因此采用一个 1*1 的卷积降维减少计算量。
目标检测 YOLO 系列:你有我无 YOLOX_第4张图片

网络(在 COCO 数据集上)最后的输出维度为 85*8400 ,相比 YOLOv5 的输出 3*(20*20+40*40+80*80)*85,减少了 2/3 。

3. 网络原理

相比前面的 YOLOv3~5,由于采用了 Anchor Free,所以回有所不同。关于训练时标签分配的问题,对于标签分配这一块,江大白的 深入浅出Yolo系列之Yolox核心基础完整讲解 中也要图文并茂的讲解。

4. Loss

bbox 的位置损失函数是 IoU loss, 可以选择普通的 iou_loss 或者是 giou_loss。

obj_loss 和 cls_loss 都是采用的 BCE loss。

另外,江大白的文章中有提到,他在自己的数据集上尝试把 obj_output Loss 函数从原文中的 BCELoss 修改为 FocalLoss 后长点明显,这个可以作为一个尝试。

4. 后处理

YOLOX 的后处理相对于 YOLOv5 更为简洁。整理如下。需要注意的是在 YOLOX 的 head 部分,已经对预测的结果进行了部分处理,将 xywh 的值映射到了相对于输入图像尺寸的尺度(详细处理见下面的公式)。
目标检测 YOLO 系列:你有我无 YOLOX_第5张图片

参考

  • 论文作者自述 YOLOX
  • 深入浅出Yolo系列之Yolox核心基础完整讲解

你可能感兴趣的:(深度总结,深度学习,目标检测,yolo,yolox,网络结构,原理,总结)