原文链接:https://www.yuque.com/yahei/hey-yahei/objects_detection#zoJwH
目标检测中最经典的损失函数就是Faster RCNN所用的“softmax交叉熵分类损失 + SmoothL1回归损失”的形式,后来有很多改进的目标检测网络、方案也陆续提出了一些损失函数上的改进。
参考:
分类损失的改进主要是解决目标检测中样本不均衡的问题,通常是给难易样本设置一个自适应的权重损失。
论文:《Focal Loss for Dense Object Detection (ICCV2017)》RetinaNet
作者设计了一个自适应加权的loss,为难样例设置更大的权重,从而提升训练效果。
首先考虑一个二分类的交叉熵(为方便起见,用二分类进行讨论,同理可推广至多分类情况),
C E ( p t ) = − l o g ( p t ) = { − l o g ( p ) , y = 1 − l o g ( 1 − p ) , y = − 1 CE(p_t) = -log(p_t) = \begin{cases} -log(p), & y=1 \\ -log(1-p), & y=-1 \end{cases} CE(pt)=−log(pt)={−log(p),−log(1−p),y=1y=−1
其中, y ∈ { − 1 , 1 } y \in \{-1, 1\} y∈{−1,1},而 p p p是预测为 y = 1 y=1 y=1的概率
加入一个人工设置的权重 α \alpha α,缓解样本不均衡的问题,
$$CE’(p_t) = - \alpha_t log(p_t) = \begin{cases}
实际操作中,Focal Loss可以结合人工设置的 α \alpha α一起使用,即
F L ( p t ) = − α t ( 1 − p t ) γ l o g ( p t ) FL(p_t) = - \alpha_t \ (1 - p_t)^\gamma \ log(p_t) FL(pt)=−αt (1−pt)γ log(pt)
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODU5MDY1NjkwMzAtOWQ0ZTNhNDUtZWIwYS00ZTNmLTlmYjktNGYzNDJkYTIxMmI1LnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=551&margin=[object Object]&name=image.png&originHeight=1102&originWidth=1934&size=278861&status=done&style=none&width=967)
Focal Loss有两个超参 γ \gamma γ和 α \alpha α需要设置,之后一些新的分类损失则进一步简化了形式,提出一些不需要设置额外超参的loss。
论文:《Class-Balanced Loss Based on Effective Number of Samples (CVPR2019)》 参考译文
论文提出用样本数量来调节为已有的损失函数加权,以此来缓解样本不均衡问题,应用在Focal Loss上则为
C B focal ( z , y ) = − 1 − β 1 − β n y ∑ i = 1 C ( 1 − p i t ) γ log ( p i t ) \mathrm{CB}_{\text {focal }}(\mathbf{z}, y)=-\frac{1-\beta}{1-\beta^{n_{y}}} \sum_{i=1}^{C}\left(1-p_{i}^{t}\right)^{\gamma} \log \left(p_{i}^{t}\right) CBfocal (z,y)=−1−βny1−βi=1∑C(1−pit)γlog(pit)
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODY0MzI2MTA1MjktNWFhZGMwMjgtNGI3Zi00MGY0LWJjY2MtM2Y5Y2M3N2EwNmExLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=295&margin=[object Object]&name=image.png&originHeight=295&originWidth=582&size=92574&status=done&style=none&width=582)
其中,
β ∈ ( 0 , 1 ) \beta \in (0, 1) β∈(0,1)是一个超参;
n y n_y ny是训练集上类别 y y y的样本数;
当 n y n_y ny越大, β n y \beta^{n_y} βny越小,权重 1 − β 1 − β n y \frac{1-\beta}{1-\beta^{n_y}} 1−βny1−β越小,也即样本数量越多,那么他对损失的贡献就越小
论文:《Towards Accurate One-Stage Object Detection With AP-Loss (CVPR2019)》
参考:《感知算法论文(九):Towards Accurate One-Stage Object Detection with AP-Loss | CSDN, 呆呆的猫》
Average Precision Loss(AP Loss)对每个预测框进行排序,用排序后的序号来设计loss,核心思想在于鼓励正样本预测框的得分在负样本得分序列中尽可能靠前。启发自AUC Loss,后者用AUC的排序序号来设计loss,直接对AUC进行优化,而目标检测通常以mAP为指标,因此作者指出直接对AP进行优化能有更好的效果。
Bounding Box的设置方式跟传统的设置方式有些不同。比如有 K K K个分类,
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYwNzk5NzY1NjgtNWUyOTU4OTctMjZhZC00NDE4LTk4MzQtNmMxNTQyMzI2ZGZmLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=217&margin=[object Object]&name=image.png&originHeight=434&originWidth=986&size=274647&status=done&style=none&width=493)
(左:一个label,属于分类k; 右:K个label,第k个为1)
AP Loss的具体设计(与GTBox的IoU超过阈值为正样本,否则为负样本):
相比于Focal Loss有比较明显的提升,而且不需要调整任何超参:
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYwOTYwMDI3MjItN2YzNjA5ZTMtNmE4ZS00MmFkLTk1ZTktZDI1OTAzNjUxOGM5LnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=147&margin=[object Object]&name=image.png&originHeight=352&originWidth=1106&size=62005&status=done&style=none&width=463)
(在RetinaNet上使用不同分类损失的实验结果)
论文:《Gradient Harmonized Single-stage Detector (AAAI2019)》GHM-C和GHM-R
Gradient Harmonized Mechanism(GHM)通过利用计算损失前的特征的梯度信息,对原损失进行规范化操作。包括针对分类损失改进的GHM-C和针对回归损失改进的GHM-R。该损失只有一个超参。
考虑某一分类的交叉熵
L C E ( p , p ∗ ) = { − log ( p ) if p ∗ = 1 − log ( 1 − p ) if p ∗ = 0 L_{C E}\left(p, p^{*}\right)=\left\{\begin{array}{ll} -\log (p) & \text { if } p^{*}=1 \\ -\log (1-p) & \text { if } p^{*}=0 \end{array}\right. LCE(p,p∗)={−log(p)−log(1−p) if p∗=1 if p∗=0
其中 p = s i g m o i d ( x ) p = sigmoid(x) p=sigmoid(x),那么(注意这里的对数是自然对数),
∂ L C E ∂ x = ∂ L C E ∂ p ∂ p ∂ x = { p − 1 if p ∗ = 1 p if p ∗ = 0 = p − p ∗ \begin{aligned} \frac{\partial L_{C E}}{\partial x}&= \frac{\partial L_{C E}}{\partial p}\frac{\partial p}{\partial x} \\ &=\left\{\begin{array}{ll} p-1 & \text { if } p^{*}=1 \\ p & \text { if } p^{*}=0 \end{array}\right. \\ &= p - p^* \end{aligned} ∂x∂LCE=∂p∂LCE∂x∂p={p−1p if p∗=1 if p∗=0=p−p∗
记梯度的绝对值为 g = ∣ ∂ L C E ∂ x ∣ = ∣ p − p ∗ ∣ g = |\frac{\partial L_{C E}}{\partial x}| = |p - p^*| g=∣∂x∂LCE∣=∣p−p∗∣;
显然, g ∈ [ 0 , 1 ] g \in [0, 1] g∈[0,1], g g g越大,那么这个样例就越hard;
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYxNjQzMDcxMzgtYzQ4ODg1OWEtZmU4Mi00MTI4LWExNWQtZTVkYmMzM2FmODA3LnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=246&margin=[object Object]&name=image.png&originHeight=564&originWidth=796&size=43687&status=done&style=none&width=347)
如上图所示,对于一个收敛的检测网络,
接下来定义第 i i i个样例上的梯度密度,
G D ( g i ) = 1 l ϵ ( g i ) ∑ k = 1 N δ ϵ ( g k , g i ) G D(g_i)=\frac{1}{l_{\epsilon}(g_i)} \sum_{k=1}^{N} \delta_{\epsilon}\left(g_{k}, g_i\right) GD(gi)=lϵ(gi)1k=1∑Nδϵ(gk,gi)
其中, N N N为一个batch的样例数, ϵ \epsilon ϵ是一个宽度,而
δ ϵ ( x , y ) = { 1 if y − ϵ 2 ≤ x < y + ϵ 2 0 otherwise \delta_{\epsilon}(x, y)=\left\{\begin{array}{ll} 1 & \text { if } y-\frac{\epsilon}{2}\leq x
l ϵ ( g i ) = min ( g i + ϵ 2 , 1 ) − max ( g i − ϵ 2 , 0 ) l_{\epsilon}(g_i)=\min \left(g_i+\frac{\epsilon}{2}, 1\right)-\max \left(g_i-\frac{\epsilon}{2}, 0\right) lϵ(gi)=min(gi+2ϵ,1)−max(gi−2ϵ,0)
直观点理解,
∑ k = 1 N δ ϵ ( g k , g i ) \sum_{k=1}^{N} \delta_{\epsilon}\left(g_{k}, g_i\right) k=1∑Nδϵ(gk,gi)表示在所有样例中,梯度绝对值在 g i g_i gi附近( ± ϵ 2 \pm \frac{\epsilon}{2} ±2ϵ范围内)的样例数量;
1 l ϵ ( g i ) \frac{1}{l_\epsilon(g_i)} lϵ(gi)1按照区间宽度 ϵ \epsilon ϵ对数量 ∑ k = 1 N δ ϵ ( g k , g i ) \sum_{k=1}^{N} \delta_{\epsilon}\left(g_{k}, g_i\right) k=1∑Nδϵ(gk,gi)进行规范化处理,将 l ϵ ( g i ) l_\epsilon(g_i) lϵ(gi)具体展开来为
l ϵ ( g i ) = { g i + ϵ 2 , 0 ≤ g i ≤ ϵ 2 ϵ , ϵ 2 < g i ≤ 1 − ϵ 2 1 + ϵ 2 − g i , 1 − ϵ 2 < g i ≤ 1 l_\epsilon(g_i) = \begin{cases} g_i + \frac{\epsilon}{2}, & 0 \leq g_i \leq \frac{\epsilon}{2} \\ \epsilon, & \frac{\epsilon}{2} < g_i \leq 1 - \frac{\epsilon}{2} \\ 1 + \frac{\epsilon}{2} - g_i, & 1 - \frac{\epsilon}{2} < g_i \leq 1 \end{cases} lϵ(gi)=⎩⎪⎨⎪⎧gi+2ϵ,ϵ,1+2ϵ−gi,0≤gi≤2ϵ2ϵ<gi≤1−2ϵ1−2ϵ<gi≤1
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYxNjQ3OTk4NjAtZmFlNjc5YTYtZDE1My00NjljLTk3ZWEtYjQ0ZjZiMTUzNmRmLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=220&margin=[object Object]&name=image.png&originHeight=2268&originWidth=3113&size=5565872&status=done&style=none&width=302)
显然, 1 l ϵ ( g i ) \frac{1}{l_\epsilon(g_i)} lϵ(gi)1对小梯度和大梯度对应的梯度密度都做了一些抑制处理。
进一步用归一化梯度密度来定义一个梯度密度协变量(gradient density harmonizing parameter),
β i = 1 G D ( g i ) / N = N G D ( g i ) \beta_{i}=\frac{1}{G D\left(g_{i}\right) / N} = \frac{N}{G D\left(g_{i}\right)} βi=GD(gi)/N1=GD(gi)N
最后用 β ^ i \hat{\beta}_i β^i为不同样例的损失进行加权以平衡难易样例的权重,
L G H M − C = 1 N ∑ i = 1 N β i L C E ( p i , p i ∗ ) = ∑ i = 1 N L C E ( p i , p i ∗ ) G D ( g i ) \begin{aligned} L_{G H M-C}&=\frac{1}{N} \sum_{i=1}^{N} \beta_{i} L_{C E}\left(p_{i}, p_{i}^{*}\right) \\ &= \sum_{i=1}^{N} \frac{L_{C E}\left(p_{i}, p_{i}^{*}\right)}{GD(g_i)} \end{aligned} LGHM−C=N1i=1∑NβiLCE(pi,pi∗)=i=1∑NGD(gi)LCE(pi,pi∗)
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYxNjYwNDM1NjctNDliYWIzZDMtMDI4Yy00MmI2LWI0M2ItYWM1MjEwMDc4OWUzLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=386&margin=[object Object]&name=image.png&originHeight=772&originWidth=2086&size=306701&status=done&style=none&width=1043)
如上图所示,CE、FL、GHM-C都可以看作是对梯度分布正则化的过程,将梯度范数调整到一个相对平缓的范围内。FL仅仅抑制了小梯度的样例数量(主要是easy负样例),而GHM-C同时抑制了大梯度的样例数量(very hard样例)。
GHM-C依赖于mini-batch的统计结果,跟BN一样,要求batch-size不能太小,否则统计量不准确将导致训练过程不稳定。
实验结果:似乎比Focal Loss稍微好一点点,但不明显
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYxNzg4MzY2NzktNTRkZjIzYmEtNmQxNC00N2U0LTk4OWQtNGRjMTI0ZDRiYmM1LnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=97&margin=[object Object]&name=image.png&originHeight=260&originWidth=1050&size=45631&status=done&style=none&width=390)
为了降低梯度密度的计算复杂度,提出了一种近似算法:
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYxNzg2MzU3MDAtNjdiZjM3ZTktMjhmZS00Nzc3LWE3OTktMTBhODBmOWQzNTYxLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=82&margin=[object Object]&name=image.png&originHeight=202&originWidth=1058&size=39750&status=done&style=none&width=431)
(GHM-C Standard和GHM-C RU分别表示原始设计和近似设计)
参考:
原始的回归损失是直接利用L1、L2或SmoothL1对坐标值/尺度进行数值回归,GHM-R是GHM在提出GHM-C分类损失的同时,采取类似的处理的一种改进思路;后来出现了直接用IoU来设计回归损失,再后来回归损失的改进都是对框回归好坏的指标改进,先后出现了GIoU、DIoU等对IoU的改进方案,从而衍生出对应的回归损失。
论文:《Gradient Harmonized Single-stage Detector (AAAI2019)》GHM-C和GHM-R
沿用GHM-C Loss的思路设计新的回归损失函数,直觉告诉我们可以这样做:
$$L_{G H M-R}=\frac{1}{N} \sum_{i=1}^{N} \beta_{i} L_{SL}\left(t_i - t_i^\right) \ < b r / > 其 中 , < b r / >
其中,
<br/>其中,<br/>L_{SL} 为 S m o o t h L 1 损 失 函 数 ; < b r / > 而 关 于 为SmoothL1损失函数;
而关于 为SmoothL1损失函数;<br/>而关于t_i 的 含 义 可 以 参 见 F a s t e r R C N N 的 预 测 框 修 正 一 节 , 为 方 便 进 一 步 解 释 , 记 的含义可以参见Faster RCNN的预测框修正一节,为方便进一步解释,记 的含义可以参见FasterRCNN的预测框修正一节,为方便进一步解释,记d_i = t_i - t_i^$$。
接下来考虑 β i \beta_i βi的合理性,
β i = N G D ( ∂ L S L ∂ d ) \beta_i = \frac{N}{GD(\frac{\partial L_{SL}}{\partial d})} βi=GD(∂d∂LSL)N
而
L S L ( d i ) = { d i 2 2 δ if ∣ d i ∣ < = δ ∣ d i ∣ − δ 2 otherwise L_{SL}(d_i) = \left\{\begin{array}{ll} \frac{d_i^{2}}{2 \delta} & \text { if }|d_i|<=\delta \\ |d_i|-\frac{\delta}{2} & \text { otherwise } \end{array}\right. LSL(di)={2δdi2∣di∣−2δ if ∣di∣<=δ otherwise
其中, δ \delta δ是认为设置的超参。
那么
∂ L S L ∂ d i = { d i δ if ∣ d i ∣ < = δ sign ( d i ) otherwise \frac{\partial L_{SL}}{\partial d_i} = \left\{\begin{array}{ll} \frac{d_i}{\delta} & \text { if }|d_i|<=\delta \\ \operatorname{sign}(d_i) & \text { otherwise } \end{array}\right. ∂di∂LSL={δdisign(di) if ∣di∣<=δ otherwise
由于GHM-R依赖梯度信息来计算Loss,所以要求不同样例的梯度能有一定的区分度。
但这里的 s i g n ( d i ) ∈ { − 1 , + 1 } sign(d_i) \in \{-1, +1\} sign(di)∈{−1,+1},于是作者设计了另一种与SmoothL1有类似效果的损失:
L A S L = d i 2 + μ 2 − μ ∂ L A S L ∂ d i = d i d i 2 + μ 2 L_{ASL} = \sqrt{d_i^{2}+\mu^{2}}-\mu \\ \frac{\partial L_{ASL}}{\partial d_i}=\frac{d_i}{\sqrt{d_i^{2}+\mu^{2}}} LASL=di2+μ2−μ∂di∂LASL=di2+μ2di
那么,记 g r i = ∂ L A S L ∂ d i gr_i = \frac{\partial L_{ASL}}{\partial d_i} gri=∂di∂LASL,则
L G H M − R = 1 N ∑ i = 1 N β i L A S L ( t i − t i ∗ ) = ∑ i = 1 N L A S L ( t i − t i ∗ ) G D ( g r i ) \begin{aligned} L_{G H M-R}&=\frac{1}{N} \sum_{i=1}^{N} \beta_{i} L_{ASL}\left(t_i - t_i^*\right) \\ &= \sum_{i=1}^{N} \frac{L_{ASL}\left(t_i - t_i^*\right)}{GD(gr_i)} \end{aligned} LGHM−R=N1i=1∑NβiLASL(ti−ti∗)=i=1∑NGD(gri)LASL(ti−ti∗)
实验结果:SL和ASL效果相近,GHM-R则有少量提升
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYxODEzMzM4MzAtZGZkNmNjMGQtMDgxMy00NDljLTg1ZDktZjIyY2FlMGQyNDVkLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=79&margin=[object Object]&name=image.png&originHeight=200&originWidth=1054&size=38137&status=done&style=none&width=415)
论文:《UnitBox: An Advanced Object Detection Network (ACM-MM2016)》
早前的L1、L2、SmoothL1损失都只把每个(规范化的)坐标值/尺度当作独立的变量训练,没有考虑它们内在的联系,因此提出用IoU的交叉熵来设计损失。
I o U L o s s = − p ⋅ l o g ( I o U ) − ( 1 − p ) l o g ( 1 − I o U ) = − l o g ( I o U ) \begin{aligned} IoU\ Loss &= - p \cdot log(IoU) - (1-p)log(1-IoU) \\ &= -log(IoU) \end{aligned} IoU Loss=−p⋅log(IoU)−(1−p)log(1−IoU)=−log(IoU)
IoU Loss在设计损失时为(规范化的)坐标值/尺度建立了联系,可以直接反映预测框的检测效果,同时IoU对尺度也不敏感。
但是,GIoU的论文也指出了IoU的一些缺点,
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYyNDQxNzU0MTgtNDRhYWIwNzQtZTcwMC00YTg2LWFiZjctYzFiMDIwMTUwMDVkLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=231&margin=[object Object]&name=image.png&originHeight=462&originWidth=1154&size=229502&status=done&style=none&width=577)
论文:《Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression (CVPR2019)》
G I o U = I o U − ∣ A c − U ∣ ∣ A c ∣ G I o U=I o U-\frac{\left|A_{c}-U\right|}{\left|A_{c}\right|} GIoU=IoU−∣Ac∣∣Ac−U∣
G I o U L o s s = 1 − G I o U GIoU\ Loss = 1-GIoU GIoU Loss=1−GIoU
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYyNDY0NTY0OTEtNzRkMjdiNjgtOGIzYi00ZTE0LWFjODMtNzg2NWEwOTVjOWQxLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=191&margin=[object Object]&name=image.png&originHeight=456&originWidth=848&size=32268&status=done&style=none&width=355)
(它们的GIoU Loss相同,但显然第三种情况回归地更好)
论文:《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression (AAAI2020)》
D I o U = I o U − ρ 2 ( b , b g t ) c 2 D I o U=I o U-\frac{\rho^{2}\left(b, b^{g t}\right)}{c^{2}} DIoU=IoU−c2ρ2(b,bgt)
D I o U L o s s = 1 − D I o U DIoU\ Loss = 1 - DIoU DIoU Loss=1−DIoU
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYyNDUyMzczNjctODhhM2Y3YjUtOTZiZi00ZDE4LTlhNTAtZTJhYmQ1YjQ0ZmQxLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=159&margin=[object Object]&name=image.png&originHeight=318&originWidth=424&size=23245&status=done&style=none&width=212)
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYyNDU2OTIxNjAtZDgwOTkxZDUtZDQ3OC00NWE4LTk2Y2EtZjk3MmNmNGMxMDM0LnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=185&margin=[object Object]&name=image.png&originHeight=568&originWidth=2020&size=828171&status=done&style=none&width=658)
在DIoU Loss的基础上,论文继续引入长宽比的惩罚得到CIoU Loss:
C I o U L o s s = 1 − I o U + ρ 2 ( c , c g t ) d 2 + α v CIoU\ Loss =1 - I o U + \frac{\rho^{2}\left(c, c^{g t}\right)}{d^{2}} + \alpha v CIoU Loss=1−IoU+d2ρ2(c,cgt)+αv
其中,
α = v ( 1 − I o U ) + v v = 4 π 2 ( arctan w g t h g t − arctan w h ) 2 \begin{array}{c} \alpha=\frac{v}{(1-I o U)+v} \\ v=\frac{4}{\pi^{2}}\left(\arctan \frac{w^{g t}}{h^{g t}}-\arctan \frac{w}{h}\right)^{2} \end{array} α=(1−IoU)+vvv=π24(arctanhgtwgt−arctanhw)2
v ∈ [ 0 , 1 ] v \in [0, 1] v∈[0,1]度量了两框的长宽比差异,完全相等时 v = 0 v=0 v=0;
α \alpha α是一个自适应的调节权重,目的是为了突出 I o U IoU IoU的回归,当 I o U IoU IoU比较小甚至 I o U = 0 IoU=0 IoU=0时,应当优先学习如何回归出能够重叠、重叠的比较好的预测框,而不是学习如何调整长宽比。
Yolo-v3在VOC2007上的实验结果:
![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvNTA0MzI4LzE1ODYyNDY1ODc5NTEtMTU4Y2U1MjctMGEzZi00NWZkLTgxMzAtNjM3NTI3MzcyMGRhLnBuZw?x-oss-process=image/format,png#align=left&display=inline&height=225&margin=[object Object]&name=image.png&originHeight=556&originWidth=1062&size=101546&status=done&style=none&width=429)
( ( D ) (D) (D)表示用DIoU来做NMS)