目标检测:Generalized Focal Loss(NIPS2020)

Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection
CCF-A
Xiang Li/Wenhai Wang/Lijun Wu/Shuo Chen/Xiaolin Hu/JunLi/Jinhui Tang/Jian Yang
arXiv: Computer Vision and Pattern Recognition neural information processing systems Jun 2020

论文要解决单阶段目标检测中的两个问题:

1. 训练和推理时定位质量评估与分类分数是非一致的( Inconsistent usage of localization quality estimation and classification score between training and inference)

目标检测:Generalized Focal Loss(NIPS2020)
如上图左半边所示, 现有方法对分类分数和iou感知分数的训练与推理策略是不一致的,这可能会导致推理时出现论文figure2中的极端情况。理论上预测的IoU很高时cls分数也应该很高(框得很准那分类判断也应该不差),反之同理。文章提出的解决办法就是将两者合并为一个统一的表达,即一个单变量。为了更有效优化这种新的表达方式,作者基于Focal loss提出了 Quality Focal Loss (QFL)。

; 2. 边界框的表征是不够灵活的(Inflexible representation of bounding boxes)

目标检测:Generalized Focal Loss(NIPS2020)

在边界框回归任务中, 要回归的四个坐标是服从狄拉克δ分布(Dirac delta distribution)的网络的预测结果是这分布最高概率值所对应的横坐标,但由于遮挡阴影模糊等原因, groundtruth有时并不是那么可信,即其实边界应该是一种很模糊的情况,狄拉克δ分布不能很好表示这类情况,高斯分布也是同样的问题,无法应对所有情形。
作者提议通过直接学习边界框在其连续空间中四个离散化概率分布来表示边界框位置坐标的任意分布。这样可以得到更精准更可靠的边界框估计,同时学到更多潜在的分布。进而提出了 Distribution Focal Loss(DFL),基于任意和灵活的分布下,快速并专注于学习边界框连续位置周围的概率值。作者认为边界框的概率分布应该是如下图所示的:

目标检测:Generalized Focal Loss(NIPS2020)

作者根据两个问题所提出的解决方法统称为GFL,目前听着还是比较模糊,我们沿着文章思路对这两个问题继续进行更深入的解析:

目标检测:Generalized Focal Loss(NIPS2020)

Quality Focal Loss (QFL)

如上图中QFL所示,分类分支的标签y y y是soft one-hot 标签,某类的概率值代表了该类下预测框与gt的IoU,即预测框的质量, y ∈ [0, 1]。
首先回顾Focal loss:

目标检测:Generalized Focal Loss(NIPS2020)
其中的缩放因子( 1 − p t ) γ (1−pt)^{\gamma}(1 −pt )γ在训练中自动降低简单例子的贡献,提高困难例子的比重。
作者把FL的两个部分进行了扩展, 以用于学习soft one-hot或者说连续的概率值:
(1)交叉熵部分− log ⁡ ( p t ) – \log(p_{t})−lo g (p t ​) 扩展为了− [ ( 1 − y ) log ⁡ ( 1 − σ ) + y log ⁡ ( σ ) ] -[(1-y) \log (1-\sigma)+y \log (\sigma)]−[(1 −y )lo g (1 −σ)+y lo g (σ)], 其中 σ是类别的输出概率,经sigmoid得到。可以看做是将原式做了分解加权,标签y越接近1,log ⁡ ( σ ) ) \log (\sigma))lo g (σ)) 的权重就越大;y越接近0,log ⁡ ( 1 − σ ) \log (1-\sigma)lo g (1 −σ) 的权重就越大,两项系数和为1。
(2) 缩放因子( 1 − p t ) (1−pt)(1 −pt ) 泛化为σ到y的绝对距离,这个很好理解,FL中是σ到0或1的绝对距离。

最终得到QFL表达式如下:

目标检测:Generalized Focal Loss(NIPS2020)
作者在对比实验中包含以下几种cls 分数表征的形式,第一种的代表应该是RetinaNet,还有YOLO v1,第二种代表就是FOCS,第三种有YOLOv2,v3,v4,v5,yolox应该也属于第三种,但多了一个obj分支。在figure7的对比实验结果中,QFL大多取得了最佳结果。总之,这个部分的改进能使得训练与推理时cls分数的产生完全一致,在NMS中能得到更好的BBox。
目标检测:Generalized Focal Loss(NIPS2020)

; Distribution Focal Loss (DFL)

首先阐述传统的传统的BBox回归是将标签y y y建模为狄拉克δ分布(一个冲激函数的分布):

