YOLOX的解耦头结构思考

问题

YOLOX提出了一个Decoupled Head结构以代替YOLO Head,进而在YOLOv3 baseline的基础上提升了1.1个百分点的mAP,那为什么解耦头结构就能够提升检测效果呢
YOLOX的解耦头结构思考_第1张图片
YOLOX的解耦头结构思考_第2张图片

调研

我主要在YOLOX原论文讲述Decoupled Head这一部分,找到了引用的两篇文献,并加以解读。
第一篇文献是Song等人在CVPR2020发表的“Revisiting the Sibling Head in Object Detector”。
文中提出了,在目标检测的定位和分类任务中,存在spatial misalignment的问题,我的理解是两个任务所聚焦和感兴趣的地方不同分类更加关注所提取的特征与已有类别哪一类最为相近,而定位更加关注与GT Box的位置坐标从而进行边界框参数修正。因此如果采取用同一个特征图进行分类和定位,效果会不好,即所谓的misalignment的问题。
下图是原论文的一张图,旨在展示分类和定位所关注的内容是不一致的
YOLOX的解耦头结构思考_第3张图片
第二篇文献是Wu等人(也是旷视的团队)在CVPR2020发表的“Rethinking Classification and Localization for Object Detection
文中重新对检测任务中的分类和定位两个子任务进行解读,结果发现:fc-head更适合分类任务,conv-head更适合定位任务,如下面图表结果所示。
第一行是对于分类任务而言,红色是fc-head,蓝色是conv-head,可以看到,在分类的分数上,fc-head显然更具优势,特别对于small objects;
第二行是对于定位任务而言,可以看到,在边界框回归IOU值上,conv-head更具优势。
YOLOX的解耦头结构思考_第4张图片
基于上述的实验结果,该文章设计了一个Double-Head的结构(应该YOLOX的解耦头结构的灵感就是从这里来的),来提升检测的效果。
YOLOX的解耦头结构思考_第5张图片
从实验结果中也可以看到,使用这种Double-Head的结构,可以将mAP提升2-3个百分点,效果还是很不错的!
YOLOX的解耦头结构思考_第6张图片

总结

回到最初的问题:解耦头为何能够提升检测效果?
解耦头结构考虑到分类和定位所关注的内容的不同,比如上述Wu等人的论文所展示的。因此采用不同的分支来进行运算,有利于效果的提升!

我认为这就是一个探索的过程。这种共享的头结构最初在Fast RCNN论文中提出,一步到位,可大大提升检测速度,因此当时主要注重速度上的提升。
随着应用的逐渐广泛,包括单阶段、双阶段检测网络的发展,研究人员也逐渐在检测效果上寻找各种能提升的空间。那么对于这种耦头结构,通过实验现象和相关结果可以看到其局限性,因此研究人员提出了诸如Double-Head的结构来提升效果。
同时为了避免计算量的大量增加,比如YOLOX的Decoupled Head结构,会先进行1x1的降维操作,然后再接上分类和定位两个分支,做一个检测效果和速度的trade-off,这也是很常见的一个思路!

附:3篇论文的链接

YOLOX: Exceeding YOLO Series in 2021
Revisiting the Sibling Head in Object Detector
Rethinking Classification and Localization for Object Detection

你可能感兴趣的:(深度学习,机器学习,pytorch)