点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”
导读
这篇文章一出来就得到了广泛的关注,思路很清楚,解决了2个问题,效果也很好,关键是无差别涨点,值的一看。
摘要:一阶段物体检测对于包围框的质量的表示往往是直接预测框的质量,然后再和类别置信度结合起来使用。这篇文章深入研究了物体检测3个最基础的要素:质量的预测,类别和定位。发现了2个问题(1)质量预测在训练和推理中的不一致性。(2)当在复杂场景的情况下,物体的定位往往会出现不确定性和随意性,而物体位置的狄拉克分布对于表示这种不确定性和随意性不合适。为了解决这两个问题,这篇文章中对这三个要素设计了一种新的表示,将质量的预测放到类别预测当中去,这样就得到一个物体的定位质量和类别概率的联合表示,并可以使用一个向量来表示包围框的任意的分布。使用这种表示的时候,用到的标签是连续的,这样的话,Focal Loss就不适用了,于是,我们提出了Generalized Focal Loss,将Focal Loss扩展到了连续的场景中。
代码:https://github.com/implus/GFocal
1、介绍
物体检测的包围框的表示,现在一般用的是狄拉克分布。后来,为了预测框的质量,FCOS中引入了centerness的概念,用来表示框的质量,也确实带来了performance的提升,最后使用的时候,是将这个centerness和类别概率结合到一起使用的。而这种用法其实是有问题的:
训练和推理的时候,对定位质量和类别得分的使用方式不一致
1、定位质量得分和类别得分这两个东西在训练的时候是独立进行训练的,而在推理的时候是结合到一起的。如下图(a)。
2、对于定位质量的训练时只在匹配到的正样本上进行训练的,而对于负样本,也有可能会得到比较高的定位质量的得分。
由于这两个问题,就导致了训练和推理之间的gap,负样本也可能会有比较高的定位质量的得分,这样,结合起来的总的得分可能会排在正样本前面。如下图(a)。
包围框的表示方式的不够灵活
目前常用的包围框可以看成是狄拉克分布,但是这个分布没办法表示数据集中的一些不确定性,如图3。尽管现在有一些工作将包围框建模为高斯分布,但是这对于真实的包围框的分布来说还是太简单了。真实的包围框的分布可能会非常的随意,而不是向高斯分布那么对称。
因此,我们设计了一个新的包围框和定位质量得分的表示方式。对于定位得分的表示,我们将其合并到类别得分中,得到一个统一的表示方式:类别向量,其中,ground truth的类别index上的值就用来表示对应框的定位质量(在文中用的是预测框和对应的gt框的IOU值)。这样就可以端到端的进行训练,在推理的时候也可以直接使用,如图1(b)。这也很好理解,类别概率和定位得分的范围都是0~1,因此预测出来的这个概率即表示类别概率又表示定位质量在数学上是没问题的,关键是如何去利用这个定位质量的预测值。这样,训练和推理就一致起来了,而且,负样本的质量得分会被压制到0,总体的质量的预测会更加的可信。这对于dense的物体检测器尤为有用,因为这种检测器会在全图范围内对所有位置的得分进行排序。对于包围框的表示,我们提出了一种表示方式,可以表示任意的分布。在文中成为通用分布,Generalized Distribution,可以通过这种表示在连续的表示空间上直接学习到离散的概率分布,这样,可以得到更加准确和可信的包围框的预测。如图3。
对于dense的物体检测器,分类的分支一般会使用Focal Loss来优化,FL可以很好的处理类别的不均衡的问题,而对于我们提出的这种classification-IoU的联合表示,除了类别不均衡的问题之外,还有新的问题。IoU的label是0~1范围内连续的,而FL只支持0,1的离散label。我们通过将FL扩展到连续的label解决了这个问题,这个扩展的FL我们叫做GFL(Generalized Focal Loss)。这种GFL可以处理任意的连续的label值。在本文中,我们特别为定位质量和包围框分布设计了QFL(Quality Focal Loss)和DFL(Distribution Focal Loss)。
我们证明了GFL的3个优点:1、拉近了训练和推理之间的gap。2、很好的对包围框的分布进行了建模。3、不加入额外的计算量就可以提高性能。
2. 方法
Focal Loss的表示如下:
Quality Focal Loss
在标准的FL中,y的label是[0,1]是离散的,而在QFL中,y的label是连续的0~1,我们让负样本的时候y=0,而正样本的时候,0<y≤1,其中,y表示这个正样本的IoU值。需要注意的是,这个y值在训练过程中是变化的,因为每次预测的框都会不一样。如图4:
我们既要保留FL对于类别不均衡的优势,又要能够处理连续的label值,因此,对FL的扩展表现在两方面:1、交叉熵部分
,将其扩展到完全形式,
,2、每个样本的缩放因子
泛化为预测值和实际值之间的绝对值
,于是,我们得到了QFL的形式:
在y=0.5的时候,不同β的可视化的图如下,在文中,使用β=2:
Distribution Focal Loss
对于包围框,我们回归的目标是当前坐标点到4条边的距离,这好像也是和FCOS和ATSS不一样的地方,不过文章没怎么提这一点。见图4的回归分支,常规操作时将y作为狄拉克分布来回归,满足:
根据之前的分析,我们需要直接去学习一个任意的分布,而不是给定的先验分布如狄拉克分布和高斯分布之类的,因此,我们给与label y一个范围,
,参考上面的积分形式,我们可以给出y的预测值:
连续的积分形式是没办法用神经网络来实现的,需要改成离散形式,将这个范围分成一系列的小段,我们取间隔为Δ,文中,取Δ=1,因此,y的预测值可以表示为:
P(x)可以非常方便的使用softmax来实现,用Si来表示每个点的概率,但是,满足这个条件的分布有无穷多的可能性,如图5(b),这可能会降低学习的有效性,我们需要想办法让靠近目标y的点具有较高的概率,还有些情况下,真实的位置可能会距离标注的位置比较远(由于标注的不好的原因),因此,我们提出DFL,可以让网络快速的聚焦到y附近的位置上,这是通过明确的增大
和
的概率来实现的,这两个是最靠近y的两个值,并且,
,由于包围框的回归不涉及到正负样本的均衡问题,所以可以直接使用交叉熵的完全形式:
直觉上,DFL聚焦于增大y附近的点的概率,在最优解的情况下,只有
,y和
这三个点的概率不为零,其他点的概率都为0。
Generalized Focal Loss
上面连个loss,QFL和DFL,可以统一到GFL的形式下,假设用一个模型来预测两个变量, 和 的概率, 和 ,这两个概率的和为1,最终的预测是两者的线性组合,,对于的y的label是一个连续值,满足 ,GFL可以写成:
使用GFL来训练dense目标检测器
使用损失为:
其中,
是QFL,
是DFL,
是GIoU Loss,在实际中,我们使用质量得分来作为
和
的加权值。
3. 实验
效果不用说,直接上图:
在这里,主要有两个超参数,β和n,在ATSS中用的是β=2,n=14或16,基本上,只替换一下loss,就可以有1个点的提升。
—END—
论文链接:https://arxiv.org/abs/2006.04388
请长按或扫描二维码关注本公众号
喜欢的话,请给我个在看吧!