摘要
https://arxiv.org/pdf/2101.11952
边界不连续性及其与最终检测指标的不一致性,一直是旋转检测回归损失设计的瓶颈。在本文中,我们提出了一种基于高斯 Wasserstein 距离的新型回归损失,作为解决该问题的基本方法。具体而言,将旋转边界框转换为二维高斯分布,这样就能够利用可通过梯度反向传播高效学习的高斯 Wasserstein 距离(GWD)来近似不可微分的旋转交并比(IoU)诱导损失。即使两个旋转边界框之间没有重叠(这在小目标检测中很常见),GWD 仍能为学习提供有效信息。得益于其三个独特性质,无论边界框如何定义,GWD 都能优雅地解决边界不连续性和类矩形问题。在五个数据集上使用不同检测器进行的实验表明了我们方法的有效性。代码已公开[2]。
1. 引言
在各种视觉数据集(如航空图像[65,2, 8, 69]、场景文本[83,31,20,35,27]、人脸[47]和三维物体[79]、零售场景[5, 41]等)中,任意方向目标的检测十分普遍。与水平目标检测方面的大量文献[13, 44, 28,29,6]相比,有向目标检测的研究相对处于早期阶段,仍有许多待解决的问题。
GWD 优雅地将模型学习与最终检测准确率指标相匹配,这在现有旋转检测器中一直是一个瓶颈且尚未实现。基于 GWD 的检测器不受边界不连续性和类矩形问题的影响,并且这种影响与边界框协议的定义方式无关,如图 1 右侧所示。本文的亮点有四个方面:
i) 我们总结了现有旋转检测器存在的三个缺陷,即由于基于回归的角度预测特性导致的指标与损失不一致性、边界不连续性和类矩形问题。
ii) 我们提出用高斯 Wasserstein 距离(GWD)来建模旋转边界框距离,从而得到一个近似且可微分的 IoU 诱导损失。它通过将模型学习与准确率指标对齐来解决损失不一致性问题,从而自然地改进了模型。
iii) 基于 GWD 的损失可以优雅地解决边界不连续性和类矩形问题,无论旋转边界框如何定义。相比之下,大多数同行工作[66, 64]的设计与边界框的参数化方式紧密相关。
iv) 在五个公共数据集和两个流行检测器上进行的广泛实验结果表明了我们方法的有效性。源代码[70, 84]已公开。
2. 相关工作
在本文中,我们主要讨论与旋转目标检测相关的研究工作。关于水平目标检测更全面的文献综述,读者可参考[13, 44, 28, 29]。
旋转目标检测。作为一个新兴方向,该领域的研究进展试图通过采用旋转边界框将经典的水平检测器扩展到旋转情况。与少数将旋转检测任务视为角度分类问题的工作[66]相比,基于回归的检测器仍占主导地位,且已应用于不同的应用场景。对于航空图像,ICN[2]、ROI-Transformer[8]、SCRDet[69]和Gliding Vertex[62]是两阶段的代表性方法,其流程包括目标定位和分类;而DRN[41]、R³Det[67]和RSDet[42]是单阶段方法。对于场景文本检测,RRPN[35]采用旋转的RPN生成旋转候选框,并进一步进行旋转边界框回归。TextBoxes++[26]在SSD上采用顶点回归。RRD[27]通过分别在旋转不变特征和旋转敏感特征上解耦分类和边界框回归,进一步改进了TextBoxes++。我们讨论了现有旋转检测回归器面临的具体挑战。
边界不连续性和类矩形问题。由于角度参数的周期性和边界框定义的多样性,基于回归的旋转检测器常常面临边界不连续性和类矩形问题。许多现有方法试图从不同角度解决上述部分问题。例如,SCRDet[69]和RSDet[42]提出了IoU-smoothL1损失和调制损失,以平滑边界损失跳变。CSL[66]将角度预测从回归问题转化为分类问题。DCL[64]进一步解决了由长边定义引入的类矩形目标检测问题,该问题指的是近似方形的实例存在旋转不敏感性问题,具体细节将在第3节阐述。
近似可微分的旋转IoU损失。经典水平检测器已表明,使用IoU诱导损失(如GIoU[45]、DIoU[80])可以确保最终检测指标和损失的一致性。然而,由于旋转IoU不可微分,这些IoU损失无法直接应用于旋转检测。
人们已做出许多努力来寻找用于梯度计算的近似IoU损失。PIoU[5]通过简单地计算像素数量来实现。为了解决旋转引起的凸性不确定性问题,[79]提出了一种投影操作来估计交集面积。SCRDet[69]结合IoU和smooth L1损失,开发了IoU-smooth L1损失,这在一定程度上规避了对可微分旋转IoU损失的需求。
到目前为止,对于上述相互交织的问题,还没有真正统一的解决方案。我们的方法以统一的方式解决了所有这些问题,并且与边界框的具体定义无关。所有这些优点使我们的方法既优雅又有效。
3. 旋转目标回归检测器再审视
为推动本工作,在本节中,我们介绍并分析了基于角度回归的现有旋转检测器的一些缺陷。
3.1. 边界框定义
图2给出了基于角度参数化旋转边界框的两种流行定义:由DocD_{o c}Doc表示的OpenCV协议和由DlϵD_{l\epsilon}Dlϵ表示的长边定义。注意,前者的θ∈[−90∘,0∘)\theta\in[-90^{\circ},0^{\circ})θ∈[−90∘,0∘)表示边界框的wocw_{o c}woc与x轴之间的锐角或直角。相比之下,后者的θ ∈ [−90∘,90∘)\theta\,\in\,[-90^{\circ},90^{\circ})θ∈[−90∘,90∘)是边界框长边wlew_{l e}wle与x轴之间的角度。这两种参数化方式可以相互转换:
Dle(wle,hle,θle)={Doc(woc,hoc,θoc),woc≥hocDoc(hoc,woc,θoc+90∘),otherwiseDoc(woc,hoc,θoc)={Dle(wle,hle,θle),θle∈[−90∘,0∘)Dle(hle,wle,θle−90∘),otherwise\begin{array}{r l}&{D_{l e}(w_{l e},h_{l e},\theta_{l e})=\left.\left\{\begin{array}{r c l}{D_{o c}(w_{o c},h_{o c},\theta_{o c}),}&{w_{o c}\geq h_{o c}}\\ {D_{o c}(h_{o c},w_{o c},\theta_{o c}+90^{\circ}),}&{\text{otherwise}}\end{array}\right.\right.}\\ &{}\\ &{D_{o c}(w_{o c},h_{o c},\theta_{o c})=\left.\left\{\begin{array}{r c l}{D_{l e}(w_{l e},h_{l e},\theta_{l e}),}&{\theta_{l e}\in[-90^{\circ},0^{\circ})}\\ {D_{l e}(h_{l e},w_{l e},\theta_{l e}-90^{\circ}),}&{\text{otherwise}}\end{array}\right.\right.}\end{array}Dle(wle,hle,θle)={Doc(woc,hoc,θoc),Doc(hoc,woc,θoc+90∘),woc≥hocotherwiseDoc(woc,hoc,θoc)={Dle(wle,hle,θle),Dle(hle,wle,θle−90∘),θle∈[−90∘,0∘)otherwise
主要区别在于边和角度(w,h,θ)(w,h,\theta)(w,h,θ):当同一个边界框采用两种定义的不同表示时,边的顺序会交换,且角度差异为90∘90^{\circ}90∘。
在许多工作中,流程设计紧密耦合于边界框定义的选择,以避免特定问题:SCRDet[69]、R³Det[67]基于DocD_{o c}Doc以避免类矩形问题,而CSL[66]、DCL[64]则采用DleD_{l e}Dle以避免边的可交换性(EoE)。
3.2. 指标与损失的不一致性
交并比(IoU)一直是水平检测和旋转检测的标准指标。然而,指标与回归损失(如ln范数)之间存在不一致性,即较小的训练损失并不能保证更高的性能,这在水平检测中已得到广泛讨论[45, 80]。在基于回归的模型中引入角度参数后,这种不一致性在旋转目标检测中变得更加突出。为了说明这一点,我们使用图3来比较IoU诱导损失和smooth L1损失[13]:
情况1:图3a描绘了角度差异与损失函数之间的关系。尽管它们都具有单调性,但只有smooth L1曲线是凸的,而其他曲线则不是。
情况2:图3b展示了在不同长宽比条件下两种损失函数的变化。可以看出,两个边界框的smooth L1损失是恒定的(主要来自角度差异),但IoU损失会随着长宽比的变化而急剧变化。
情况3:图3c探讨了中心点偏移对不同损失函数的影响。同样,尽管单调性相同,但一致性并不高。
鉴于经典smooth L1损失的上述缺陷,IoU诱导损失最近在水平检测中变得流行,例如GIoU[45]、DIoU[80]。它有助于缩小旋转目标检测中指标与回归损失之间的差距。然而,与水平检测不同,两个旋转框的IoU对于学习来说是不可微分的。在本文中,我们提出了一种基于两个旋转框的Wasserstein距离的可微分损失,以替代难以处理的IoU损失。值得一提的是,Wasserstein距离函数具有一些独特的性质,可以解决边界不连续性和类矩形问题,这将在后面详细阐述。
3.3. 边界不连续性与类方形问题
作为基于回归的旋转检测器一直存在的问题,边界不连续性[69,66]通常指的是由角度和边参数化在边界处引起的损失急剧增加。
具体而言,图4中的情况1-2总结了边界不连续性。以情况2为例,假设在边界位置³存在一个红色锚框/候选框(0,0,70,10,−90∘)(0,0,70,10,-90^{\circ})(0,0,70,10,−90∘)和一个绿色真实框(0,0,10,70,−25∘)(0,0,10,70,-25^{\circ})(0,0,10,70,−25∘),两者均采用OpenCV定义DocD_{o c}Doc。图4的右上角展示了从锚框/候选框回归到真实框的两种方式。方式1仅通过逆时针旋转锚框/候选框一个角度来实现目标,但由于角度的周期性(PoA)和边的可交换性(EoE),此时会产生非常大的平滑L1损失。如CSL[66]中所述,这是因为预测框(0,0,70,10,−115∘)(0,0,70,10, -115^{\circ})(0,0,70,10,−115∘)的结果超出了定义范围。因此,模型必须采用其他复杂的回归形式进行预测,例如将锚框/候选框顺时针旋转一个较大角度得到蓝色框,同时缩放宽度www和高度hhh(情况2中的方式2)。在长边定义DleD_{l e}Dle中也存在类似问题(仅涉及PoA),如图4中的情况1所示。
实际上,当预定义的锚框/候选框和真实框不在边界位置时,方式1不会产生较大的损失。因此,边界位置和非边界位置的回归之间存在不一致性,这使得模型对应该采用哪种回归方式感到困惑。由于非边界情况占大多数,模型的回归结果(尤其是学习能力较弱的模型)在边界情况下非常脆弱,如图1左侧所示。
此外,在基于DlϵD_{l\epsilon}Dlϵ的方法[64]中还存在类方形物体检测问题。首先,DleD_{l e}Dle无法唯一地定义一个方形边界框。对于类方形物体⁴,基于DlϵD_{l\epsilon}Dlϵ的方法会遇到高交并比(IoU)但高损失值的情况,类似于边界不连续性,如图4中情况3的上部所示。在方式1中,红色锚框/候选框(0,0,45,44,0∘)(0,0,45,44,0^{\circ})(0,0,45,44,0∘)顺时针旋转一个小角度得到蓝色预测框。真实框(0,0,45,43,−60∘)(0,0,45,43,-60^{\circ})(0,0,45,43,−60∘)和预测框(0,0,45,44,30∘)(0,0,45,44,30^{\circ})(0,0,45,44,30∘)的IoU接近1,但由于角度参数的不一致性,回归损失很高。因此,模型会逆时针旋转一个较大角度进行预测,如方式2所述。基于DleD_{l e}Dle方法的类方形问题原因并非上述的PoA和EoE,而是评估指标和损失的不一致性。相比之下,当我们使用基于DocD_{o c}Doc的方法来检测类方形物体时,EoE的负面影响会被削弱,如图4中情况2和情况3的下部所示。因此,基于DocD_{o c}Doc的方法不存在类方形问题。
近期的方法开始解决这些问题。SCRDet[69]结合IoU和平滑L1损失提出了一种IoU-平滑L1损失,该损失不需要旋转IoU可微。它还通过消除边界处的损失不连续性解决了损失和指标之间不一致的问题。然而,SCRDet在计算IoU之前仍需要确定预测的边界框结果是否符合当前的边界框定义方法。此外,IoU-平滑L1损失的梯度方向仍由平滑L1损失主导。RSDet[42]设计了调制损失来平滑边界处的损失突变,但需要计算尽可能多的参数组合的损失。CSL[66]将角度预测从回归问题转化为分类问题。CSL需要根据边界框定义(Dle)(D_{l e})(Dle)仔细设计方法,并且受到分类粒度的限制,对于高精度角度预测存在理论限制。在CSL的基础上,DCL[64]进一步解决了由DlϵD_{l\epsilon}Dlϵ引入的类方形物体检测问题。
4. 提出的方法
在本节中,我们介绍了一种新的旋转物体检测器,其回归损失满足以下要求:
要求1:与IoU诱导的指标高度一致(这也解决了类方形物体问题);
要求2:可微,允许直接学习;
要求3:在角度边界情况下平滑。
4.1. 旋转框的Wasserstein距离
大多数基于IoU的损失可以视为距离函数。受此启发,我们提出了一种基于Wasserstein距离的新回归损失。首先,我们通过以下公式将旋转边界框B(x,y,w,h,θ)\mathcal{B}(x,y,w,h,\theta)B(x,y,w,h,θ)转换为二维高斯分布N(m,Σ)\mathcal{N}(\mathbf{m},\mathbf{\Sigma})N(m,Σ)(见图5):
Σ1/2==(cosθ−sinθsinθcosθ)(w200h2)(cosθsinθ−sinθcosθ)=(w2cos2θ+h2sin2θw−h2cosθsinθw−h2cosθsinθw2sin2θ+h2cos2θ)m=(x,y)\begin{array}{r}{\mathbf{\Sigma}^{1/2}=}\\ {=}\\ {\left(\begin{array}{c c}{\cos\theta}&{-\sin\theta}\\ {\sin\theta}&{\cos\theta}\end{array}\right)\left(\begin{array}{c c}{\frac{w}{2}}&{0}\\ {0}&{\frac{h}{2}}\end{array}\right)\left(\begin{array}{c c}{\cos\theta}&{\sin\theta}\\ {-\sin\theta}&{\cos\theta}\end{array}\right)}\\ {=\left(\begin{array}{c c}{\frac{w}{2}\cos^{2}\theta+\frac{h}{2}\sin^{2}\theta}&{\frac{w-h}{2}\cos\theta\sin\theta}\\ {\frac{w-h}{2}\cos\theta\sin\theta}&{\frac{w}{2}\sin^{2}\theta+\frac{h}{2}\cos^{2}\theta}\end{array}\right)}\\ {\mathbf{m}=}\\ {(x,y)}\end{array}Σ1/2==(cosθsinθ−sinθcosθ)(2w002h)(cosθ−sinθsinθcosθ)=(2wcos2θ+2hsin2θ2w−hcosθsinθ2w−hcosθsinθ2wsin2θ+2hcos2θ)m=(x,y)
其中RRR表示旋转矩阵,SSS表示特征值的对角矩阵。
两个概率测度μ\muμ和ν\nuν在Rn\mathbb{R}^{n}Rn上的Wasserstein距离WWW表示为[3]:
W(μ;ν):=infE(∥X−Y∥22)1/2\mathbf{W}(\mathbf{\mu};\mathbf{\nu}):=\operatorname*{inf}\mathbb{E}(\|\mathbf{X}-\mathbf{Y}\|_{2}^{2})^{1/2}W(μ;ν):=infE(∥X−Y∥22)1/2
其中下确界遍历所有随机向量(X,Y)(\mathbf{X},\mathbf{Y})(X,Y),其中X∼μ\mathbf{X}\sim\muX∼μ且Y∼ν\mathbf{Y}\sim\nuY∼ν。结果表明,我们有d:=W(N(m1,Σ1);N(m2,Σ2))d:=\mathbf{W}(\mathcal{N}(\mathbf{m}_{1},\mathbf{\Sigma}_{1});\mathcal{N}(\mathbf{m}_{2},\mathbf{\Sigma}_{2}))d:=W(N(m1,Σ1);N(m2,Σ2)),且可以表示为:
d2=∥m1−m2∥22+Tr(Σ1+Σ2−2(Σ11/2Σ2Σ11/2)1/2)\small\begin{aligned}{d^{2}=\|\mathbf{m}_{1}-\mathbf{m}_{2}\|_{2}^{2}+\mathbf{Tr}\left(\mathbf{\Sigma}_{1}+\mathbf{\Sigma}_{2}-2(\mathbf{\Sigma}_{1}^{1/2}\mathbf{\Sigma}_{2}\mathbf{\Sigma}_{1}^{1/2})^{1/2}\right)}\\ \end{aligned}d2=∥m1−m2∥22+Tr(Σ1+Σ2−2(Σ11/2Σ2Σ11/2)1/2)
该公式在几项工作中引起了兴趣[14, 40, 22,9][14,\,40,\,22, 9][14,40,22,9]。特别需要注意的是,我们有:
Tr((Σ11/2Σ2Σ11/2)1/2)=Tr((Σ21/2Σ1Σ21/2)1/2)\mathbf{Tr}\left((\mathbf{\Sigma}_{1}^{1/2}\mathbf{\Sigma}_{2}\mathbf{\Sigma}_{1}^{1/2})^{1/2}\right)=\mathbf{Tr}\left((\mathbf{\Sigma}_{2}^{1/2}\mathbf{\Sigma}_{1}\mathbf{\Sigma}_{2}^{1/2})^{1/2}\right)Tr((Σ11/2Σ2Σ11/2)1/2)=Tr((Σ21/2Σ1Σ21/2)1/2)
在可交换情况下(水平检测任务)Σ1Σ2=Σ2Σ1\mathbf{\Sigma}_{1}\mathbf{\Sigma}_{2}=\mathbf{\Sigma}_{2}\mathbf{\Sigma}_{1}Σ1Σ2=Σ2Σ1,公式3变为:
d2=∥m1−m2∥22+∥Σ11/2−Σ21/2∥F2=(x1−x2)2+(y1−y2)2+(w1−w2)2+(h1−h2)24=l2-norm([x1,y1,w12,h12]⊤,[x2,y2,w22,h22]⊤)\small\begin{aligned}{\boldsymbol{d}^{2}=}&{{}\|\mathbf{m}_{1}-\mathbf{m}_{2}\|_{2}^{2}+\|\mathbf{\Sigma}_{1}^{1/2}-\mathbf{\Sigma}_{2}^{1/2}\|_{F}^{2}}\\ {=}&{{}(x_{1}-x_{2})^{2}+\left(y_{1}-y_{2}\right)^{2}+\frac{(w_{1}-w_{2})^{2}+(h_{1}-h_{2})^{2}}{4}}\\ {=}&{{}l_{2}\operatorname{-norm}\left(\left[x_{1},y_{1},\frac{w_{1}}{2},\frac{h_{1}}{2}\right]^{\top},\left[x_{2},y_{2},\frac{w_{2}}{2},\frac{h_{2}}{2}\right]^{\top}\right)}\\ \end{aligned}d2===∥m1−m2∥22+∥Σ11/2−Σ21/2∥F2(x1−x2)2+(y1−y2)2+4(w1−w2)2+(h1−h2)2l2-norm([x1,y1,2w1,2h1]⊤,[x2,y2,2w2,2h2]⊤)
其中∥∥F\|\|_{F}∥∥F是Frobenius范数。注意,这里两个框都是水平的,且公式5近似等价于l2l_{2}l2范数损失(注意www和hhh的分母额外为2),这与水平检测中常用的损失一致。这也部分证明了使用Wasserstein距离作为回归损失的正确性。关于公式3的详细证明[3],请参见附录。
4.2. 高斯Wasserstein距离回归损失
需要注意的是,单独使用GWD可能对大误差较为敏感。我们进行一个非线性变换fff,然后将GWD转化为一个相似度度量1τ + f(d2)\frac{1}{\tau\!+\!f(d^{2})}τ+f(d2)1,类似于两个边界框之间的IoU。然后,我们遵循检测文献中标准的基于IoU的损失形式[45,80][45,80][45,80],具体表示为:
Lgwd=1−1τ+f(d2),τ≥1L_{g w d}=1-\frac{1}{\tau+f(d^{2})},\quad\tau\geq1Lgwd=1−τ+f(d2)1,τ≥1
其中,f(⋅)f(\cdot)f(⋅)表示一个非线性函数,用于转换Wasserstein距离d2d^{2}d2,以使损失更加平滑和具有表现力。超参数τ\tauτ用于调节整个损失。
图3a展示了在不同f(⋅)f(\cdot)f(⋅)和τ\tauτ组合下的函数曲线。与平滑L1损失相比,公式6的曲线与IoU损失曲线更为一致。此外,从图3c中我们可以发现,GWD仍然可以测量两个无重叠边界框(IoU=0\mathrm{IoU{=}0}IoU=0)之间的距离,这正是GIoU和DIoU在水平检测中试图解决的问题。然而,它们无法应用于旋转检测。
显然,GWD在一致性和可微分性方面已经满足了前两个要求。为了分析要求Z{\mathfrak{Z}}Z,我们首先给出公式1的基本性质:
性质 1: ^Σ1/2(w,h,θ)=Σ1/2(h,w,θ−π2); 性质 2: ^Σ1/2(w,h,θ)=Σ1/2(w,h,θ−π); 性质 3: ^Σ1/2(w,h,θ)≈Σ1/2(w,h,θ−π2),if w≈h\begin{array}{r l}&{\hat{\mathrm{\bf~性质~1:~}}\mathbf{\Sigma}^{1/2}(w,h,\theta)=\mathbf{\Sigma}^{1/2}(h,w,\theta-\frac{\pi}{2});}\\ &{\hat{\mathrm{\bf~性质~2:~}}\mathbf{\Sigma}^{1/2}(w,h,\theta)=\mathbf{\Sigma}^{1/2}(w,h,\theta-\pi);}\\ &{\hat{\mathrm{\bf~性质~3:~}}\mathbf{\Sigma}^{1/2}(w,h,\theta)\approx\mathbf{\Sigma}^{1/2}(w,h,\theta-\frac{\pi}{2}),\mathrm{if}\;w\approx h}\end{array} 性质 1: ^Σ1/2(w,h,θ)=Σ1/2(h,w,θ−2π); 性质 2: ^Σ1/2(w,h,θ)=Σ1/2(w,h,θ−π); 性质 3: ^Σ1/2(w,h,θ)≈Σ1/2(w,h,θ−2π),ifw≈h
从两种边界框定义中回顾可知,两种定义之间的转换是边的交换和角度差为90°。许多方法在设计时就预先根据定义的选择来解决某些问题,例如使用DleD_{l e}Dle来解决边的可交换性(EoE)问题,使用DocD_{o c}Doc来解决类方形问题。有趣的是,根据性质1,对于基于GWD的损失,定义DocD_{o c}Doc和DlϵD_{l\epsilon}Dlϵ是等价的,这使得我们的方法不受边界框定义选择的影响。这并不意味着两种定义方法的最终性能会相同。角度定义和角度回归范围等不同因素仍然会导致模型学习上的差异,但基于GWD的方法不需要绑定某种特定的定义方法来解决该问题。
GWD还可以帮助解决边界不连续性和类方形问题。图4中情况1的方式1中的预测框和真实框满足以下关系:xp = xgt,yp = ygt,wp = hgt,hp = wgt,θp = θgt − π2x_{p}\:=\:x_{g t},y_{p}\:=\:y_{g t},w_{p}\:=\:h_{g t},h_{p}\:=\:w_{g t},\theta_{p}\:=\:\theta_{g t}\,-\,\frac{\pi}{2}xp=xgt,yp=ygt,wp=hgt,hp=wgt,θp=θgt−2π。根据性质1,这两个框对应的高斯分布是相同的(在均值m\mathbf{m}m和协方差Σ\mathbf{\Sigma}Σ相同的意义上),因此它自然消除了边界框表示中的歧义。类似地,根据性质2-3,图4中情况1和情况3的方式1中的真实框和预测框也具有相同或几乎相同(对于类方形框,注意w≈hw \approx hw≈h的近似等号)的高斯分布。通过上述分析,我们知道GWD满足了要求3。
总体而言,GWD是满足所有要求的统一解决方案,其在旋转检测中的优势可以总结如下:
i) GWD使得两种边界框定义方法等价,这使我们的方法无论边界框如何定义都能取得显著改进。
ii) GWD是旋转边界框的可微分IoU损失近似,与检测指标保持高度一致性。GWD还可以测量无重叠旋转边界框之间的距离,并且对于水平情况具有与GIoU和DIoU相似的性质。
iii) GWD本质上避免了边界不连续性和类方形问题的干扰,因此模型可以以更多样化的回归形式进行学习,消除了边界和非边界位置下回归的不一致性,并降低了学习成本。
4.3. 整体损失函数设计
与[66,64,67][66, 64, 67][66,64,67]一致,我们使用单阶段检测器RetinaNet[29][29][29]作为基线。旋转矩形由五个参数(x,y,w,h,θ)(x,y,w,h,\theta)(x,y,w,h,θ)表示。在我们的实验中,我们主要遵循DocD_{o c}Doc定义,回归方程如下:
tx=(x−xa)/wa,ty=(y−ya)/hatw=log(w/wa),th=log(h/ha),tθ=θ−θatx∗=(x∗−xa)/wa,ty∗=(y∗−ya)/hatw∗=log(w∗/wa),th∗=log(h∗/ha),tθ∗=θ∗−θa\small\begin{aligned}{t_{x}}&{{}=(x-x_{a})/w_{a},t_{y}=(y-y_{a})/h_{a}}\\ {t_{w}}&{{}=\operatorname{log}(w/w_{a}),t_{h}=\operatorname{log}(h/h_{a}),t_{\theta}=\theta-\theta_{a}}\\ {t_{x}^{*}}&{{}=(x^{*}-x_{a})/w_{a},t_{y}^{*}=(y^{*}-y_{a})/h_{a}}\\ {t_{w}^{*}}&{{}=\operatorname{log}(w^{*}/w_{a}),t_{h}^{*}=\operatorname{log}(h^{*}/h_{a}),t_{\theta}^{*}=\theta^{*}-\theta_{a}}\\ \end{aligned}txtwtx∗tw∗=(x−xa)/wa,ty=(y−ya)/ha=log(w/wa),th=log(h/ha),tθ=θ−θa=(x∗−xa)/wa,ty∗=(y∗−ya)/ha=log(w∗/wa),th∗=log(h∗/ha),tθ∗=θ∗−θa
其中,x,y,w,h,θx,y,w,h,\thetax,y,w,h,θ分别表示框的中心坐标、宽度、高度和角度。变量x,xa,x∗x,x_{a},x^{*}x,xa,x∗分别表示真实框、锚框和预测框的对应值(y,w,h,θy,w,h,\thetay,w,h,θ同理)。多任务损失为:
L=λ1N∑n=1Nobjn⋅Lgwd(bn,gtn)+λ2N∑n=1NLcls(pn,tn)L=\frac{\lambda_{1}}{N}\sum_{_{n=1}}^{N}o b j_{n}\cdot L_{g w d}(b_{n},g t_{n})+\frac{\lambda_{2}}{N}\sum_{_{n=1}}^{N}L_{c l s}(p_{n},t_{n})L=Nλ1n=1∑Nobjn⋅Lgwd(bn,gtn)+Nλ2n=1∑NLcls(pn,tn)
其中,NNN表示锚框的数量,objno b j_{n}objn是一个二进制值(前景时objn = 1o b j_{n}\:=\:1objn=1,背景时objn = 0o b j_{n}\:=\:0objn=0,背景不进行回归)。bnb_{n}bn表示第nnn个预测的边界框,gtng t_{n}gtn是第nnn个目标真实框。tnt_{n}tn表示第nnn个对象的标签,pnp_{n}pn是通过sigmoid函数计算的第nnn个对象各类别的概率分布。超参数λ1, λ2\lambda_{1},\,\lambda_{2}λ1,λ2用于控制权衡,默认设置为{1, 2}。分类损失LclsL_{c l s}Lcls设置为焦点损失[29][29][29]。
5. 实验
我们使用Tensorflow[1][1][1]在配备Tesla V100和32G内存的服务器上实现。
表1展示了在DOTA数据集上基于GWD的回归损失形式和超参数的消融测试结果。基于的检测器是RetinaNet。
表2展示了在三个数据集上GWD的消融研究结果。‘R’、'F’和’G’分别表示随机旋转、翻转和灰度化数据增强。
表3展示了在两个场景文本数据集上GWD的消融研究结果。
实验结果表明,使用GWD作为回归损失可以显著提高旋转检测器的性能,特别是在处理边界不连续性和类方形问题时表现出色。此外,GWD与不同的检测器架构和数据增强方式都具有良好的兼容性。
5.1. 数据集与实现细节
DOTA[57]数据集包含来自不同传感器和平台的2806张大型航空图像。DOTA中的目标在尺度、方向和形状上展现出极大的多样性。目标类别的简称定义如下(缩写-全称):PL-飞机,BD-棒球场,BR-桥,GTF-地面田径场,SV-小型车辆,LV-大型车辆,SH-船只,TC-网球场,BC-篮球场,ST-储油罐,SBF-足球场,RA-环形交叉口,HA-港口,SP-游泳池,以及HC-直升机。完全标注的DOTA基准数据集包含188,282个实例,每个实例都用一个任意四边形进行标注。原始图像的一半被随机选为训练集,1/6作为验证集,1/3作为测试集。我们将图像分割成600 × 600的子图像,重叠区域为150像素,并将其缩放到800 × 800。经过这些处理后,我们获得了大约20,000个训练样本和7,000个验证样本。
UCAS-AOD[85]包含约659 × 1,280像素的1510张航空图像,共有14,596个实例,分为2个类别。根据[2, 57],我们采样1,110张图像用于训练,400张用于测试。
HRSC2016[33]包含来自两个场景的图像,包括海上的船只和近岸的船只。训练集、验证集和测试集分别包含436、181和444张图像。
ICDAR2015[21]常用于定向场景文本检测和识别。该数据集包括1000张训练图像和500张测试图像。
ICDAR 2017 MLT[38]是一个多语言文本数据集,包含7200张训练图像、1800张验证图像和9000张测试图像。该数据集由9种语言的完整场景图像组成,其中的文本区域可以是任意方向的,因此更加多样和具有挑战性。
除非另有说明,否则实验默认使用ResNet50[16]进行初始化。我们在三个航空基准数据集和两个场景文本基准数据集上进行实验,以验证我们技术的通用性。权重衰减和动量分别设置为0.0001和0.9。我们采用每GPU处理1张图像的小批量(mini-batch)进行训练。所有使用的数据集总共训练20个epoch,学习率分别在第12个epoch和第16个epoch时降低十倍。RetinaNet的初始学习率为5e-4。
表7展示了在DOTA数据集上不同目标类别的AP以及mAP。R-101表示ResNet-101(R-50、R-152同理),RX-101和H-104分别表示ResNeXt101[60]和Hourglass-104[39]。其他骨干网络包括DPN-92[4]、DLA-34[74]、DCN[7]、HRNet-W48[53]、U-Net[46]。MS表示使用了多尺度训练或测试。
每个epoch在DOTA、UCAS-AOD、HRSC2016、ICDAR2015和MLT数据集上的迭代次数分别为54k、5k、10k、10k和10k,如果使用了数据增强和多尺度训练,则迭代次数会呈指数级增加。
5.2. 消融研究
基于GWD的回归损失形式和超参数的消融测试:表1比较了两种不同形式的基于GWD的损失。直接使用GWD(d2d^{2}d2)作为回归损失的性能极差,仅为49.11%,这是由于其快速增长的趋势导致的。换句话说,回归损失d2d^{2}d2对大误差过于敏感。相比之下,公式6通过拟合IoU损失实现了显著改进。公式6引入了两个新的超参数:用于转换Wasserstein距离的非线性函数f(⋅)f(\cdot)f(⋅),以及用于调节整个损失的常数τ\tauτ。从表1中可以看出,使用sqrt函数的总体性能优于使用log函数,大约高出0.98±0.3%。对于f(⋅)=sqrtf(\cdot)=\mathrm{sqrt}f(⋅)=sqrt且τ=2\tau=2τ=2的情况,模型达到了最佳性能,约为68.93%。除非另有说明,否则后续实验均遵循此超参数设置。
不同旋转框定义的消融测试:如前所述,根据性质1,对于基于GWD的损失,定义DocD_{o c}Doc和DlϵD_{l\epsilon}Dlϵ是等价的,这使得我们的方法不受边界框定义选择的影响。这并不意味着两种定义方法的最终性能会相同,而是基于GWD的方法不需要绑定某种特定的定义方法来解决边界不连续性或类方形问题。表2比较了在DOTA数据集上,RetinaNet在不同回归损失和两种旋转框定义(DlϵD_{l\epsilon}Dlϵ和DocD_{o c}Doc)下的性能。对于平滑L1损失,基于DlϵD_{l\epsilon}Dlϵ的方法的准确率比基于DocD_{o c}Doc的方法低1.56%,分别为64.17%和65.73%。而基于GWD的方法不需要与某种特定定义耦合来解决边界不连续性或类方形问题,在上述两种定义下分别提高了2.14%和3.20%。
跨数据集和检测器的消融测试:我们在五个数据集上使用两个检测器来验证GWD的有效性。当RetinaNet作为基础检测器时(如表2所示),基于GWD的检测器在HRSC206、UCAS-AOD和DOTA三个不同的航空图像数据集上分别提高了1.28%、0.88%和3.20%。注意,为了提高小数据集结果的可靠性,前两个数据集的实验涉及了额外的数据增强,包括随机灰度化和随机旋转。旋转检测器R’Net[67]在大规模DOTA数据集上达到了最先进的性能。可以看出,GWD进一步将性能提高了0.90%。表3还给出了在两个场景文本数据集上的消融测试结果。场景文本中存在大量位于边界位置的目标,因此基于GWD的RetinaNet获得了显著的性能提升,在MLT和ICDAR2015数据集上分别提高了6.16%和4.51%。即使在使用了数据增强或更强的检测器R’Det的情况下,GWD仍然能够获得稳定的性能提升,提升范围从1.31%到1.56%。
5.3. 训练策略与技巧
为了进一步提高模型在DOTA数据集上的性能,我们验证了许多常用的训练策略和技巧,包括骨干网络、训练计划、数据增强(DA)、多尺度训练和测试(MS)、随机权重平均(SWA)[19,76]、多尺度图像裁剪(MSC)、模型集成(ME),如表4所示。
骨干网络:在不同检测器(RetinaNet和R’Det)、不同训练计划(实验组{#11,#16}、{#24,#29})以及不同技巧(实验组{#26,#31}、{#28,#33})的条件下,更大的骨干网络可以带来稳定的性能提升。
多尺度训练和测试:多尺度训练和测试是提高具有各种目标尺度的航空图像性能的有效手段。在本文中,训练和测试尺度设置为[450,500,640,700,800,900,1000,1100,1200]。实验组{#3,#4}、{#5,#6}和{#11,#12}展示了其有效性,性能分别提高了0.9%、1.09%和0.58%。
训练计划:当添加数据增强和多尺度训练时,有必要适当延长训练时间。从实验组{#3,#5}和{#16,#29}中可以看出,当训练计划从40或30个epoch增加到60个epoch时,性能分别提高了0.77%和1.22%。
随机权重平均(SWA):SWA技术已被证明是提高目标检测性能的有效工具。根据[76],我们使用循环学习率额外训练检测器12个epoch,然后将这12个检查点平均作为最终的检测模型。从表4的实验组{#1,#2}、{#20,#21}和{#25,#26}中可以看出,在具有挑战性的DOTA基准数据集上,我们分别获得了0.99%、1.20%和1.13%的性能提升。
多尺度图像裁剪:大场景目标检测通常需要在训练前进行图像滑动窗口裁剪。在测试时,在合并结果之前需要进行滑动窗口裁剪测试。两个相邻的子图像通常有一个重叠区域,以确保被截断的目标能够完全出现在某个子图像中。裁剪尺寸需要适中,过大不利于小目标的检测,过小则会导致大目标被截断的概率很高。多尺度裁剪是一种有效的检测技术,有利于各种尺度的目标。在本文中,我们的多尺度裁剪尺寸和对应的重叠尺寸分别为[600,800,1024,1300,1600]和[150,200,300,300,400]。根据实验组{#6,#7}和{#30,#32},经常被截断的大目标类别(例如GTF和SBF)得到了显著提升。以组{#6,#7}为例,GTF和SBF分别提高了6.43%和6.14%。
5.4. 进一步比较
高精度检测:将检测指标与损失函数对齐的优势在于可以学习到更高精度的预测框。长宽比较大的目标对检测精度更为敏感,因此我们在船只数据集HRSC2016上进行了高精度检测实验。从表5中可以看出,我们的基于GWD的检测器在高IoU阈值下表现出明显的优势。以AP75为例,GWD在两个检测器上分别实现了11.89%和22.46%的性能提升。我们还在DOTA验证集上与其他技术进行了比较,主要包括IoU-SmoothL1Loss [69]、CSL [66]和DCL [64]。如表6右侧所示,基于GWD的方法在mAP75和mAP50:95指标上取得了最高性能,分别为38.68%和38.71%。
解决回归问题的技术比较:针对指标与损失函数不一致、边界不连续性和类方形问题这三个问题,表6在DOTA测试集上比较了五种相关技术,包括IoU-SmoothL1Loss、Modulatedloss、CSL和DCL。为了公平起见,这些方法都在同一基准方法上实现,并在相同的环境和超参数下进行训练和测试。
特别地,我们详细列出了七个类别的精度,包括长宽比较大的目标(如BR、SV、LV、SH、HA)和类方形目标(如ST、RD),这些类别在数据集中包含了许多边界情况。这些类别被认为能够更好地反映我们方法在实际应用中的挑战和优势。许多解决边界不连续性的方法在长宽比较大的目标类别上取得了显著的性能提升,而考虑类方形问题的方法在类方形目标上表现良好,如GWD、DCL和Modulatedloss。
然而,很少有统一的方法能够解决所有问题,大多数方法都是针对部分问题提出的。其中,最全面的方法是IoU-Smooth L1 Loss。然而,IoU-Smooth L1 Loss的梯度方向仍然由平滑L1损失主导,因此指标和损失并不能被视为真正一致。此外,IoU-Smooth L1 Loss在计算边界位置的IoU之前需要确定预测框是否在定义范围内,否则需要转换为与真实框相同的定义。相比之下,由于GWD的三个独特性质,它无需额外判断即可优雅地解决所有问题。从表6中可以看出,GWD在大多数类别上表现优异。对于列出的七个类别(7-mAP)和整体性能(mAP),基于GWD的方法也是最好的。图1可视化了基于平滑L1损失和基于GWD的检测器之间的比较。
5.5. 综合总体比较
DOTA数据集上的结果:由于航空图像的复杂性和大量小、杂乱且旋转的目标,DOTA是一个极具挑战性的数据集。我们将所提出的方法与其他最先进的方法在DOTA数据集上进行了比较,如表7所示。据我所知,这是对DOTA数据集上方法的最全面的统计比较。由于不同的方法使用不同的图像分辨率、网络结构、训练策略和各种技巧,因此我们无法进行绝对公平的比较。就整体性能而言,我们的方法迄今为止取得了最佳性能,约为80.23%。
HRSC2016数据集上的结果:HRSC2016包含大量长宽比较大的任意方向船只实例,这对检测器的定位精度提出了巨大挑战。表8中的实验结果表明,我们的模型在2007年和2012年评估指标下分别取得了约89.85%和97.37%的最先进性能。
6. 结论
本文提出了一种基于高斯Wasserstein距离的损失函数,用于建模目标检测中两个旋转边界框之间的偏差。所设计的损失函数直接与检测精度对齐,并且模型可以通过反向传播高效学习。更重要的是,由于其三个独特性质,GWD无论边界框如何定义,都能优雅地解决边界不连续性和类方形问题。在大量公共基准数据集上的实验结果表明,我们的检测器取得了最先进的性能。
附录
6.1 d:=W(N(m1,Σ1);N(m2,Σ2))d:=\mathbf{W}(\mathcal{N}(\mathbf{m}_{1},\mathbf{\Sigma}_{1});\mathcal{N}(\mathbf{m}_{2},\mathbf{\Sigma}_{2}))d:=W(N(m1,Σ1);N(m2,Σ2))的证明
整个证明过程参考了这篇博客[3]。
两个概率测度μ\muμ和ν\nuν在Rn\mathbb{R}^{n}Rn上的Wasserstein耦合距离W\mathbf{W}W表示如下:
W(μ;ν):=infE(∥X−Y∥22)1/2\mathbf{W}(\mu;\nu):=\operatorname*{inf}\mathbb{E}(\|\mathbf{X}-\mathbf{Y}\|_{2}^{2})^{1/2}W(μ;ν):=infE(∥X−Y∥22)1/2
其中,下确界遍历所有随机向量(X,Y)(\mathbf{X},\mathbf{Y})(X,Y),这些向量属于Rn×Rn\mathbb{R}^{n} \times \mathbb{R}^{n}Rn×Rn,且满足X∼μ\mathbf{X} \sim \muX∼μ和Y∼ν\mathbf{Y} \sim \nuY∼ν。事实证明,对于d:=W(N(m1,Σ1);N(m2,Σ2))d := \mathbf{W}(\mathcal{N}(\mathbf{m}_{1},\mathbf{\Sigma}_{1});\mathcal{N}(\mathbf{m}_{2},\mathbf{\Sigma}_{2}))d:=W(N(m1,Σ1);N(m2,Σ2)),我们有以下公式:
d2=∥m1−m2∥22+Tr(Σ1+Σ2−2(Σ11/2Σ2Σ11/2)1/2)d^{2}=\|\mathbf{m}_{1}-\mathbf{m}_{2}\|_{2}^{2}+\mathbf{Tr}\left(\mathbf{\Sigma}_{1}+\mathbf{\Sigma}_{2}-2(\mathbf{\Sigma}_{1}^{1/2}\mathbf{\Sigma}_{2}\mathbf{\Sigma}_{1}^{1/2})^{1/2}\right)d2=∥m1−m2∥22+Tr(Σ1+Σ2−2(Σ11/2Σ2Σ11/2)1/2)
这个公式在几项工作中都有涉及[14,40, 22, 9]。特别需要注意的是,我们有:
Tr((Σ11/2Σ2Σ11/2)1/2)=Tr((Σ21/2Σ1Σ21/2)1/2)\mathbf{Tr}\left((\mathbf{\Sigma}_{1}^{1/2}\mathbf{\Sigma}_{2}\mathbf{\Sigma}_{1}^{1/2})^{1/2}\right)=\mathbf{Tr}\left((\mathbf{\Sigma}_{2}^{1/2}\mathbf{\Sigma}_{1}\mathbf{\Sigma}_{2}^{1/2})^{1/2}\right)Tr((Σ11/2Σ2Σ11/2)1/2)=Tr((Σ21/2Σ1Σ21/2)1/2)
在可交换的情况下,即Σ1Σ2=Σ2Σ1\mathbf{\Sigma}_{1}\mathbf{\Sigma}_{2} = \mathbf{\Sigma}_{2}\mathbf{\Sigma}_{1}Σ1Σ2=Σ2Σ1,公式10变为:
d2=∥m1−m2∥22+∥Σ11/2−Σ21/2∥F2=(x1−x2)2+(y1−y2)2+(w1−w2)2+(h1−h2)24=l2-norm([x1,y1,w12,h12]⊤,[x2,y2,w22,h22]⊤)\begin{aligned}{d^{2}=}&{{}\|\mathbf{m}_{1}-\mathbf{m}_{2}\|_{2}^{2}+\|\mathbf{\Sigma}_{1}^{1/2}-\mathbf{\Sigma}_{2}^{1/2}\|_{F}^{2}}\\ {=}&{{}(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2}+\frac{(w_{1}-w_{2})^{2}+(h_{1}-h_{2})^{2}}{4}}\\ {=}&{{}l_{2}\text{-norm}\left(\left[x_{1},y_{1},\frac{w_{1}}{2},\frac{h_{1}}{2}\right]^{\top},\left[x_{2},y_{2},\frac{w_{2}}{2},\frac{h_{2}}{2}\right]^{\top}\right)}\end{aligned}d2===∥m1−m2∥22+∥Σ11/2−Σ21/2∥F2(x1−x2)2+(y1−y2)2+4(w1−w2)2+(h1−h2)2l2-norm([x1,y1,2w1,2h1]⊤,[x2,y2,2w2,2h2]⊤)
其中,∥⋅∥F\|\cdot\|_{F}∥⋅∥F是Frobenius范数。注意,此时两个框都是水平的,公式12近似等价于l2l_{2}l2范数损失(注意www和hhh的分母额外加了2),这与水平检测中常用的损失函数一致。这也部分证明了使用Wasserstein距离作为回归损失的正确性。
为了证明公式10,可以先将其简化为中心化情况,即m1=m2=0\mathbf{m}_{1}=\mathbf{m}_{2}=\mathbf{0}m1=m2=0。接下来,如果(X,Y)(\mathbf{X},\mathbf{Y})(X,Y)是一个随机向量(高斯或非高斯)o:Rn×Rn\mathbf{o}: \mathbb{R}^{n}\times\mathbb{R}^{n}o:Rn×Rn,其协方差矩阵为
Γ=(Σ1CC⊤Σ2)\mathbf{\Gamma}=\left(\begin{array}{c c}{\mathbf{\Sigma}_{1}}&{\mathbf{C}}\\ {\mathbf{C}^{\top}}&{\mathbf{\Sigma}_{2}}\end{array}\right)Γ=(Σ1C⊤CΣ2)
则量
E(∥X−Y∥22)=Tr(Σ1+Σ2−2C)\mathbb{E}(\|\mathbf{X}-\mathbf{Y}\|_{2}^{2})=\mathbf{Tr}(\mathbf{\Sigma}_{1}+\mathbf{\Sigma}_{2}-2\mathbf{C})E(∥X−Y∥22)=Tr(Σ1+Σ2−2C)
仅依赖于Γ\mathbf{\Gamma}Γ。此外,当μ=N(0,Σ1)\boldsymbol{\mu} = \mathcal{N}(\mathbf{0},\mathbf{\Sigma}_{1})μ=N(0,Σ1)和ν=N(0,Σ2)\boldsymbol{\nu} = \mathcal{N}(\mathbf{0},\mathbf{\Sigma}_{2})ν=N(0,Σ2)时,可以限制定义W\mathbf{W}W的下确界仅遍历Rn×Rn\mathbb{R}^{n}\times\mathbb{R}^{n}Rn×Rn上协方差矩阵为上述结构的高斯律N(0,Γ)\mathcal{N}(\mathbf{0},\mathbf{\Gamma})N(0,Γ)。对C\mathbf{C}C的唯一约束是Schur补约束:
Σ1−CΣ2−1C⊤⪰0\mathbf{\Sigma}_{1}-\mathbf{C}\mathbf{\Sigma}_{2}^{-1}\mathbf{C}^{\top}\succeq0Σ1−CΣ2−1C⊤⪰0
在上述约束下最小化函数
C↦−2Tr(C)\mathbf{C} \mapsto -2\mathbf{Tr}(\mathbf{C})C↦−2Tr(C)
将得到公式10。详细的证明由[14]给出。或者,可以像[22]那样找到一个最优传输映射。事实证明,N(m2,Σ2)\mathcal{N}(\mathbf{m}_{2},\mathbf{\Sigma}_{2})N(m2,Σ2)是N(m1,Σ1)\mathcal{N}(\mathbf{m}_{1},\mathbf{\Sigma}_{1})N(m1,Σ1)在线性映射下的像:
x⟶m2+A(x−m1)\mathbf{x} \longrightarrow \mathbf{m}_{2}+\mathbf{A}(\mathbf{x}-\mathbf{m}_{1})x⟶m2+A(x−m1)
其中
A=Σ1−1/2(Σ11/2Σ2Σ11/2)1/2Σ1−1/2=A⊺\mathbf{A}=\mathbf{\Sigma}_{1}^{-1/2}(\mathbf{\Sigma}_{1}^{1/2}\mathbf{\Sigma}_{2}\mathbf{\Sigma}_{1}^{1/2})^{1/2}\mathbf{\Sigma}_{1}^{-1/2}=\mathbf{A}^{\intercal}A=Σ1−1/2(Σ11/2Σ2Σ11/2)1/2Σ1−1/2=A⊺
为了验证这个映射将N(m1,Σ1)\mathcal{N}(\mathbf{m}_{1},\mathbf{\Sigma}_{1})N(m1,Σ1)映射到N(m2,Σ2)\mathcal{N}(\mathbf{m}_{2},\mathbf{\Sigma}_{2})N(m2,Σ2),在m1=m2=0\mathbf{m}_{1}=\mathbf{m}_{2}=\mathbf{0}m1=m2=0的简单情况下,可以定义随机列向量X∼N(m1,Σ1)\mathbf{X} \sim \mathcal{N}(\mathbf{m}_{1},\mathbf{\Sigma}_{1})X∼N(m1,Σ1),和Y=AX\mathbf{Y} = \mathbf{A}\mathbf{X}Y=AX,并写出
E(YY⊤)=AE(XX⊤)A⊤=Σ11/2(Σ11/2Σ2Σ11/2)1/2(Σ11/2Σ2Σ11/2)1/2Σ11/2=Σ2\begin{array}{r l}{\mathbb{E}(\mathbf{Y}\mathbf{Y}^{\top})=}&{\mathbf{A}\mathbb{E}(\mathbf{X}\mathbf{X}^{\top})\mathbf{A}^{\top}}\\ &{=\mathbf{\Sigma}_{1}^{1/2}(\mathbf{\Sigma}_{1}^{1/2}\mathbf{\Sigma}_{2}\mathbf{\Sigma}_{1}^{1/2})^{1/2}(\mathbf{\Sigma}_{1}^{1/2}\mathbf{\Sigma}_{2}\mathbf{\Sigma}_{1}^{1/2})^{1/2}\mathbf{\Sigma}_{1}^{1/2}}\\ &{=\mathbf{\Sigma}_{2}}\end{array}E(YY⊤)=AE(XX⊤)A⊤=Σ11/2(Σ11/2Σ2Σ11/2)1/2(Σ11/2Σ2Σ11/2)1/2Σ11/2=Σ2
为了验证这个映射是最优的,可以使用
E(∥X−Y∥22)=E(∥X∥22)+E(∥Y∥22)−2E(<X,Y>)=Tr(Σ1)+Tr(Σ2)−2E(<X,AX>)=Tr(Σ1)+Tr(Σ2)−2Tr(Σ1A)\begin{aligned}{\mathbb{E}(\|\mathbf{X}-\mathbf{Y}\|_{2}^{2})=}&{\mathbb{E}(\|\mathbf{X}\|_{2}^{2})+\mathbb{E}(\|\mathbf{Y}\|_{2}^{2})-2\mathbb{E}(<\mathbf{X},\mathbf{Y}>)}\\ =&{\mathbf{Tr}(\mathbf{\Sigma}_{1})+\mathbf{Tr}(\mathbf{\Sigma}_{2})-2\mathbb{E}(<\mathbf{X},\mathbf{AX}>)}\\ =&{\mathbf{Tr}(\mathbf{\Sigma}_{1})+\mathbf{Tr}(\mathbf{\Sigma}_{2})-2\mathbf{Tr}(\mathbf{\Sigma}_{1}\mathbf{A})}\end{aligned}E(∥X−Y∥22)===E(∥X∥22)+E(∥Y∥22)−2E(<X,Y>)Tr(Σ1)+Tr(Σ2)−2E(<X,AX>)Tr(Σ1)+Tr(Σ2)−2Tr(Σ1A)
并观察到,根据迹的循环性质,
Tr(Σ1A)=Tr((Σ11/2Σ2Σ11/2)1/2)\mathbf{Tr}(\mathbf{\Sigma}_{1}\mathbf{A})=\mathbf{Tr}((\mathbf{\Sigma}_{1}^{1/2}\mathbf{\Sigma}_{2}\mathbf{\Sigma}_{1}^{1/2})^{1/2})Tr(Σ1A)=Tr((Σ11/2Σ2Σ11/2)1/2)
将这些推广到椭圆分布族和无限维希尔伯特空间可能是容易的。最近,[50]研究了关于此类距离的高斯分布的一些更“几何”的性质。
6.2. 改进的基于GWD的回归损失
在表9中,我们比较了三种不同形式的基于GWD的回归损失,包括d2d^{2}d2、1 − 1(τ+f(d2))1\!-\!\frac{1}{(\tau+f(d^{2}))}1−(τ+f(d2))1和f(d2)f(d^{2})f(d2)。直接使用GWD(d2d^{2}d2)作为回归损失的性能极差,仅为49.11%,这是由于其快速增长的趋势导致的(如图6左侧所示)。换句话说,回归损失d2d^{2}d2对大误差过于敏感。相比之下,1 − 1(τ+f(d2))1\!-\!\frac{1}{(\tau+f(d^{2}))}1−(τ+f(d2))1通过拟合IoU损失实现了显著的性能提升。这种损失形式引入了两个新的超参数:用于转换Wasserstein距离的非线性函数f(⋅)f(\cdot)f(⋅),以及用于调节整个损失的常数τ\tauτ。从表9中可以看出,使用sqrt函数的总体性能优于使用log函数,大约高出0.98±0.3%。对于f(⋅)=sqrtf(\cdot)=\mathrm{sqrt}f(⋅)=sqrt且τ=2\tau=2τ=2的情况,模型达到了最佳性能,约为68.93%。为了进一步减少损失函数的超参数数量,我们直接使用非线性变换后的GWD(f(d2)f(d^{2})f(d2))作为回归损失。如图6中的红色框所示,在使用非线性函数sqrt进行变换后,f(d2)f(d^{2})f(d2)仍然呈现出近乎线性的趋势,并且仅达到了54.27%的性能。相比之下,log函数能更好地使f(d2)f(d^{2})f(d2)的变化值接近IoU损失(见图6中的绿色框),并实现了最高性能,约为69.82%。总的来说,我们不需要严格拟合IoU损失,而且回归损失不应该对大误差过于敏感。
致谢
作者杨雪得到了上海交通大学吴文俊荣誉博士奖学金和人工智能研究院的支持。作者感谢张给帆和刘明寰的有益讨论。
# 测试gwd
import torch
def gwd_loss(pred, target, fun='log1p', tau=1.0, alpha=1.0, normalize=True):
xy_p, Sigma_p = pred
xy_t, Sigma_t = target
xy_distance = (xy_p - xy_t).square().sum(dim=-1)
whr_distance = Sigma_p.diagonal(dim1=-2, dim2=-1).sum(dim=-1)
whr_distance = whr_distance + Sigma_t.diagonal(
dim1=-2, dim2=-1).sum(dim=-1)
_t_tr = (Sigma_p.bmm(Sigma_t)).diagonal(dim1=-2, dim2=-1).sum(dim=-1)
_t_det_sqrt = (Sigma_p.det() * Sigma_t.det()).clamp(1e-7).sqrt()
whr_distance = whr_distance + (-2) * (
(_t_tr + 2 * _t_det_sqrt).clamp(1e-7).sqrt())
distance = (xy_distance + alpha * alpha * whr_distance).clamp(1e-7).sqrt()
if normalize:
scale = 2 * (
_t_det_sqrt.clamp(1e-7).sqrt().clamp(1e-7).sqrt()).clamp(1e-7)
distance = distance / scale
return postprocess(distance, fun=fun, tau=tau)
def postprocess(distance, fun='log1p', tau=1.0):
"""Convert distance to loss.
Args:
distance (torch.Tensor)
fun (str, optional): The function applied to distance.
Defaults to 'log1p'.
tau (float, optional): Defaults to 1.0.
Returns:
loss (torch.Tensor)
"""
if fun == 'log1p':
distance = torch.log1p(distance)
elif fun == 'sqrt':
distance = torch.sqrt(distance.clamp(1e-7))
elif fun == 'none':
pass
else:
raise ValueError(f'Invalid non-linear function {fun}')
if tau >= 1.0:
return 1 - 1 / (tau + distance)
else:
return distance
def xy_wh_r_2_xy_sigma(xywhr):
"""Convert oriented bounding box to 2-D Gaussian distribution.
Args:
xywhr (torch.Tensor): rbboxes with shape (N, 5).
Returns:
xy (torch.Tensor): center point of 2-D Gaussian distribution
with shape (N, 2).
sigma (torch.Tensor): covariance matrix of 2-D Gaussian distribution
with shape (N, 2, 2).
"""
_shape = xywhr.shape
assert _shape[-1] == 5
xy = xywhr[..., :2]
wh = xywhr[..., 2:4].clamp(min=1e-7, max=1e7).reshape(-1, 2)
r = xywhr[..., 4]
cos_r = torch.cos(r)
sin_r = torch.sin(r)
R = torch.stack((cos_r, -sin_r, sin_r, cos_r), dim=-1).reshape(-1, 2, 2)
S = 0.5 * torch.diag_embed(wh)
sigma = R.bmm(S.square()).bmm(R.permute(0, 2,
1)).reshape(_shape[:-1] + (2, 2))
return xy, sigma
if __name__ == '__main__':
print(torch.cuda.is_available())
obbox1 = torch.tensor([100, 100, 10, 50, 0]).float().reshape(-1, 5).cuda()
obbox2 = torch.tensor([100, 100, 10, 50, 90]).float().reshape(-1, 5).cuda()
pred = xy_wh_r_2_xy_sigma(obbox1)
target = xy_wh_r_2_xy_sigma(obbox2)
loss = gwd_loss(pred, target)
print(loss)