本文详细阐述了旋转目标检测的主要问题,将旋转回归目标定义为高斯分布,用Wasserstein距离度量高斯分布之间的距离进行训练。目前,在常规目标检测中,将回归转换成概率分布函数的方法有很多。这篇论文有异曲同工之妙,值得一读。
来源:肖飞算法工程笔记微信官方账号
论文:用高斯wasserstein距离损失重新思考旋转物体检测
论文地址:https://arxiv.org/abs/2101.11952论文代码:https://github.com/yangxue0827/RotationDetectionIntroduction
具有任意方向的目标在检测数据集中无处不在。与水平目标检测相比,旋转目标检测还处于起步阶段。目前大部分SOTA研究集中在回归目标的旋转角度,但求解旋转角度带来了新的问题:I)指标与损失不一致。Ii)旋转角度的回归区间是不连续的。三)平方问题。实际上,上述问题并没有很好的解决方法,这将极大地影响模型的性能,尤其是当角度处于范围的边界时。
为了解决上述问题,本文提出了GWD方法。首先用二维高斯分布对旋转目标建模,然后用高斯瓦瑟斯坦距离(GWD)代替不可微的旋转IoU,根据GWD计算损耗值,从而使模型训练与测量标准对准。
本文的主要贡献如下:
总结了旋转目标检测的三个主要问题。使用Gaussian Wasserstein Distance(GWD)描述旋转bbox间的距离,再用GWD计算代替IoU损失的loss,且是可微的。GWD-based损失能够解决旋转角度范围不连续问题和方形问题,且对bbox的定义方式没有要求。在多个公开数据集上进行测试,论文的方法均有不错的表现。Rotated Object Regression Detector RevisitBounding Box Definition
图2给出了旋转bbox的两种定义:OpenCV形式和长边形式,其中前者的角度为与横坐标的夹角,后者的角度为长边与横坐标的夹角。这两种定义可以相互转换(不考虑中心点):
这两种表示法的主要区别在于边的顺序和角度。同一个bbox用不同的方式表达,可能需要将边的顺序或角度交换90°。在许多研究中,模型的设计与bbox的定义相耦合,以避免特定的问题:例如,可以避免平方问题,可以避免边交换问题。
Inconsistency between Metric and Loss(指标与损失不一致问题)
IoU是检测领域的重要评价指标,但实际训练中使用的回归损失函数(如-范数)往往与评价指标不一致,即损失值越小并不意味着性能越高。目前,在水平目标检测领域已经出现了一些处理不一致性问题的措施,如欧弟和吉欧。在旋转目标检测领域,由于角度回归的加入,不一致性问题更加突出,但仍然没有很好的解决方法。本文还列举了一些例子来比较欠条损失和平滑L1损失:
Case 1: 角度差值与损失值之间的关系,曲线几何都是单调的,但只有ooth L1曲线是凸曲线,能优化到全局最优解。Case 2:长宽比差异与损失值之间的关系,ooth-l1损失值是固定的(主要来自于角度差异),而IoU损失则随着横轴剧烈变化。Case 3:中心点偏移对损失值的影响,曲线都是单调的,但ooth L1曲线与差值大小没有高度一致。
从上面的分析可以看出,在旋转目标检测领域,IoU损耗可以更好的填补评价标准和回归损耗的差异。不幸的是,在旋转目标检测领域,两个旋转bbox之间的IoU的计算是不可微的,并且不能用于训练。因此,本文在Wasserstein距离的基础上,提出了一种可微损失代替IoU损失,同样可以解决旋转角回归区间的不连续问题和平方问题。
Boundary Discontinuity and Square-Like Problem(旋转角度回归区间不连续以及方形问题)
上图中的案例1-2总结了旋转角度回归区间的不连续性。以OpenCV形式的案例2为例,anchor和GT有两种回归方法:
way1逆时针旋转一个小角度即可,预测结果为,但由于角度的周期性(PoA)和边顺序交换(EoE),若使用ooth L1损失函数,这个结果与GT间会产生巨大的损失值。另外,这个角度也超出了预定的角度范围。选择way2则需要在缩放宽高的同时,顺时针旋转一个大的角度。
上述问题通常发生在锚与GT的角度处于角度范围的边界位置时,而当锚与GT的角度不在边界位置时,way1不会产生巨大的损失值。因此,对于光滑L1,边界角和非边界角的最优处理会过于一致,这也会阻碍模型的训练。
正方形问题主要出现在使用长边形状的检测方法中。因为正方形目标没有绝对的长边,所以长边形式对正方形目标本身的表达并不唯一。以案例3为例,有anchor和GT,way1可以顺时针旋转一个小角度,使其位置与GT一致。但由于角度差距较大,way1会产生较高的回归损耗。所以需要像way2一样逆时针旋转一个大角度。造成平方问题的主要原因不是上面说的PoA和EoE,而是度量标准和损失计算的不一致。
The Proposed Method
经过以上分析,本文希望新的旋转目标检测方法的回归损失函数满足以下几点:
Requirement1: 与IoU度量标准高度一致。Requirement2: 可微,允许直接学习。Requirement3: 对角度回归范围的边界场景更为平滑。Wasserstein Distance for Rotating Box
目前,大多数IoU损耗可以看作是距离函数。基于此,本文提出了一种新的基于Wasserstein距离的回归损失函数。首先,旋转bbox被转换成二维高斯分布:
是旋转矩阵和特征值的对角向量。对于上任意两个概率度量的和,Wasserstein距离可以表示为:
公式2计算所有随机向量组合,代入高斯分布,转换为:
请特别注意:
考虑到可交换的情况(水平目标检测),等式3可以转换成:
对于Frobenius范数,这里的bbox是水平的,等式5类似于-范数损失,说明Wasserstein距离与水平检测任务中常用的损失一致,可以用于回归损失。这里的公式计算比较复杂,有兴趣可以看看参考文献。
Gaussian Wasserstein Distance Regression Loss
本文采用非线性变换函数将GWD映射为,得到一个类似于IoU损耗的函数:
前面的图也描述了不同非线性函数下的损失函数曲线。可以看出,公式6非常接近IoU损耗曲线,也可以测量非交叉bbox。所以公式6显然可以满足Requirement1和Requirement2。让我们开始分析需求3,首先给出公式1的特征:
根据特性1,GWD损失函数等于OpenCV形式和长边形式,即模型不需要固定一个特定的bbox表达式进行训练。以情况2的方式1为例,GT和forecast具有相同的均值和方差,GWD损失函数不会输出较大的损失值。根据特征2和3,情况2和情况3的方式1不会产生大的损失值,因此GWD损失函数也满足要求3。
总体而言,GWD在旋转目标检测方面的优势如下:
GWD使得bbox的不同定义形式相等,保证模型能够专注于准确率提升,不需要顾忌bbox的定义形式。GWD是可微的IoU损失替代方案,与检测指标高度一致。而且,GWD可以度量无相交bbox间的距离,类似于GIoU和DIoU的特性。GWD避免了旋转角度回归区间不连续问题和方形问题,降低了模型的学习难度。Overall Loss Function Design
本文采用RetinaNet作为基本检测器,bbox表示为OpenCV,回归目标定义为:
变量的分布,,代表GT,锚和预测结果,最终的多任务损失函数为:
是锚号,前景或背景的指示器,预测bbox,GT,GT的标签,预测标签,超参数,焦损。
Experiments
针对具体问题比较其他解决方案。
在DOTA数据集上比较多个模型,文中还有很多其他的实验,有兴趣可以去看看。
Conclusion
本文详细阐述了旋转目标检测的主要问题,将旋转回归目标定义为高斯分布,用Wasserstein距离度量高斯分布之间的距离进行训练。目前,在常规目标检测中,将回归转换成概率分布函数的方法有很多。这篇论文有异曲同工之妙,值得一读。
参考内容Wasserstein distance between two Gaussians – https://djalil.chafai.net/blog/2010/04/30/wasserstein-distance-between-two-gaussians/
如果这篇文章对你有帮助,请喜欢或者观看~
更多内容请关注微信微信官方账号【肖飞的算法工程笔记】。
工作生活平衡。