点击上方蓝字关注我们
计算机视觉研究院专栏
作者:Edison_G
YOLOX在YOLO系列的基础上做了许多有意思的工作,其主要贡献在于:在YOLOV3的基础上,引入了“Decoupled Head”,“Data Augmentation”,“Anchor Free” 和“SimOTA样本匹配”的方法,构建了一种anchor-free的端到端目标检测框架,并且达到了顶级的检测水平。
公众号ID|ComputerVisionGzq
学习群|扫码在主页获取加入方式
关注并星标
从此不迷路
计算机视觉研究院
1
前言
YOLOX在YOLO系列的基础上做了许多有意思的工作,其主要贡献在于:在YOLOV3的基础上,引入了“Decoupled Head”,“Data Augmentation”,“Anchor Free” 和“SimOTA样本匹配”的方法,构建了一种anchor-free的端到端目标检测框架,并且达到了顶级的检测水平。
以在大量模型中获得最先进的结果:对于YOLONano仅0.91M参数和1.08G FLOPs,研究者在COCO上获得25.3%AP,超过NanoDet 1.8%AP;对于业界应用最广泛的检测器之一YOLOv3,在COCO上将其提升至47.3% AP,比当前最佳实践高3.0% AP;对于参数量与YOLOv4-CSP、YOLOv5-L大致相同的YOLOX-L,研究者在Tesla V100上以68.9FPS的速度在COCO上实现了50.0% AP,比YOLOv5-L高出1.8% AP。此外,研究者使用单个YOLOX-L模型赢得了Streaming Perception Challenge(CVPR 2021自动驾驶研讨会)的第一名。
2
背景
我们是在去年底萌生优化YOLO系列的想法的,那时候我们组刚完成了AutoAssign,LLA,DeFCN,IQDet,OTA等工作,在基础检测尤其是Anchor Free和Label Assignment方向有一些自己的理解。而那时候的YOLO系列还停留在Anchor Based阶段,样本匹配也采用的是基于几何先验的一对一或一对N的方案上。而随后出现的各项工作也基本是在往大输入分辨率和大模型的方向走。基于这样的大背景,我们决定启动YOLOX项目,想知道学术研究与工程落地到底能碰出什么样的火花。
——摘自于《链接:https://www.zhihu.com/question/473350307/answer/2021031747》
用于YOLOX和其他最先进目标检测器的精确模型(顶部)和移动设备上lite模型的尺寸精度曲线(底部)的速度-精度权衡。
YOLOX的设计,在大方向上主要遵循以下几个原则:
所以大家可以看到,首发的YOLOX没有deformable conv,没有用额外数据做pretrain,没有momentum=0.937。回到YOLOX设计的具体细节上,认为与之前YOLO最大的区别在于Decoupled Head,Data Augmentation,Anchor Free和样本匹配这几个地方。下面将从这几个方面展开聊。
3
YOLOX-新框架
Decoupled Head
Decoupled Head是学术领域一阶段网络一直以来的标准配置(RetinaNet,FCOS等)。相比于它朴素的实现方法,“解耦头”这个词显得有些高大上。研究者一开始并没有计划对检测头进行解耦,而是在将YOLOX推进到“端到端(无需NMS)”时发现,不论调整损失权重还是控制梯度回传,End2end的YOLOX始终比标准的YOLOX低4~5个点( 如下表 ),这与在DeFCN里获得的认知不符。
偶然间研究者把原始的YOLO Head换成decoupled head,发现这里的差距又显著缩小了,这样的现象说明当前YOLO Head的表达能力可能有所欠缺。于是将decoupled hea 应用到了非End2End的YOLO上,结果就如下图的所示:不仅在峰值的性能有所提升,收敛速度也明显加快。结合之前End2end的实验,这两个现象充分说明YOLO系列一直以来使用的检测头可能是不合理的。
实验表明,解耦合检测头能加快模型收敛速度、提高检测精度,同时也会带来一点额外的参数量和计算成本:
表面上看,Decoupled Head提升了YOLOX的性能和收敛速度,但更深层次的,它为YOLO与检测下游任务的一体化带来可能:例如,YOLOX+Yolact/CondInst/SOLO,可实现端侧的实例分割;YOLOX + 34层输出,实现端侧人体的 17 个关键点检测。
以往或许已经有一些这方面的工作,但这些领域的SOTA依然拥有他们特殊的结构设计,使得该领域无法直接享用到YOLO系列发展的成果。如今一个打开了枷锁的检测头,我们认为会让YOLO与检测的下游任务更深层次的结合,为检测与下游任务的端到端一体化带来一些变化。
Data Augmentation
Data Augmentation里面需要强调的一点是:要在训练结束前的15个epoch关掉Mosaic 和Mixup ,这对于YOLOX非常重要。可以想象,Mosaic+Mixup生成的训练图片,远远脱离自然图片的真实分布,并且Mosaic大量的crop操作会带来很多不准确的标注框,见下图:
当模型容量足够大的时候,相对于先验知识(各种 tricks,hand-crafted rules ),更多的后验(数据/数据增强)才会产生本质影响。通过使用 COCO 提供的 ground-truth mask 标注,作者在 YOLOX 上尝试了 Copypaste,下表表明,在 48.6mAP 的 YOLOX-Large 模型上,使用 Copypaste 带来0.8%的涨点。
但是Copypaste的实现依赖于目标的mask标注,而mask标注在常规的检测业务上是稀缺的资源。而由于MixUp和Copypaste有着类似的贴图的行为,还不需要mask标注,因此作者在Mixup上进行了修改,实现了在原理上更接近Copypaste的Mixup数据增强方式。
Anchor Free
Anchor Free的好处是全方位的:
至于为什么Anchor Free现在可以上YOLO ,并且性能不降反升,这与样本匹配有密不可分的联系。与Anchor Free比起来,样本匹配在业界似乎没有什么关注度。但是一个好的样本匹配算法可以天然缓解拥挤场景的检测问题( LLA、OTA里使用动态样本匹配可以在CrowdHuman上提升FCOS将近10个点),缓解极端长宽比的物体的检测效果差的问题,以及极端大小目标正样本不均衡的问题。甚至可能可以缓解旋转物体检测效果不好的问题,这些问题本质上都是样本匹配的问题。
下期我们简单再说说YOLOX的部署支持及端到端!
4
实验
在COCO数据集上的速度及精度比较
© THE END
转载请联系本公众号获得授权
计算机视觉研究院学习群等你加入!
计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!
扫码关注
计算机视觉研究院
公众号ID|ComputerVisionGzq
学习群|扫码在主页获取加入方式
源代码|关注并回复“yolox”获取源代码
往期推荐
🔗