《Generalized Focal Loss V1》论文笔记

参考代码:GFocal

这篇文章会探讨将目标检测中边界框的回归问题转换为概率分布的问题,因而需要从传统的边界框范数与IoU回归思想转换到边界框的概率分布上来。对此,对这方面内容不是很理解的朋友可以参考下面这篇文章的内容,从而对加深这篇文章提出GFocal优化方法的理解:
REF:一文了解目标检测边界框概率分布

同时,这篇文章的作者也有对这篇文章进行了说明,详见:大白话 Generalized Focal Loss

1. 概述

导读:让目标检测网络实现对检测质量的感知,是之前一些检测算法努力追求的目标。总结之前的工作,文章对于目标检测质量感知和边界框定位中存在的问题归纳为如下两点:
1)在之前的工作中有IoUNet使用IoU predictor,以及Focos使用Center-ness作为额外检测质量评估的参考维度之一。但是它们存在的共性都是在训练的时候单独进行训练,但是在测试的时候却联合起来,这并不是端到端的,因而其中难免会存在gap;
2)在之前的工作中普遍使用范数或是IoU作为监督度量,通过这些监督度量能够在大多数的场景下取得不错的结果,但是一些模糊或是存在歧义的场景下就会存在问题,导致定位不准确;
对此,文章的方法对检测质量感知的改进是通过将目标的类别与IoU预测结合起来作为检测质量评价,并带入网络进行联合学习。对于检测定位的过程中存在歧义的问题通过引入4个回归变量的概率分布进行表示,从而提升对于这些情况下的定位准确度,并且文章越策概率分布的时候并没有引入YOLO-Gaussian那样的强先验,从而增加了对于复杂概率分布建模的能力和灵活性。在优化的层面上文章引入Focal Loss中的优化策略,将原本离散的 { 0 , 1 } \{0,1\} { 0,1}Focal loss问题转化为连续的 [ 0 , 1 ] [0,1] [0,1]通用优化,从而构建对于目标检测框质量(QFL:Quality Focal Loss)和定位概率分布 (DFL:Distribution Focal Loss)的有效优化。并在它俩的基础上提出了一种具有统一泛化特性的Focal Loss形式,也即是文章中提到的GFL(Generalized Focal Loss)。

文章对于算法改进的Insight主要是基于如下的两点观察:

  • 1)在使用IoU预测的网络中,会存在IoU预测值很大但是其分类置信度比较低的情况,也就是下图中的图a,对分类置信度和IoU预测值进行分布可视化得到图b:
    在这里插入图片描述
    从上图中可以看出在IoU预测值和分类置信度组合并不是一个严格的线性关系的,因而就存在一些低质量的预测结果存在与最后的检测算法输出结果中(组合起来的置信度使用NMS不能将其排除)。而这样的架构使用的IoU和分类分支是相互独立训练的,只是在测试的时候将其组合起来,其流程见下图a图。对此,文章将两者组合起来,这样端到端完成训练(见图b),排除训练与预测的gap;
    在这里插入图片描述
  • 2)在下图中一些目标边界模糊和歧义的场景下检测的边界并不是很好确定,对此文章将边界的回归问题转换为边界概率分布的估计问题,从边界概率分布的角度实现更加准确的目标边界预测;
    在这里插入图片描述

2. 方法设计

2.1 整体pipline

下图左图中展示了常见的目标检测回归机制,边界框定位使用的是Dirac分布,类别是用的是one-hot形式,并没有与边界框的质量进行联合感知。
在这里插入图片描述
而上图的右图是文章提出的方案,对于边界框定位使用任意概率分布的形式拟合,并且在类别预测中添加了对IoU的感知能力,从而构造soft one-hot标签。

2.2 Focal Loss属性的实现与统一

2.2.1 QFL

按照文章的内容这部分是在原有分类任务的基础上添加对于检测质量(IoU)的感知,对此需要将分类与IoU度量组合起来。从值域来讲分类是 { 0 , 1 } \{0,1\} { 0,1}的离散变量,而IoU是 [ 0 , 1 ] [0,1] [0,1]的连续变量,则将其组合之后其值域也是 [ 0 , 1 ] [0,1] [0,1]的连续变量。参考原有Focal loss的范式:
F L ( p ) = − ( 1 − p t ) γ l o g ( p t ) FL(p)=-(1-p_t)^\gamma log(p_t) FL(p)=(1pt)γlog(pt)
其中,
p t = { p , if y=1 1 − p , if y=0 p_t = \begin{cases} p, & \text{if y=1} \\ 1-p, & \text{if y=0} \end{cases} pt={ p,1p,if y=1if y=0
那么要将IoU与分类组合起来,原有的softmax激活就适合了,需要将其置换为sigmoid激活函数,其输出标记为 σ \sigma σ,则将其按照Focal Loss的思想添加Focal属性便得到:
Q F L ( σ ) = − ∣ y − σ ∣ β ( ( 1 − y ) l o g ( 1 − σ ) + y l o g ( σ ) ) QFL(\sigma)=-|y-\sigma|^\beta((1-y)log(1-\sigma)+ylog(\sigma)) QFL(σ)=yσβ((1y)log(1σ)+ylog(σ))
其中, β = 2 \beta=2 β=2是focal因子。

PS: 这里说到的组合是如下的形式:
y i = { I o U ( b p r e d , b g t ) , if i=c 0 , otherwise y_i = \begin{cases} IoU(b_{pred},b_{gt}), & \text{if i=c} \\ 0, & \text{otherwise} \end{cases} yi={ IoU(bp

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Generalized Focal Loss是一种处理不平衡数据集的损失函数,它在传统的Focal Loss上进行了改进,可以用于多分类和回归任务。YoloV5是一种目标检测算法,它采用一种基于单个神经网络的方法来实现快速而准确的目标检测。结合使用Generalized Focal Loss和YoloV5可以进一步提升目标检测的性能。 在目标检测任务中,不同类别的样本数量往往是不平衡的,一些常见的类别可能会有很多样本,而一些罕见的类别可能只有极少数样本。对于这种情况,使用传统的交叉熵损失函数可能会导致网络偏向于训练样本数量较多的类别,而对于那些样本数量较少的类别则表现不佳。 Generalized Focal Loss采用了类似于Focal Loss的方法来处理不平衡数据集,该方法通过降低容易分类的样本的权重来提高难以分类的样本在训练过程中的重要性。此外,Generalized Focal Loss还添加了一些参数来控制样本难度的权重,这提高了模型对于罕见类别的识别能力。 结合Generalized Focal Loss和YoloV5可以进一步提高目标检测性能。YoloV5现有的版本已经使用Focal Loss来处理类别不平衡的问题,但使用Generalized Focal Loss可以更加灵活地进行参数调节。通过用Generalized Focal Loss替换原有的损失函数,可以减少误分类样本的影响,提高整个模型对于样本数量较少的类别的识别能力,从而进一步提高整个目标检测系统的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值