YOLOX的解耦头结构思考
问题
YOLOX提出了一个Decoupled Head结构以代替YOLO Head,进而在YOLOv3 baseline的基础上提升了1.1个百分点的mAP,那为什么解耦头结构就能够提升检测效果呢?
调研
我主要在YOLOX原论文讲述Decoupled Head这一部分,找到了引用的两篇文献,并加以解读。
第一篇文献是Song等人在CVPR2020发表的“Revisiting the Sibling Head in Object Detector”。
文中提出了,在目标检测的定位和分类任务中,存在spatial misalignment的问题,我的理解是两个任务所聚焦和感兴趣的地方不同,分类更加关注所提取的特征与已有类别哪一类最为相近,而定位更加关注与GT Box的位置坐标从而进行边界框参数修正。因此如果采取用同一个特征图进行分类和定位,效果会不好,即所谓的misalignment的问题。
下图是原论文的一张图,旨在展示分类和定位所关注的内容是不一致的!
第二篇文献是Wu等人(也是旷视的团队)在CVPR2020发表的“Rethinking Classification and Localization for Object Detection”
文中重新对检测任务中的分类和定位两个子任务进行解读,结果发现:fc-head更适合分类任务,conv-head更适合定位任务,如下面图表结果所示。
第一行是对于分类任务而言,红色是fc-head,蓝色是conv-head,可以看到,在分类的分数上,fc-head显然更具优势,特别对于small objects;
第二行是对于定位任务而言,可以看到,在边界框回归IOU值上,conv-head更具优势。
基于上述的实验结果,该文章设计了一个Double-Head的结构(应该YOLOX的解耦头结构的灵感就是从这里来的),来提升检测的效果。
从实验结果中也可以看到,使用这种Double-Head的结构,可以将mAP提升2-3个百分点,效果还是很不错的!
总结
回到最初的问题:解耦头为何能够提升检测效果?
解耦头结构考虑到分类和定位所关注的内容的不同,比如上述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
YOLOX的解耦头结构思考相关推荐
- 改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv5 | 涨点杀器
改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv5 论文地址:https://arxiv.org/abs/2107.08430 文章目录 改进YOLOv5 | 头部解耦 | 将Y ...
- 即插即用! | 国防科大联合慕尼黑工业大学提出新型解耦头 TSCODE: 助力目标检测器轻松涨点!
Title: Task-Specific Context Decoupling for Object Detection Paper: https://arxiv.org/pdf/2303.01047 ...
- YOLOv5改进添加解耦头、ASFF
网上有很多添加解耦头的博客,在此记录下我使用解耦头对YOLOv5改进,若侵权删 解耦头的介绍过段时间再写,先直接上添加方法(这篇文章写的很好,解释了解耦头的作用) ASFF我没有使用过,但是按照下边的 ...
- 【旧文章搬运】Win7可变对象头结构之InfoMask解析
原文发表于百度空间,2010-08-11 ========================================================================== 对Win ...
- #获得请求来源ip_以太网数据包TCP、IP、ICMP、UDP、ARP协议头结构详解
以太网首部 目地MAC地址(8字节) 源MAC地址(8字节) 类型(2字节) 1.IP头的结构 版本(4位) 头长度(4位) 服务类型(8位) 封包总长度(16位) 封包标识(16位) 标志(3位) ...
- ip tcp udp mpeg4头结构的定义
IP包头结构浅析 版本号(Version):长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),IPv6的值(0110) IP包头长度(Header Length):长度4比特 ...
- 【读书笔记】《结构思考力》——李忠秋
前言 把每一个问题都用结构化的思维去尝试解决,这就是结构思考力,包括横向和纵向两个方面: 结构思考力可以帮助我们构化一个结构,在表达核心观点的基础上,有理有据.条理分明地证明这个观点,使我们能 ...
- bitmap 位图 头结构
转自:http://www.cnblogs.com/lzlsky/archive/2012/08/16/2641698.html 位图BITMAPINFOHEADER 与BITMAPFILEHEADE ...
- 结构思考力系列:透过结构看清晰思考(转载)
原创连接:https://37wiki.37wan.com/pages/viewpage.action?pageId=42222129 [作者]:看原文链接 一.理念篇:透过结构看世界 1.透过结构看 ...
最新文章
- Java编程笔试时输入问题:如何输入固定长度、不定长度的一维数组?如何输入固定长度、不定长度的二维数组?
- 谈谈考研复试的一些经验和建议
- 三菱d700变频器接线图_图解PLC与变频器通讯接线
- 开放、普惠、高性能-SLS时序存储助力打造企业级全方位监控方案
- 复习---使用基础语法实现栈及迭代
- CenterNet+ deepsort实现多目标跟踪
- 计算机科学与技术考研多少分算高分,清华计算机科学与技术系考研初复试高分经验分享...
- C#问题——interface class
- 7类数据分析常见的统计陷阱,快来排雷!
- linux安装mysql8.0.18_详解mysql8.018在linux上安装与配置过程
- 【转】MongoDB:C#应用
- 数字高程信息30m分辨率SRTM DEM数据下载与拼接(ENVI)
- Ubuntu 禁止集成noueavu驱动并安装NVIDIA显卡驱动
- Android API19 设置Alarm闹钟
- 用python实现分段函数_python:集成分段函数
- web安全之Webshell管理工具
- 怎么抓雷电模拟器的包_fiddler+雷电模拟器进行APP抓包(可抓HTTPS)
- 用vim编辑时怎么复制粘贴外部内容(在ubuntu操作系统中)
- 谷歌adsense作弊的方法
- 新手!亚马逊店铺刚下来就被封,什么原因