各种 IoU 损失变体
IoU 损失及其各种变体已经在密集预测任务中展现出了优异的效果。这里做一个简单的罗列与梳理。
修改记录:
- 2024-4-25:添加 Inner-IoU 和 Focaler-IoU。
IoU
IoU = inner union \begin{align} \text{IoU} & = \frac{\text{inner}}{\text{union}} \end{align} IoU=unioninner
这里的分子分母在不同任务中可以有着不同的定义,例如分割任务中表示目标区域,而目标检测任务中可以表示边界框。
这里列出后面可能用到的定义:
- P P P:表示预测值,其高和宽表示为 h P , w P h_P,w_P hP,wP,中心点表示为 c P = ( c x P , c y p ) c_P = (cx_P, cy_p) cP=(cxP,cyp)。
- G G G:表示真实值,其高和宽表示为 h G , w G h_G,w_G hG,wG,中心点表示为 c G = ( c y P , c y p ) c_G = (cy_P, cy_p) cG=(cyP,cyp)。
- inner = ∣ P ∩ G ∣ \text{inner} = |P \cap G| inner=∣P∩G∣:二者的交集区域面积。
- union = ∣ P ∪ G ∣ \text{union} = |P \cup G| union=∣P∪G∣:二者的并集区域面积。
- C C C:表示包围 P , G P,G P,G 的最小外接框,其高和宽表示为 h C , w C h_C,w_C hC,wC,中心点表示为 c C = ( c x C , c y C ) c_C = (cx_C, cy_C) cC=(cxC,cyC),对角线表示为 d C d_C dC。
IoU Loss
L IoU = 1 − IoU \begin{align} L_{\text{IoU}} = 1 - \text{IoU} \end{align} LIoU=1−IoU
- ∣ ⋅ ∣ | \cdot | ∣⋅∣ 表示区域面积或者是框的包围面积。
- 取值范围: [ 0 , 1 ] [0, 1] [0,1]
IoU Loss 的不足:
- 如果两个边界框没有重叠部分(non-overlapping),IoU=0,模型参数的梯度为 0 得不到更新。所以,使用 IoU 损失函数训练神经网络的收敛速度会很慢。
- 如果不同的预测框与真值框有相同的 IoU,无法衡量不同的预测框的好坏。
CVPR 2019 | GIoU: Generalized IoU Loss
GIoU = IoU − ∣ C − P ∪ G ∣ ∣ C ∣ \begin{align} \text{GIoU} = \text{IoU} - \frac{|C - P \cup G|}{|C|} \end{align} GIoU=IoU−∣C∣∣C−P∪G∣
- 取值范围:
(
−
1
,
1
]
(-1, 1]
(−1,1]
- 完全重合时,GIoU = IoU,此时值为 1。
- 当两个框重叠区域为 0,间隔无限远的时候,此时 GIoU 值趋于 -1。
GIoU Loss:
L GIoU = 1 − GIoU \begin{align} L_{\text{GIoU}} = 1 - \text{GIoU} \end{align} LGIoU=1−GIoU
C C C 的作用是作为一个惩罚项将预测框向真实框靠拢。对于预测框与真实框不重叠的情况,GIoU 通过向目标框缓慢移动来增加二者的重叠区域以达到最大化预测框与真实框之间重叠区域的目的,这是一个不断迭代的过程。使用 GIoU 可以解决预测框与真实框无重叠区域造成的梯度消失问题,可以得到比 MSE 和 IoU 损失函数更高精度的预测框,但是存在迭代速度慢和边界框回归错误的问题。
GIoU Loss 不足:
- 如果两个框处于包含状态,GIoU 就退变为 IoU,起不到大小、形状上的额外约束。
- 还有一种特殊情况,GIoU 也会退变为 IoU,即两个框某个边完全重合,即 C = P ∪ G C=P \cup G C=P∪G。
AAAI 2020 | DIoU: Distance IoU Loss
DIoU = IoU − ρ 2 ( P , G ) d C 2 \begin{align} \text{DIoU} = \text{IoU} - \frac{\rho^2(P, G)}{d_C^2} \end{align} DIoU=IoU−dC2ρ2(P,G)
- ρ ( P , G ) \rho(P, G) ρ(P,G) 表示预测框 P P P 与真实框 G G G 中心点的 欧式距离,即 2 范数( ∥ c P − c G ∥ 2 \|c_P - c_G\|_2 ∥cP−cG∥2)。
- d C d_C dC 表示覆盖预测框与真实框的最小闭合框的对角线长度。
L DIoU = 1 − DIoU \begin{align} L_{\text{DIoU}} = 1 - \text{DIoU} \end{align} LDIoU=1−DIoU
- 当两个框无线接近时,IoU Loss = GIoU Loss = DIoU loss = 0
- 当两个框无穷远时,IoU Loss 等于 1,GIoU Loss 和 DIoU Loss 趋于 2
DIoU 中提出了两个问题,并解决了第一个问题:
- 能否直接优化预测框和真值框之间的距离来使模型快速收敛。
- 当预测框和真值框有重叠时,能否更加准确的做回归。
DIoU 损失使用了预测框与真实框中心点之间的归一化距离,对于回归问题是尺度不变的。
与 GIoU 损失一样,DIoU 损失也为非重叠情况下的预测框提供了移动方向;与 GIoU 损失不一样的是,DIoU 损失直接最小化了预测框和真实框之间的距离,即使在真实框具有水平和垂直方向时,其收敛速度也比 GIoU 要快得多。DIoU 损失可以加快神经网络的训练过程并且得到更准确的边界框回归结果,将其用于非极大值抑制 (NMS) 过程中的指标时,可以在有遮挡的情况下提供更为鲁棒的结果。
但是 DIOU 损失函数计算过程只包含了边界框与预测框重叠面积和中心点距离,并没有考虑两框的长宽比。
AAAI 2020 | CIoU: Complete IoU
CIoU = IoU − ρ 2 ( P , G ) d C 2 − β v \begin{align} \text{CIoU} = \text{IoU} - \frac{\rho^2(P, G)}{d_C^2} - \beta v \end{align} CIoU=IoU−dC2ρ2(P,G)−βv
- v = 4 π 2 ( arctan w G h G − arctan w P h P ) 2 v = \frac{4}{\pi^2}(\arctan \frac{w_G}{h_G} - \arctan \frac{w_P}{h_P})^2 v=π24(arctanhGwG−arctanhPwP)2 用来度量预测框和真值框长宽比的相似性。
- β = v 1 − IoU + v \beta = \frac{v}{1 - \text{IoU} + v} β=1−IoU+vv 为权重系数。
L CIoU = 1 − CIoU \begin{align} L_{\text{CIoU}} = 1 - \text{CIoU} \end{align} LCIoU=1−CIoU
可以知道,CIoU 损失包含了以下 3 个几何因子:
- 预测框与真实框重叠区域面积的 IoU 损失。
- 预测框与真实框中心点之间归一化的距离。
- 预测框与真实框纵横比差异。
CIoU 同时解决了上面的两个问题。同时考虑了长宽比。
- 当预测框和真值框距离较远时,权重变小,他们的长宽比相对来说重要程度变小,模型同时拉近预测框和真值框的中心点距离。
- 当预测框和真值框距离较近时,权重变大,长宽比重要程度变大,模型优化预测框和真值框的长宽比,模型依然还要拉近预测框和真值框的中心点距离。
与 GIoU 和 DIoU 一样,CIoU 也是通过迭代将预测框向真实框移动,但是 CIoU 所需要的迭代次数更少,并且得到的预测框与真实框的纵横比更为接近。
Enhanced Completed IoU
后续的工作改进了 CIoU 的权重系数的取值:
L Enhanced-CIoU = 1 − IoU + ρ 2 ( P , G ) d C 2 + β ′ v \begin{align} L_{\text{Enhanced-CIoU}} = 1 - \text{IoU} + \frac{\rho^2(P, G)}{d_C^2} + \beta' v \\ \end{align} LEnhanced-CIoU=1−IoU+dC2ρ2(P,G)+β′v
- v = 4 π 2 ( arctan w G h G − arctan w P h P ) 2 v = \frac{4}{\pi^2}(\arctan \frac{w_G}{h_G} - \arctan \frac{w_P}{h_P})^2 v=π24(arctanhGwG−arctanhPwP)2 用来度量长宽比的相似性。
- β ′ = { 0 if IoU < 0.5 v 1 − IoU + v if IoU ≥ 0.5 \beta' = \begin{cases} 0 & \text{ if } \text{IoU} < 0.5 \\ \frac{v}{1 - \text{IoU} + v} & \text{ if } \text{IoU} \ge 0.5 \end{cases} β′={01−IoU+vv if IoU<0.5 if IoU≥0.5
该公式表明:
- 在 IoU<0.5 时,CIoU 退变为 DIoU,只考虑预测框和真值框之间的中心点距离。
- 在 IoU>0.5 时,模型才同时考虑预测框和真值框之间的中心点距离,以及预测框的长宽比和真值框的长宽比的相似程度。随着 IoU 的变大,预测框和真值框越相近,权重变大,长宽比的重要程度也变大,模型更加注重长宽比的细节优化。
Neurocomputing 2022 | EIoU: Efficient IoU Loss
EIoU = DIoU − ρ 2 ( w P , w G ) w C 2 − ρ 2 ( h P , h G ) h C 2 \begin{align} \text{EIoU} = \text{DIoU} - \frac{\rho^2(w_P, w_G)}{w_C^2} - \frac{\rho^2(h_P, h_G)}{h_C^2} \end{align} EIoU=DIoU−wC2ρ2(wP,wG)−hC2ρ2(hP,hG)
- w C w_C wC 和 h C h_C hC 是覆盖预测框与真实框的最小闭合框 C C C 的宽和高。
- 这里的 ρ 2 \rho^2 ρ2 表示的计算两个数值之间差值的平方。
L EIoU = L IoU + L d i s + L a s p = 1 − IoU + ρ 2 ( P , G ) c 2 + ρ 2 ( w P , w G ) w C 2 + ρ 2 ( h P , h G ) h C 2 = 1 − IoU + ρ 2 ( P , G ) w C 2 + h C 2 + ρ 2 ( w P , w G ) w C 2 + ρ 2 ( h P , h G ) h C 2 \begin{align} L_{\text{EIoU}} & = L_{\text{IoU}} + L_{dis} + L_{asp} \\ & = 1 - \text{IoU} + \frac{\rho^2(P, G)}{c^2} + \frac{\rho^2(w_P, w_G)}{w_C^2} + \frac{\rho^2(h_P, h_G)}{h_C^2} \\ & = 1 - \text{IoU} + \frac{\rho^2(P, G)}{w_C^2 + h_C^2} + \frac{\rho^2(w_P, w_G)}{w_C^2} + \frac{\rho^2(h_P, h_G)}{h_C^2} \end{align} LEIoU=LIoU+Ldis+Lasp=1−IoU+c2ρ2(P,G)+wC2ρ2(wP,wG)+hC2ρ2(hP,hG)=1−IoU+wC2+hC2ρ2(P,G)+wC2ρ2(wP,wG)+hC2ρ2(hP,hG)
EIoU 在 CIoU 的基础上将长宽比拆开,明确地衡量了三个几何因素的差异,即重叠区域、中心点和边长,同时引入 Fcoal loss 解决了难易样本不平衡的问题。认为简单的任务框回归不需要用过大的权重来学习,而复杂的任务框回归需要大权重来学习,进而将 EIOU loss 进行改进提出 Focal EIOU loss 公式见下:
L Focal-EIoU = IoU γ L EIoU \begin{align} L_{\text{Focal-EIoU}} = \text{IoU}^\gamma L_{\text{EIoU}} \end{align} LFocal-EIoU=IoUγLEIoU
- 一般 γ \gamma γ 设置为 0.5 即可。
- 当任务简单的时候,IOU 接近为 1,整体退化为 EIoU loss。
- 当任务困难的时候,IOU 值很小,而 EIoU 的值会变大。由于 IOU 的值小于 1,说明变换小于 EIoU Loss 变换。总体遇到难的任务时 loss 会增大,增加对难的回归样本的学习。
NeurlPS 2021 | α \alpha α-IoU
α \alpha α-IoU 将现有的基于 IoU 的损失进行了一个推广。
L IoU = 1 − IoU ⇒ L α − IoU = 1 − IoU α L GIoU = 1 − IoU + ∣ C − P ∪ G ∣ ∣ C ∣ ⇒ L α − GIoU = 1 − IoU α + ( ∣ C − P ∪ G ∣ ∣ C ∣ ) α L DIoU = 1 − IoU + ρ 2 ( P , G ) d C 2 ⇒ L α − DIoU = 1 − IoU α + ρ 2 α ( P , G ) d C 2 α L CIoU = 1 − IoU + ρ ( P , G ) d C 2 + β v ⇒ L α − CIoU = 1 − IoU α + ρ 2 α ( P , G ) d C 2 α + ( β v ) α \begin{align} L_{\text{IoU}} = 1 - \text{IoU} & \Rightarrow L_{\alpha-\text{IoU}} = 1 - \text{IoU}^\alpha \\ L_{\text{GIoU}} = 1 - \text{IoU} + \frac{|C - P \cup G|}{|C|} & \Rightarrow L_{\alpha-\text{GIoU}} = 1 - \text{IoU}^\alpha + (\frac{|C - P \cup G|}{|C|})^{\alpha} \\ L_{\text{DIoU}} = 1 - \text{IoU} + \frac{\rho^2(P, G)}{d_C^2} & \Rightarrow L_{\alpha-\text{DIoU}} = 1 - \text{IoU}^\alpha + \frac{\rho^{2\alpha}(P, G)}{d_C^{2\alpha}} \\ L_{\text{CIoU}} = 1 - \text{IoU} + \frac{\rho(P, G)}{d_C^2} + \beta v & \Rightarrow L_{\alpha-\text{CIoU}} = 1 - \text{IoU}^\alpha + \frac{\rho^{2\alpha}(P, G)}{d_C^{2\alpha}} + (\beta v)^\alpha \\ \end{align} LIoU=1−IoULGIoU=1−IoU+∣C∣∣C−P∪G∣LDIoU=1−IoU+dC2ρ2(P,G)LCIoU=1−IoU+dC2ρ(P,G)+βv⇒Lα−IoU=1−IoUα⇒Lα−GIoU=1−IoUα+(∣C∣∣C−P∪G∣)α⇒Lα−DIoU=1−IoUα+dC2αρ2α(P,G)⇒Lα−CIoU=1−IoUα+dC2αρ2α(P,G)+(βv)α
使得 α \alpha α-IoU 可以显着超越现有的基于 IoU 的损失,通过调节 α \alpha α,使探测器更灵活地实现不同水平的 bbox 回归精度,并且 α \alpha α-IoU 对小数据集和噪声的鲁棒性更强。
并且通过实验发现,在大多数情况下,取 α = 3 \alpha=3 α=3 的效果最好。
Arxiv 2022 | SIoU
- 论文:SIoU Loss: More Powerful Learning for Bounding Box Regression
- 公式参考代码(论文中关于 L d i s t a n c e L_{distance} Ldistance 的描述有点问题,这里形式参考了第三方的实现):https://aistudio.baidu.com/aistudio/projectdetail/4198420
S I o U = I o U − L d i s t a n c e + L s h a p e 2 L d i s t a n c e = ∑ t ∈ { x , y } 1 − e − γ ρ t L s h a p e = ∑ t = { w , h } ( 1 − e − ω t ) θ , θ = 4 \begin{align} SIoU & = IoU - \frac{L_{distance} + L_{shape}}{2} \\ L_{distance} & = \sum_{t \in \{x,y\}}1 - e^{- \gamma \rho_t} \\ L_{shape} & = \sum_{t = \{w,h\}}(1 - e^{-\omega_t})^\theta, \theta = 4 \end{align} SIoULdistanceLshape=IoU−2Ldistance+Lshape=t∈{x,y}∑1−e−γρt=t={w,h}∑(1−e−ωt)θ,θ=4
- ρ x = ( c x G − c x P w C ) 2 \rho_x = (\frac{cx_{G} - cx_{P}}{w_{C}})^2 ρx=(wCcxG−cxP)2
- ρ y = ( c y G − c y P h C ) 2 \rho_y = (\frac{cy_{G} - cy_{P}}{h_{C}})^2 ρy=(hCcyG−cyP)2
- γ = 2 − angle cost = 2 − [ 1 − 2 ∗ sin 2 ( arcsin ( sin ( α ) ) − π 4 ) ] = 2 − sin ( 2 α ) , sin ( α ) = max ( c y G , c y P ) − min ( c y G , c y P ) ∥ c G − c P ∥ 2 \gamma = 2-\text{angle cost} = 2 - [1 - 2 * \sin^2(\arcsin(\sin(\alpha)) - \frac{\pi}{4})] = 2 - \sin(2\alpha), \sin(\alpha) = \frac{\max(cy_G, cy_P) - \min(cy_G, cy_P)}{\|c_G - c_P\|_2} γ=2−angle cost=2−[1−2∗sin2(arcsin(sin(α))−4π)]=2−sin(2α),sin(α)=∥cG−cP∥2max(cyG,cyP)−min(cyG,cyP)
- ω w = ∣ G w − P w ∣ max ( G w , P w ) \omega_w=\frac{|G_w-P_w|}{\max(G_w,P_w)} ωw=max(Gw,Pw)∣Gw−Pw∣
- ω h = ∣ G h − P h ∣ max ( G h , P h ) \omega_h = \frac{|G_h-P_h|}{\max(G_h,P_h)} ωh=max(Gh,Ph)∣Gh−Ph∣
SIoU 提出了一种新的 IoU 形式,重新定义了惩罚度量,考虑了期望回归之间的向量夹角。
L S I o U = 1 − SIoU \begin{align} L_{SIoU} = 1 - \text{SIoU} \end{align} LSIoU=1−SIoU
传统的目标检测损失函数依赖于边界框回归指标的聚合,例如预测框和真实框(即 GIoU、CIoU 等)的距离、重叠区域和纵横比。然而,迄今为止提出和使用的方法都没有考虑期望的真实框和预测框之间不匹配的方向。这种不足导致收敛速度较慢且效率较低,因为预测框在训练过程中可能会“四处游荡”,最终会产生一个更差的模型。
Arxiv 2307 | MPDIoU
- 论文:MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression
- 解读:https://mp.weixin.qq.com/s/Lw7jbDibrsCWWQKEvItoag
M P D I o U = I o U − d t l 2 ( P , G ) w 2 + h 2 − d b r 2 ( P , G ) w 2 + h 2 \begin{align} MPDIoU = IoU - \frac{d^2_{tl}(P, G)}{w^2 + h^2} - \frac{d^2_{br}(P, G)}{w^2 + h^2} \end{align} MPDIoU=IoU−w2+h2dtl2(P,G)−w2+h2dbr2(P,G)
- d t l 2 ( P , G ) d^2_{tl}(P, G) dtl2(P,G) 表示预测框 P P P 和 真值框 G G G 左上角点坐标的 x 和 y 的差值平方和。
- d b r 2 ( P , G ) d^2_{br}(P, G) dbr2(P,G) 表示预测框 P P P 和 真值框 G G G 右下角点坐标的 x 和 y 的差值平方和。
L M P D I o U = 1 − M P D I o U \begin{align} L_{MPDIoU} = 1 - MPDIoU \end{align} LMPDIoU=1−MPDIoU
- 值得注意的是,现有的损失函数中所考虑的因素都可以通过左上角点和右下角点的坐标来表示,例如非重叠面积、中心点距离、宽度和高度的偏差,这意味着作者提出的形式不仅考虑全面,还简化了计算过程。
- 如果预测边界框和真实标注边界框具有相同的宽高比,那么预测边界框位于真实标注边界框内的 L M P D I o U L_{MPDIoU} LMPDIoU 值低于预测边界框位于真实标注边界框外的情况。这一特性保证了边界框回归的准确性,倾向于提供具有较少冗余的预测边界框。
- 该损失始终有界, 0 ≤ L M P D I o U < 3 0 \le L_{MPDIoU} < 3 0≤LMPDIoU<3
- 在 I o U = 0 IoU=0 IoU=0 时,坐标之间的有限的差异仍然可以提供适当的损失。
Arxiv 2311 | Inner-IoU
- 论文:More Effective Intersection over Union Loss with Auxiliary Bounding Box
- 代码:https://github.com/malagoutou/Inner-IoU
- 解读:作者导读:Inner-IoU:基于辅助边框的IoU损失
Inner-IoU = inner union inter ′ = ( min ( c x G + w G ∗ θ 2 , c x P + w P ∗ θ 2 ) − max ( c x G − w G ∗ θ 2 , c x P − w P ∗ θ 2 ) ) ∗ ( min ( c y G + h G ∗ θ 2 , c y P + h P ∗ θ 2 ) − max ( c y G − h G ∗ θ 2 , c y P − h P ∗ θ 2 ) ) union ′ = θ 2 ( w G h G + w P h P ) − inter ′ \begin{align} \text{Inner-IoU} & = \frac{\text{inner}}{\text{union}} \\ \text{inter}' & = (\min(cx_{G}+\frac{w_{G}*\theta}{2}, cx_{P}+\frac{w_{P}*\theta}{2}) -\max(cx_{G}-\frac{w_{G}*\theta}{2}, cx_{P}-\frac{w_{P}*\theta}{2})) \\ & * (\min(cy_{G}+\frac{h_{G}*\theta}{2}, cy_{P}+\frac{h_{P}*\theta}{2}) -\max(cy_{G}-\frac{h_{G}*\theta}{2}, cy_{P}-\frac{h_{P}*\theta}{2})) \\ \text{union}' & = \theta^{2}(w_{G}h_{G} + w_{P}h_{P})-\text{inter}' \end{align} Inner-IoUinter′union′=unioninner=(min(cxG+2wG∗θ,cxP+2wP∗θ)−max(cxG−2wG∗θ,cxP−2wP∗θ))∗(min(cyG+2hG∗θ,cyP+2hP∗θ)−max(cyG−2hG∗θ,cyP−2hP∗θ))=θ2(wGhG+wPhP)−inter′
- θ \theta θ:尺度因子,典型范围为 [ 0.5 , 1.5 ] [0.5, 1.5] [0.5,1.5]。
Inner-IoU 损失继承了 IoU 损失的一些特性,同时具有自身的特性。和 IoU 损失一样 Inner-IoU 损失的取值范围为 [0,1]。与 IoU 损失相比,当 θ \theta θ 小于 1,辅助边框尺寸小于实际边框,其回归的有效范围小于 IoU 损失,但其梯度绝对值大于 IoU 损失所得的梯度,能够加速高 IoU 样本的收敛。与之相反,当 θ \theta θ 大于 1,较大尺度的预测框会扩大回归有效范围,对于低 Iou 的回归有所增益。所以可以更好的替换原始的 IoU。
L Inner-IoU = 1 − Inner-IoU L Inner-GIoU = L GIoU + IoU − Inner-IoU L Inner-DIoU = L DIoU + IoU − Inner-IoU L Inner-CIoU = L CIoU + IoU − Inner-IoU L Inner-EIoU = L EIoU + IoU − Inner-IoU L Inner-SIoU = L SIoU + IoU − Inner-IoU \begin{align} L_{\text{Inner-IoU}} & = 1 - \text{Inner-IoU} \\ L_{\text{Inner-GIoU}} & = L_{\text{GIoU}} + \text{IoU} - \text{Inner-IoU} \\ L_{\text{Inner-DIoU}} & = L_{\text{DIoU}} + \text{IoU} - \text{Inner-IoU} \\ L_{\text{Inner-CIoU}} & = L_{\text{CIoU}} + \text{IoU} - \text{Inner-IoU} \\ L_{\text{Inner-EIoU}} & = L_{\text{EIoU}} + \text{IoU} - \text{Inner-IoU} \\ L_{\text{Inner-SIoU}} & = L_{\text{SIoU}} + \text{IoU} - \text{Inner-IoU} \\ \end{align} LInner-IoULInner-GIoULInner-DIoULInner-CIoULInner-EIoULInner-SIoU=1−Inner-IoU=LGIoU+IoU−Inner-IoU=LDIoU+IoU−Inner-IoU=LCIoU+IoU−Inner-IoU=LEIoU+IoU−Inner-IoU=LSIoU+IoU−Inner-IoU
Arxiv 2312 | Shape-IoU
- 论文:https://arxiv.org/abs/2312.17663
- 代码:https://github.com/malagoutou/Shape-IoU
- 解读:作者导读:Shape-IoU:考虑边框形状与尺度的度量
Shape-IoU = IoU − L d i s t a n c e ′ − 0.5 × L s h a p e ′ L d i s t a n c e ′ = β h × ρ x + β w × ρ y L s h a p e ′ = ∑ t = { w , h } ( 1 − e − ω t ) θ , θ = 4 β w = 2 × G w s c a l e G w s c a l e + G h s c a l e β h = 2 × G h s c a l e G h s c a l e + G h s c a l e \begin{align} \text{Shape-IoU} & = \text{IoU} - L'_{distance} - 0.5 \times L'_{shape} \\ L'_{distance} & = \beta_h \times \rho_x + \beta_w \times \rho_y \\ L'_{shape} & = \sum_{t = \{w,h\}}(1 - e^{-\omega_t})^\theta, \theta = 4 \\ \beta_w & = \frac{2 \times G_w^{scale}}{G_w^{scale} + G_h^{scale}} \\ \beta_h & = \frac{2 \times G_h^{scale}}{G_h^{scale} + G_h^{scale}} \end{align} Shape-IoULdistance′Lshape′βwβh=IoU−Ldistance′−0.5×Lshape′=βh×ρx+βw×ρy=t={w,h}∑(1−e−ωt)θ,θ=4=Gwscale+Ghscale2×Gwscale=Ghscale+Ghscale2×Ghscale
- s c a l e scale scale 是一个与数据集相关的尺度因子,这里用作指数。
- ρ x = ( c x G − c x P w C ) 2 \rho_x = (\frac{cx_{G} - cx_{P}}{w_{C}})^2 ρx=(wCcxG−cxP)2
- ρ y = ( c y G − c y P h C ) 2 \rho_y = (\frac{cy_G - cy_P}{h_C})^2 ρy=(hCcyG−cyP)2
- ω w = β w × ∣ w G − w P ∣ max ( w G , w P ) \omega_w = \beta_w \times \frac{|w_G-w_P|}{\max(w_G,w_P)} ωw=βw×max(wG,wP)∣wG−wP∣
- ω h = β h × ∣ h G − h P ∣ max ( h G , h P ) \omega_h = \beta_h \times \frac{|h_G-h_P|}{\max(h_G,h_P)} ωh=βh×max(hG,hP)∣hG−hP∣
在 SIoU 的基础上强化了对于真值边界框形状(宽高比例)信息和目标尺度信息的关注。所以这里的 ω w \omega_w ωw 和 ω h \omega_h ωh 可以用于迁移到小目标检测(Tiny Object Detection)领域中的 Dot Distance 和 Normalized Wasserstein Distance(NWD)上,用于调整中心坐标距离。
L s h a p e − I o U = 1 − Shape-IoU L_{shape-IoU} = 1 - \text{Shape-IoU} Lshape−IoU=1−Shape-IoU
Arixv 2401 | Focaler-IoU
- 论文:https://arxiv.org/abs/2401.10525
- 代码:https://github.com/malagoutou/Focaler-IoU
- 解读:作者导读:Focaler-IoU:一种改进的IoU损失函数
Focaler-IoU = { 0 if IoU < d IoU − d u − d if d ≪ IoU ≪ u 1 if IoU > u \begin{align} \text{Focaler-IoU} & = \begin{cases} 0 & \text{ if } \text{IoU} < d \\ \frac{\text{IoU} - d}{u - d} & \text{ if } d \ll \text{IoU} \ll u \\ 1 & \text{ if } \text{IoU} > u \end{cases} \end{align} Focaler-IoU=⎩ ⎨ ⎧0u−dIoU−d1 if IoU<d if d≪IoU≪u if IoU>u
- [ d , u ] ∈ [ 0 , 1 ] [d, u] \in [0, 1] [d,u]∈[0,1]:可以调整 d d d 与 u u u 的值从而促使 Focaler-IoU 聚焦不同的回归样本。
样本不均衡问题存在于各类目标检测任务中,根据目标被检测的难易可以被分为困难样本与简单样本。从目标的尺度来分析,一般的检测目标可以被看作是简单样本,极小目标由于难以精准定位可以看作困难样本。对于简单样本占主导的检测任务,在边框回归过程聚焦简单样本,将有助于提升检测效果。对于困难样本占比较高的检测任务来说与之相反,需要聚焦困难样本的边框回归。为了在能够在不同的检测任务中聚焦不同的回归样本,Focaler-IoU 使用线性区间映射的方法来重构 IoU 损失,使得边框回归效果得到提升。
L Focaler-IoU = 1 − Focaler-IoU L Focaler-GIoU = L GIoU + I o U − Focaler-IoU L Focaler-DIoU = L DIoU + I o U − Focaler-IoU L Focaler-CIoU = L CIoU + I o U − Focaler-IoU L Focaler-EIoU = L EIoU + I o U − Focaler-IoU L Focaler-SIoU = L SIoU + I o U − Focaler-IoU \begin{align} L_{\text{Focaler-IoU}} & = 1 - \text{Focaler-IoU} \\ L_{\text{Focaler-GIoU}} & = L_{\text{GIoU}} + IoU - \text{Focaler-IoU} \\ L_{\text{Focaler-DIoU}} & = L_{\text{DIoU}} + IoU - \text{Focaler-IoU} \\ L_{\text{Focaler-CIoU}} & = L_{\text{CIoU}} + IoU - \text{Focaler-IoU} \\ L_{\text{Focaler-EIoU}} & = L_{\text{EIoU}} + IoU - \text{Focaler-IoU} \\ L_{\text{Focaler-SIoU}} & = L_{\text{SIoU}} + IoU - \text{Focaler-IoU} \\ \end{align} LFocaler-IoULFocaler-GIoULFocaler-DIoULFocaler-CIoULFocaler-EIoULFocaler-SIoU=1−Focaler-IoU=LGIoU+IoU−Focaler-IoU=LDIoU+IoU−Focaler-IoU=LCIoU+IoU−Focaler-IoU=LEIoU+IoU−Focaler-IoU=LSIoU+IoU−Focaler-IoU
参考链接
- 目标检测中的 IoU loss 变种 - Mr.Jian 的文章 - 知乎 https://zhuanlan.zhihu.com/p/406384631
- 一文搞懂 EIoU 与 SIoU - 弗拉基米尔的文章 - 知乎 https://zhuanlan.zhihu.com/p/537428926
- 《一文搞懂 IoU 发展历程》GIoU、DIoU、CIoU、EIoU、αIoU、SIoU:https://blog.youkuaiyun.com/weixin_43694096/article/details/126455488