目标检测:Generalized Focal Loss(NIPS2020)
y y y 可以根据下式重建:
目标检测:Generalized Focal Loss(NIPS2020)
将分布推广到 P ( x ) P(x)P (x ),那么由上式,根据模型得到的任意分布 P ( x ) P(x)P (x ) ,则可以得到预测值 y ^ \hat{y}y ^​:
目标检测:Generalized Focal Loss(NIPS2020)
其中积分上下限是标签y y y的范围,将y y y的取值范围离散化为n+1个点,可得:
目标检测:Generalized Focal Loss(NIPS2020)
作者还说, P ( y i ) P(y_{i})P (y i ​)可以很简单地由n+1个单元的Softmax层实现,记作 S ( i ) S(i)S (i )。 同时,由于S ( i ) S(i)S (i )最终学到的主要是一个单峰值分布(大多数情况下gt的标签真实分布就是接近冲激函数的,只有较少情况比较模糊,分布会比较均匀)。因此,作者设计DFL迫使网络聚焦位于标签y y y附近的两个预测值y i y_{i}y i ​、y i + 1 y_{i+1}y i +1 ​对应的概率:S ( i ) S(i)S (i )、S ( i + 1 ) S(i+1)S (i +1 ):
目标检测:Generalized Focal Loss(NIPS2020)
因为边界框回归只针对正样本进行学习,不存在类别不平衡的问题,所以没有缩放因子项。看到这个式子不禁感叹真的巧妙。作者还给出了S的两个全局最小值解,以验证该损失的准确性。

Generalized Focal Loss (GFL)

QFL和DFL可以统一为一种形式,作者命名为GFL。
假定网络预测两个概率值为 p y l , p y r p_{y_{l}}, p_{y_{r}}p y l ​​,p y r ​​,这两个p对应的y为y l 和 y r y_{l}和y_{r}y l ​和y r ​,那么最终的预测值可表示为:
y ^ = y l p y l + y r p y r ( y l ≤ y ^ ≤ y r ) \hat{y}=y_{l} p_{y_{l}}+y_{r} p_{y_{r}}\left(y_{l} \leq \hat{y} \leq y_{r}\right)y ^​=y l ​p y l ​​+y r ​p y r ​​(y l ​≤y ^​≤y r ​)

那么GFL可写为:

目标检测:Generalized Focal Loss(NIPS2020)
作者在补充材料中证明了QFL和DFL是GFL的两个特例。我没看证明,写一下自己的理解,对于QFL
目标检测:Generalized Focal Loss(NIPS2020)
y l 和 y r y_{l}和y_{r}y l ​和y r ​分别为0和1,预测的两个概率分别为1-σ \sigma σ和σ \sigma σ来对应0和1的概率。
目标检测:Generalized Focal Loss(NIPS2020)
就是缩放系数项的幂次为0时的特例。
相比于传统的检测头,GFL对应的检测头有两大区别:
  • 在推理时直接将cls 分数作为NMS的排序分数,由于糅合了IoU感知,所以作为最后的NMS排序分数是很可靠的。
  • 回归分支的位置预测层不再是4个输出,而是4*(n+1)个数出,每(n+1)个输出预测一个位置信息的概率分布。

; 训练时的总损失函数定义为:

L = 1 N pos ∑ z L Q + 1 N pos ∑ z 1 { c z ∗ > 0 } ( λ 0 L B + λ 1 L D ) \mathcal{L}=\frac{1}{N_{\text {pos }}} \sum_{z} \mathcal{L}{\mathcal{Q}}+\frac{1}{N{\text {pos }}} \sum_{z} \mathbf{1}{\left{c{z}^{*}>0\right}}\left(\lambda_{0} \mathcal{L}{\mathcal{B}}+\lambda{1} \mathcal{L}_{\mathcal{D}}\right)L =N pos ​1 ​∑z ​L Q ​+N pos ​1 ​∑z ​1 {c z ∗​>0 }​(λ0 ​L B ​+λ1 ​L D ​)

Q , B , D \mathcal{Q}, \mathcal{B},\mathcal{D}Q ,B ,D 分别为QFL,GIoU los和DFL。N pos N_{\text {pos }}N pos ​为正样本数量,λ 0 和 λ 1 \lambda_{0}和\lambda_{1}λ0 ​和λ1 ​是两个超参,文中取2和0.25,用来平衡GIoU los和DFL。
这个1 { c z ∗ > 0 } \mathbf{1}{\left{c{z}^{*}>0\right}}1 {c z ∗​>0 }​是指在所有的z个多尺度特征图上只要cls分支的标签大于0该项就为1。

剩下部分主要是实验结果的展示了,就不赘述了。

我的理解:

对于文中的第一个问题,NMS时最佳的排序分数如果剔除类别置信度的影响,就应该是IoU,这样才能将回归最准确的框留下。关于这个问题VarifocalNet: An IoU-aware Dense Object Detector这篇21年的文章有更详细的相关实验设计。
对于第二个问题,之前没有意识到其实BBox回归预测的量其实就是个狄拉克δ分布,也没有看过将BBox回归量做为高斯分布的文章,这篇文章直接做成了任意分布的,而且还是用sofmax就能实现,还是蛮有趣的,感觉数学上很完整。同时很容易想到利用所得到的边界框离散概率分布进行回归质量评估,作者在GFL2中将其实现了。

Original: https://blog.csdn.net/kill2013110/article/details/126350226
Author: cartes1us
Title: 目标检测:Generalized Focal Loss(NIPS2020)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/687772/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球