YOLO X 改进详解
创始人
2024-04-14 22:56:43
0

YOLO X

主要改进:

  1. Anchor-Free: FCOS
  2. Decoupled detection head
  3. Advanced label assigning strategy

Network structure improvement

Decoupled detection head

对比于YOLO V5, YOLO X 在detection head上有了改进。YOLO V5中,检测头是通过卷积同时预测分类以及定位任务,即通过同一个卷积来处理。
在这里插入图片描述

YOLO X 则使用了解耦的检测头,即,分类,定位,置信度预测由不同的卷积层来处理。同时,YOLO X 是anchor free的检测器,因此对于定位的输出仅仅只有4个参数,这个区别于YOLO V5 anchor-based 检测,每个cell 是基于3个anchor进行定位预测。YOLO X的三个检测头的权重不共享。文中实验表明,采用解耦的检测头,网络更容易收敛且准确率有了一定的提高。
在这里插入图片描述

Anchor-free

对于定位模型预测4个数 (tx,ty,tw,th)(t_x, t_y, t_w, t_h)(tx​,ty​,tw​,th​). 因为是anchor-free,所以对于预测框的高度和宽度区别于YOLO V5基于anchor的缩放,在YOLO X中则是直接输出预测框的高和宽。
在这里插入图片描述

Loss Function

Loss function 包括三个部分,Class loss function, Region loss function, IoU loss function (置信度). 其中 class loss function 和 region class function 只计算正样本的损失。

LOSS=Lcls+λLreg+LobjNposLOSS = \frac{L_{cls} + \lambda L_{reg} + L_{obj}}{N_{pos}} LOSS=Npos​Lcls​+λLreg​+Lobj​​
其中NposN_{pos}Npos​表示这个feature map中被分为正样本的个数。λ\lambdaλ 是平衡系数,代码中给出的是5.0.

正负样本匹配 (SimOTA)

SimOTA 将匹配正负样本的过程看作最优传输的过程。通过cost function来筛选正样本。预测样本和GT之间的cost计算如下:
Cij=Lijcls+λLijregC_{ij} = L^{cls}_{ij} + \lambda L^{reg}_{ij}Cij​=Lijcls​+λLijreg​

  1. 初筛
    在计算cost之前,会对样本进行一次初步的筛选,得到正样本的候选区域。正样本的候选区域是以GT中心点围成的 5×5 的区域。

在这里插入图片描述

对于这个条件,在代码中也体现在cost function中,因此代码实现中的cost function如下,
Cij=Lijcls+λLijreg+γ(not_in_GTbox_and_center_area)C_{ij} = L^{cls}_{ij} + \lambda L^{reg}_{ij} + \gamma (not\_in\_GTbox\_and\_center\_area)Cij​=Lijcls​+λLijreg​+γ(not_in_GTbox_and_center_area)
代码中的,λ,γ\lambda, \gammaλ,γ 分别为3,100000。对于不在GT box以及候选框内的预测点给予一个很大的cost.

  1. 获取n_candidate_k,这个值是在10和预选框候选数中取最小
    n_candiate_k=min(10,in_Box_num)n\_candiate\_k=min(10, in\_Box\_num)n_candiate_k=min(10,in_Box_num)
  2. 计算预选的正样本与当前gtbox的IoU. 按从大到小的顺序排列选择前 n_candiate_kn\_candiate\_kn_candiate_k 个预选框的IoU值作为 topk_ioustopk\_ioustopk_ious。
  3. 通过IoU值计算dynamic_ks,这是一个动态的预选框选择,不同的GT这个值是不一样的。
    dynamic_ks=torch.clamp(topk_ious.sum(1).int(),min=1)dynamic\_ks = torch.clamp(topk\_ious.sum(1).int(), min=1)dynamic_ks=torch.clamp(topk_ious.sum(1).int(),min=1)
  4. 计算预选正样本的cost,并从小到大进行排序,选择topdynamic_kstop \ dynamic\_kstop dynamic_ks 个样本作为正样本。
  5. 如果同一个预选正样本分配给了不同的GT,则选择最小cost的那一个,其他的忽略。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...