-
implement IOU Loss
2020-12-02 14:09:53Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression https://arxiv.org/pdf/1911.08287.pdf Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression ... -
目标检测iou loss
2020-05-21 10:33:37解决 iou loss 为1 时不优化的缺陷 增加c项,表示为预测框与标签框最小矩形 缺陷,当两个框相交时,尤其一个框包含另一个的时候,退化为iou loss,收敛会变慢 DIOU Loss 直接最小化Anchor和目标框之间的归一...GIOU Loss
- 解决 iou loss 为1 时不优化的缺陷
- 增加c项,表示为预测框与标签框最小矩形
- 缺陷,当两个框相交时,尤其一个框包含另一个的时候,退化为iou loss,收敛会变慢
DIOU Loss
- 直接最小化Anchor和目标框之间的归一化距离以达到更快的收敛速度
- b、bgt分别是anchor、groundtrueth中心点坐标,p为其欧式距离,c为其包含最小矩形对角线长度
- 解决GIOU Loss 退化IOU loss的情况
CIOU Loss
- 回归损失在与目标框有重叠甚至有包含关系时更准确,收敛更快
- a是平衡系数参数,v为衡量anchor和目标框比例一致性参数
class IouLoss(nn.Module): def __init__(self,pred_mode = 'Center',size_sum=True,variances=None,losstype='Giou'): super(IouLoss, self).__init__() self.size_sum = size_sum self.pred_mode = pred_mode self.variances = variances self.loss = losstype def forward(self, loc_p, loc_t,prior_data): num = loc_p.shape[0] if self.pred_mode == 'Center': decoded_boxes = decode(loc_p, prior_data, self.variances) else: decoded_boxes = loc_p if self.loss == 'Iou': loss = torch.sum(1.0 - bbox_overlaps_iou(decoded_boxes, loc_t)) else: if self.loss == 'Giou': loss = torch.sum(1.0 - bbox_overlaps_giou(decoded_boxes,loc_t)) else: if self.loss == 'Diou': loss = torch.sum(1.0 - bbox_overlaps_diou(decoded_boxes,loc_t)) else: loss = torch.sum(1.0 - bbox_overlaps_ciou(decoded_boxes, loc_t)) if self.size_sum: loss = loss else: loss = loss/num return loss
-
论文笔记之D-IOU Loss
2020-05-13 17:04:27本文结合预测框和真实框之间的标准化距离提出D-IOU Loss和C-IOU Loss,收敛速度比IOU Loss和G-IOU Loss快的多。 本文主要工作: 在IOU Loss基础上添加一个惩罚项以最小化预测框和真实框之间的标准化距离,从而加快...1. 摘要
边界框回归是目标检测的重要一步,现有用的最多的是使用L1/2-norm函数来计算损失,但是他不是非常适合评估指标(IOU)。因此后面有了IOU Loss和G-IOU Loss,但是这两个依旧存在收敛慢、回归不准确的问题。本文结合预测框和真实框之间的标准化距离提出D-IOU Loss和C-IOU Loss,收敛速度比IOU Loss和G-IOU Loss快的多,且准确性也有所提升。
本文主要工作:
- 在IOU Loss基础上添加一个惩罚项以最小化预测框和真实框之间的标准化距离,从而加快收敛。
- 考虑3个度量:重叠面积、中心点距离和box的宽高比,提出了C-IOU Loss用于边界框损失以得到精确的回归。
- D-IOU 应用于NMS具有更好的性能。
2. 相关工作
2.1 IOU Loss
IOU Loss也就是1减去IOU,但是它只在边界框有重叠时才work(不重叠时梯度消失),对于没有重叠的预测框没有提供移动方向(往真实框靠近)。即:当两个box无交集时,IoU=0,很近的无交集框和很远的无交集框的输出一样,失去了梯度方向,无法优化。2.2 G-IOU Loss
为了解决上面的问题,提出了G-IOU Loss。
G-IOU Loss在IOU Loss后加了一个惩罚项,以使不重叠的情况下,预测框向目标框移动。其中C是覆盖预测框和真实框的最小框的面积。
但是G-IOU Loss需要更多的迭代才会收敛,所以通常在最新的检测器中,G-IOU Loss不能很好地收敛,从而导致不精确的预测。
从图中以及损失函数可以看出,GIoU在回归的过程中,当IoU为0时,GIoU会先尽可能让anchor能够和目标框产生重叠,之后GIoU会渐渐退化成IoU回归策略,因此整个过程会非常缓慢而且存在发散的风险。而DIoU考虑到anchor和目标之间的中心点距离,可以更快更有效更稳定的进行回归。2.3 前两种和本文方法的对比
左边的和中间的预测框都不如右边的好,但是IOU Loss和G-IOU Loss并没有体现出来(3个loss值都一样),D-IOU Loss体现出来了(左边两个loss值较大),这也体现了计算两框中心点标准化距离的重要性,使用这个距离训练可以得到更精确的框。另外也表明了在一定程度下(水平和垂直方向)G-IOU Loss会退化为IOU Loss(两者的loss值一样)。
对于图4,从左至右依次是IOU Loss、G-IOU Loss、D-IOU Loss的回归结果可视化。可以看出,IOU Loss在周围(没有重叠的)误差较大;G-IOU Loss在水平和垂直方向误差较大;而D-IOU Loss在各个方向的误差都很小。3. 本文方法
本文也是在IOU Loss后添加了一个惩罚项,以分别解决收敛速度慢(D-IOU Loss)和回归不准确(C-IOU Loss)的问题。
中B是预测框,B^gt是真实框。
3.1 D-IOU Loss
在这里,惩罚项为:
其中,ρ是欧几里得距离;b是框的中心点;c是覆盖两个框(预测框和真实框)的最小box的对角线长度。
相比IOU Loss和G-IOU Loss,D-IOU Loss有如下特性:- 与回归尺度无关(对尺度不敏感,和G-IOU Loss类似)
- 与G-IOU Loss类似,不重叠时D-IOU Loss可以为边界框提供移动方向
- 最好的预测时,loss值趋向于0,最差的预测时loss值趋向于2
- 直接计算两框之间的标准化距离,收敛速度快
- 在水平和垂直方向上,可以使回归较快,而G-IOU Loss退化为IOU Loss
3.2 C-IOU Loss
在这里,惩罚项为:
其中,α 是一个正的权衡参数,v 是测量预测框和真实框的宽高比的一致性。v的形式为:
α定义为:
从参数 α 的定义可以看出,损失函数会更加倾向于往重叠区域增多方向优化,尤其是IoU为零的时候(不重叠时)。v对w和h的梯度定义为:
通常很小,从而导致梯度爆炸,所以,为了稳定收敛,将
换为1.
3.3 D-IOU替换NMS时的IOU
原始的NMS对于遮挡情况经常产生错误抑制,而同时考虑IOU以及两框中心点距离可以得到更好的结果。
D-IOU-NMS定义为:
其中s_i是分类置信度,ϵ为NMS阈值,M为最高置信度的框。DIoU-NMS倾向于中心点距离较远的box存在不同的物体(两个中心点较远的box可能是位于不同的目标内,不应该删除),而且仅需改几行代码,DIoU-NMS就能够很简单地集成到目标检测算法中。4. 实验
- 在精度不太高的模型(YOLOv3)上进行实验对比,DIoU loss和CIoU的效果都很显著,而使用DIoU-NMS则能进一步提升。
- 在精度较高的模型(SSD-FPN)上进行实验对比,DIoU loss和CIoU的提升就不大了,同样使用DIoU-NMS能进一步提升。
- CIoU在小物体上的性能都有所下降,可能由于宽高比对小物体的检测贡献不大,因为此时中心点比宽高比更重要。
- 在中大型物体检测上,CIoU的结果比GIoU要准确。
- DIoU-NMS能够更好地引导bbox的消除。
-
Distance-IoU Loss
2020-08-07 17:17:14Distance-IoU Loss 边界盒回归是物体检测的关键步骤。在现有的方法中,虽然广泛采用lnl_nln-norm loss来进行边界盒回归。最近,有人提出了IoU损失和generalized IoU(GIoU)损失,以利于IoU度量,但仍存在收敛速度慢...Distance-IoU Loss
边界盒回归是物体检测的关键步骤。在现有的方法中,虽然广泛采用-norm loss来进行边界盒回归。最近,有人提出了IoU损失和generalized IoU(GIoU)损失,以利于IoU度量,但仍存在收敛速度慢和回归不准确的问题。在本文中,我们通过加入预测框和目标框之间的归一化距离,提出了一种Distance-IoU(DIoU)损失,在训练中收敛速度比IoU和GIoU损失快得多。此外,本文还总结了边界框回归中的三个几何因素,即重叠面积、中心点距离和长宽比,在此基础上提出了Complete IoU(CIoU)损失,从而使收敛速度更快,性能更好。通过将DIoU和CIoU损失纳入到最先进的目标检测算法中,例如YOLO v3、SSD和Faster RCNN,我们不仅在IoU度量方面,而且在GIoU度量方面都取得了显著的性能提升。此外,DIoU可以很容易地被采用到非最大抑制(NMS)中作为准则,进一步促进性能的提升。源代码和训练后的模型可在https://github.com/Zzh-tju/DIoU。
在边界盒回归的评价度量方面,Intersection over Union(IoU)是最流行的度量。
其中是ground-truth,为预测框。通常情况下,在B和的坐标上采用-norm损失来测量边界盒之间的距离。然而,正如(Yu等人。2016年;Rezatofighi等人。2019年),-norm损失不是获得最优IoU指标的合适选择。在(Rezatofighi等人。2019年),建议采用IoU损失来改进IoU指标,
然而,IoU损失只有在边界框有重叠时才会起作用,对于非重叠的情况不会提供任何移动梯度。而后通过增加一个惩罚项,提出了generalized IoU损失(GIoU)(Rezatofighi等人,2019)。
其中C是覆盖B和的最小边界框,由于引入了惩罚项,在非重叠的情况下,预测的盒子将向目标盒子移动。
图1:由GIoU损失(第一行)和DIoU损失(第二行)的Bounding box回归步骤。绿色和黑色分别表示目标框和anchor box。蓝色和红色分别表示GIoU损失和DIoU损失的预测框。GIoU损失一般会增加预测框的大小,使其与目标框重叠,而DIoU损失则直接使中心点的归一化距离最小化。
图2:对于这些情况,GIoU损失会退化为IoU损失,而我们的DIoU损失仍然可以区分。绿色和红色分别表示目标框和预测框。
虽然GIoU可以缓解非重叠情况下的梯度消失问题,但它仍然有几个限制。通过模拟实验(详见对IoU和GIoU损失的分析章节),我们可以评估GIoU损失在不同边界框位置的性能。如图 1 所示,可以看到 GIoU 损失打算先增大预测框的大小,使其与目标框重叠,然后公式(3)中的 IoU 项将致力于最大化边界框的重叠面积。而从图2来看,GIoU loss将完全退化为包围边界盒的IoUloss。由于严重依赖IoU项,GIoU经验上需要更多的迭代才能收敛,特别是对于水平和垂直边界盒(见图4)。通常GIoU损失在最先进的检测算法中不能很好地收敛,产生不准确的检测结果。
图4:IoU、GIoU和DIoU损失在迭代T次后,即的回归误差的可视化。例如,E(T,n)对于每个坐标n,我们注意到(a)和(b)中的盆地对应的是良好的回归案例。可以看到,IoU损失在非重叠情况下有很大的误差,GIoU损失在水平和垂直情况下有很大的误差,而我们的DIoU损失导致各地的回归误差非常小。
在本文中,我们提出了一种用于边界盒回归的Distance-IoU(DIoU)损失。具体来说,我们只需在IoU损失上增加一个惩罚项,就可以直接最小化两个边界盒中心点之间的归一化距离,从而使收敛速度比GIoU损失快很多。从图1来看,可以部署DIoU损失来直接最小化两个边界盒之间的距离。而且只进行了120次迭代,预测的框与目标框完全匹配,而GIoU即使进行了400次迭代也没有收敛。此外,我们还提出,一个好的边界框回归损失应该考虑三个重要的几何度量,即重叠面积、中心点距离和长宽比,而这三个度量长期以来一直被忽略。通过结合这些几何度量,我们进一步提出了一种用于边界盒回归的Complete IoU(CIoU)损失,导致收敛速度更快,性能优于IoU和GIoU损失。所提出的损失可以很容易地融入到最先进的对象检测算法中。此外,DIoU可以作为非最大抑制(NMS)中的一个准则,通过这个准则,在抑制冗余框时,不仅考虑重叠区域,还考虑两个边界框中心点之间的距离,使其对有遮挡的情况更加稳健。
为了评估我们提出的方法,DIoU损失和CIoU损失被纳入几个最先进的检测算法,包括YOLO v3(Redmon和Farhadi 2018),SSD(Liu等人,2016)和Faster R-CNN(Ren等人,2015),并在两个流行的基准数据集PASCAL VOC 2007(Everingham等人,2010)和MS COCO 2017(Lin等人,2014)上进行评估。
工作贡献总结如下:
- 提出了一种用于边界盒回归的Distance-IoU损失,即DIoU损失,它的收敛速度比IoU和GIoU损失快。
- 通过考虑三个几何度量,即重叠面积、中心点距离和长宽比,进一步提出了一个Complete IoU损失,即CIoU损失,它能更好地描述矩形框的回归。
- DIoU部署在NMS中,对冗余盒子的抑制比原来的NMS更强大。
- 所提出的方法可以很容易地融入到最先进的检测算法中,实现显著的性能提升。
Related Work
Loss Function for Bounding Box Regression
边界盒回归中通常采用 -norm损失函数,但对变化尺度敏感。在YOLO v1(Redmon等人,2016)中,采用w和h的平方根来减轻这种影响,而YOLO v3(Redmon和Farhadi,2018)采用2 - wh。自Unitbox(Yu等,2016)以来,也使用了IoU损失,它对尺度不变.GIoU(Rezatofighi等,2019)损失的提出是为了解决非重叠情况下的梯度消失问题,但仍面临收敛慢和回归不准确的问题。相比之下,我们提出的DIoU和CIoU损失具有更快的收敛速度和更好的回归精度。
Non-Maximum Suppression
NMS是大多数对象检测算法的最后一步,在这一步中,只要其与最高得分框的重合度超过阈值,多余的检测框就会被移除。**Soft-NMS(Bodla等,2017)通过一个连续函数w.r.t.IoU对邻居的检测得分进行惩罚,得到比原始NMS更柔和、更稳健的抑制。IoUNet(Jiang等,2018)引入了一个新的网络分支来预测本地化置信度来指导NMS。最近,提出了自适应NMS(Liu,Huang,and Wang 2019)和Softer-NMS(He等2019),分别研究适当的阈值和加权平均策略。**在这项工作中,简单部署DIoU作为原始NMS中的准则,在抑制冗余框时同时考虑重叠区域和边界框两个中心点之间的距离。
Analysis to IoU and GIoU Losses
首先,我们分析原始IoU损失和GIoU损失的局限性。然而,单纯从检测结果来分析边界盒回归的过程是非常困难的,在非控制基准中的回归案例往往是不全面的,例如,不同的距离、不同的尺度和不同的长宽比。 相反,我们建议进行模拟实验,在模拟实验中,应该全面考虑回归案例,然后可以很容易地分析给定损失函数的问题。
Simulation Experiment
图3:模拟实验。(a) 考虑到不同的距离、比例和长宽比,采用了1,715,000个回归案例,(b) 迭代t次时不同损失函数的回归误差和(即)曲线。
在模拟实验中,我们试图涵盖bounding boxes之间的大部分关系,如图3(a)所示,包括距离、比例和纵横比。具体来说,我们选择了7个不同长宽比(即1:4、1:3、1:2、1:1、2:1、3:1和4:1)的单位长方体作为目标长方体。在不丧失一般性的情况下,7个目标框的中心点固定在(10,10)。anchor boxes均匀分布在5000个点。(i) 距离:在以(10,10)为中心,半径为3的圆形区域内,均匀选择5000个点,放置7个不同大小和7个纵横比的anchor boxes。在这些情况下,包括重叠框和非重叠框。(二)Scale:每个点的anchor boxes面积分别设为0.5、0.67、0.75、1、1.33、1.5、2。三)长宽比。对于给定的点和比例,采用7种长宽比,即与目标框的设置相同(即1:4、1:3、1:2、1:1、2:1、3:1和4:1)。所有5000×7×7的anchor boxes要拟合所有target box。综上所述,总共有1715000=7×7×7×5000个回归案例。
然后给定一个损失函数,我们可以用梯度下降算法模拟每种情况下的边界盒回归过程。对于预测框,可以通过以下方式得到当前的预测结果
为第t次迭代时的预测框,代表第t-1次迭代时 w.r.t. 的梯度,为幅度。值得注意的是,在我们的实现中,梯度是乘以来加速收敛的。使用l1-norm对边界盒回归的性能进行评估。对于每个损失函数,当达到迭代T=200时终止模拟实验,误差曲线如图3(b)所示。
Limitations of IoU and GIoU Losses
在图4中,我们可视化了5000个散点在迭代次数为T时的最终回归误差。从图4(a)中不难看出,IoU损失只对与目标框重叠的情况有效。没有重叠的anchor boxe不会移动,由于 始终为0。
通过加入公式(3)中的惩罚项,GIoU损失可以更好地缓解非重叠情况的问题。从图4(b)中可以看出,GIoU损失ignificantly enlarges the basin,即GIoU工作的区域。但在水平方向和垂直方向的案例可能仍有较大的误差。这是因为在GIoU损失中罚则是用来最小化,但是的面积通常很小或为0(当两个盒子有包含关系时),那么GIoU几乎退化为IoU损失。GIoU损失只要运行足够的迭代,学习率适当,就会收敛到好的解,但收敛速度确实很慢。从几何上看,从图1所示的回归步骤可以看出,GIoU实际上是增加了预测框的大小,使其与目标框重合,然后IoU项会使预测框与目标框匹配,得出的收敛速度非常慢。
综上所述,IoU损失对于非重叠的情况下会收敛到不好的解,而GIoU损失的收敛速度很慢,尤其是对于水平和垂直方向的盒子。而在纳入目标检测pipeline时,IoU和GIoU损失都不能保证回归的准确性。这就很自然地提出了这样的问题。第一,直接最小化预测框和目标框之间的归一化距离以实现更快的收敛是否可行?第二,当与目标框有重叠甚至包含时,如何使回归更准确、更快速?
The Proposed Method
一般情况下,IoU-based损失可以定义为
为预测框B和目标框的惩罚则。通过设计适当的惩罚项,本节我们提出DIoU损失和CIoU损失来回答上述两个问题。
Distance-IoU Loss
为了回答第一个问题,我们提出将两个边界盒的中心点之间的归一化距离最小化,惩罚项可以定义为
和代表的中心点,为欧几里得距离,而c是覆盖两个框的最小包围框的对角线长度。那么DIoU损失函数可以定义为
如图5所示,DIoU损失的惩罚项直接使两个中心点之间的距离最小化,而GIoU损失的目的是减少的面积
图5:边界盒回归的DIoU损失,中心点之间的归一化距离可以直接最小化,c是覆盖两个盒子的最小包围盒的对角线长度,是两个盒子中心点的距离。
Comparison with IoU and GIoU losses 提出的DIoU loss继承了IoU和GIoU loss的一些特性。
- DIoU损失对回归问题的大小仍然是不变的。
- 与GIoU损失类似,DIoU损失在与target box不重叠时,可以提供bounding boxes的移动方向。
- 当两个bounding boxes完美匹配时,。当两个bounding boxes距离很远时,。
而DIoU损失比IoU损失和GIoU损失有几个优点,可以通过仿真实验来评价。
- 如图1和图3所示,DIoU损失可以直接使两个框的距离最小化,因此收敛速度比GIoU损失快得多。
- 对于包含两个盒子的情况,或者在水平和垂直方向上,DIoU损失可以使回归速度非常快,而GIoU损失几乎已经退化为IoU损失,即,
Complete IoU Loss
然后我们回答第二个问题,提出一个好的边界盒回归损失应该考虑三个重要的几何因素,即重叠面积、中心点距离和长宽比。通过统一坐标,IoU损失考虑了重叠面积,GIoU损失严重依赖IoU损失。我们提出的DIoU loss旨在同时考虑边界盒的重叠面积和中心点距离。然而,边界框的长宽比的一致性也是一个重要的几何因素。
因此,在DIoU损失的基础上,引入高宽比一致性,提出CIoU损失,
其中是一个大于零的权衡参数,v衡量长宽比的一致性。
则损失函数可定义为
权衡参数定义为
其中重叠面积因子在回归中具有更高的优先级,特别是对于非重叠的情况。
最后,CIoU损失的优化与DIoU损失的优化相同,只是要指定v w.r.t. w和h的梯度。
对于h和w在[0,1]范围内的情况,通常是一个小值,这很可能产生梯度爆炸。因此在我们的实现中,为了稳定收敛,只需去掉,由其将步长大小改为1,梯度方向仍与公式(12)一致。
Non-Maximum Suppression using DIoU
在原来的NMS中,IoU度量是用来抑制冗余的检测框,其中重叠区域是唯一的因素,对于有遮挡的情况常常产生错误的抑制。我们在这项工作中提出DIoU是一个更好的NMS标准,因为在抑制标准中不仅要考虑重叠面积,还要考虑两个盒子之间的中心点距离。对于得分最高的预测框,DIoU-NMS可以正式定义为
其中,通过同时考虑IoU和两个盒子中心点之间的距离来去除盒子,为分类得分,KaTeX parse error: Undefined control sequence: \cal at position 1: \̲c̲a̲l̲ ̲\epsilon为NMS阈值。我们建议,中心点较远的两个盒子可能定位不同的对象,不应删除。此外,DIoU-NMS非常灵活,只需几行代码就可以集成到任何目标检测pipeline中。
Experimental Results
Discussion on DIoU-NMS
]
在表1,表2和表3中,我们报告了CIoU损失与原始NMS和CIoU损失与DIoU-NMS的结果。其中阈值遵循原NMS的默认设置,即YOLO v3和SSD的e=0.45,Faster R-CNN的e=0.50。可以发现,DIoUNMS在大多数情况下,比原来的NMS有进一步的性能提升。图8显示,DIoU-NMS可以更好地保存正确的检测框,其中采用在PASCAL VOC上训练的YOLO v3来检测MS COCO上的对象。为了进一步验证DIoUNMS相对于原始NMS的优越性,我们进行对比实验,原始NMS和DIoU-NMS与YOLO v3和使用CIoU loss训练的SSD进行合作。我们介绍了原始NMS和DIoU-NMS在宽范围的阈值[0.43;0.48]内的比较。从图9可以看出,DIoU-NMS在每个阈值下都优于原始NMS。此外,值得注意的是,即使是DIoU-NMS最差的性能,也至少与原始NMS的最佳性能相当或更好。也就是说,我们的DIoU-NMS即使不仔细调整阈值e,也能普遍优于原始NMS的性能。
-
目标检测中的各种IoU Loss(IoU、GIoU、DIoU、CIoU)
2020-08-01 21:06:01IoU Loss 对于检测框B和groundtruth G,二者的IoU如下: 那么IoU Loss即为-log(1-IoU)。 显然IoU Loss具有非负性、尺度不变性、同一性、对称性、三角不等性等特点,所以可以用于bounding box的回归任务中。 但同时...IoU Loss
对于检测框B和groundtruth G,二者的IoU如下:
那么IoU Loss即为1-IoU。
显然IoU Loss具有非负性、尺度不变性、同一性、对称性、三角不等性等特点,所以可以用于bounding box的回归任务中。但同时,IoU Loss也存在一个很致命的缺点:
当B与G的IoU为0时,Loss也为0,网络无法进行训练。因此IoU loss在回归任务中的表现并不好。
GIoU Loss
论文:https://arxiv.org/abs/1902.09630
GIoU Loss的目的就是解决IoU Loss中当B与G不相交时,Loss为0的问题。
GIoU的定义如下:
其中,Ac表示B与G的最小外接矩形的面积,u表示B与G并集的面积。而GIoU Loss = 1-GIoU。
GIoU具有一下特性:
1.与IoU一样,具有非负性、尺度不变性等特性
2.任意B、G都存在,GIoU<=IoU
3.-1< GIoU <=1, 当IoU等于1时,GIoU也等于1
由此可见,只有当B与G重合时,GIoU Loss才会为0,相比IoU Loss,GIoU Loss在任意情况下都可以进行训练。DIoU Loss
论文:https://arxiv.org/abs/1911.08287?context=cs.CV
GIoU Loss虽然解决了IoU Loss中Loss为0的问题,但是依然存在一些不足。
首先,因为GIoU主要是在收敛Ac-U这个值,作者经过实验发现这么收敛会导致网络优先选择扩大bounding box的面积来覆盖ground truth,而不是去移动bounding box的位置去覆盖ground truth。
其次,如下图所示,当B覆盖G或者被G覆盖时,只要B与G的面积不变,不管B与G的位置在哪里,IoU Loss与GIoU Loss都是一个定值。
因此,为了解决这些问题,作者提出了DIoU。
DIoU Loss的公式如下:
其中,ρ()为B与G中心点之间的欧几里得距离,c为B与G最小外接矩的对角线的长度。
相比GIoU,DIoU限制的不是最小外接矩与B与G并集面积的差值,而是直接限制了最小外接矩的面积和B与G中心点的位置,这会使得网络更倾向于移动bounding box的位置来减少Loss。同时也加入了IoU元素来使bounding box与ground truth的覆盖面积更加接近。
同样的DIoU也有着与GIoU相同的一些特性和取值范围。
CIoU Loss
作者提出一个好的回归Loss应该考虑三点,分别是覆盖面积、中心点距离和长宽比。
而DIoU只考虑了覆盖面积和中心点距离,所以作者又在DIoU的基础上加入了长宽比的因素提出了CIoU Loss,公式如下:其中,v就是B与G长宽比的距离:
α是一个权重系数:
(不过我不是很懂这个权重这么设计的原因和意义,好像论文里也没有看到相关的描述)
结果比较
-
【IoU Loss】《UnitBox: An Advanced Object Detection Network》
2020-04-18 21:49:05ACM MM-2016...文章目录1 Background and Motivation2 Advantages / Contributions3 Method3.1 L2 Loss Layer3.2 IoU Loss Layer: Forward3.3 IoU Loss Layer: Backward3.4 UnitBox Network4 Experiments4.. -
IOU loss详解
2020-07-01 09:39:29IoU损失 DenseBox DenseBox是全卷积网络,网络的输出大小为(;输出feature map上的点确定一个检测框的样本,包含样本的信息度和该点到bounding box四边的距离。 Unitbox 相对于DenseBox,Unitbox使用IoU损失... -
【论文阅读】Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression
2019-11-22 11:00:35文章提出两个Loss :Distance-IoU(DIoU) Loss和Complete IoU(CIoU) Loss用于目标检测的Bbox回归,并与IoU Loss和GIoU Loss做了对比,比这两个收敛得更快、更准。此外,DIoU很容易用在NMS中。 Loss 先简单回顾一下IoU... -
目标检测中的回归损失函数系列二:IoU Loss
2020-05-11 14:41:34IOU Loss 出自论文:https://arxiv.org/pdf/1608.01471.pdf L1 和L2 loss是将bbox四个点分别求loss然后相加,并没有考虑靠坐标之间的相关性,而实际评价指标IOU是具备相关性。 看一张图关注IoU部分(GIoU先不管): ... -
Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression阅读笔记
2020-12-29 22:44:31(一)Title 前言: ...同时作者指出当前研究者提出的IoU度量(IoU Loss 以及 Generalized IoU Loss)上存在的一些问题: 收敛慢slow convergence 回归不准确,inaccurate regression 主要内容 作者在 -
Focal and Efficient IOU Loss for Accurate Bounding Box Regression
2021-01-21 17:10:05Focal and Efficient IOU Loss for Accurate Bounding Box Regression 作者单位:华南理工大学, 地平线, 中科院(谭铁牛等) 论文:https://arxiv.org/abs/2101.08158 在目标检测中,边界框回归(BBR)是确定对象... -
交叉熵、Focal loss、L1,L2,smooth L1损失函数、IOU Loss、GIOU、DIOU和CIOU
2020-11-05 20:14:26交叉熵、Focal loss、L1,L2,smooth L1损失函数、IOU Loss、GIOU、DIOU和CIOU 联言命题 2020-02-23 21:36:37 ... -
Hope for support for IoU loss, GIoU loss, DIoU loss and etc.
2020-11-27 21:01:49def generalized_iou_loss(pr_bboxes, gt_bboxes, reduction='mean'): """ gt_bboxes: tensor (-1, 4) xyxy pr_bboxes: tensor (-1, 4) xyxy loss proposed in the paper of giou "... -
目标检测算法之AAAI 2020 《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression...
2019-12-15 23:05:02前面介绍了CVPR 2019的GIoU Loss,推文地址如下:点这里,同时GIoU Loss里面也引入了IoU Loss,这个首先需要明确一下。然后AAAI 2020来了一个新的Loss,即是本文要介绍的DIoU Loss。论文原文地址见附录。 背景 ... -
距离IoU损失:包围盒回归更快更好的学习(Distance-IoU Loss: Faster and Better Learning for Bounding Box...
2019-11-28 22:39:29Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression Zhaohui Zheng1, Ping Wang1, Wei Liu2, Jinze Li3, Rongguang Y e1, Dongwei Ren*2 1School of Mathematics, Tianjin University, Ch... -
L1/L2/smooth_l1_loss/center_loss+Dice Loss+focal loss+各种IOU loss
2018-10-16 16:58:15def smooth_l1_loss(y_true, y_pred): """Implements Smooth-L1 loss. y_true and y_pred are typically: [N, 4], but could be any shape. """ diff = tf.abs(y_true - y_pred) ... -
IoU Loss小结: Giou,Diou,Ciou
2020-09-19 17:30:40Giou: Giou论文 Diou: Diou论文 你真的读懂yolo了吗? YOLO V3 深度解析 (下) -
【文章阅读】IoU Loss for 2D/3D Object Detection
2019-10-25 14:14:03最近在实验中发现,3D检测的精度和cls_loss的关系非常的大,一般来说,按照SECOND的代码训练下降到cls_loss大致为0.8左右时,会有一个不错的效果,在验证集上可以达到0.88左右的精度(对car-easy)而言,但是当loss... -
Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression
2019-12-10 21:10:59近年来,人们提出了IoU损失和G-IoU损失两种可以有利于提升IoU指标的方法,但仍存在收敛速度慢、回归不准确等问题。在这篇论文中,通过合并预测框和目标框之间的归一化距离,我们提出了一种Distance -IoU损失,它在... -
【Tensorflow object_detection API】使用iou loss训练时出现nan情况
2020-05-22 15:07:57First, Open file “object_detection/meta_architectures/ssd_meta_arch.py”, and add this line at the...Then, add and replace a few lines of code at “loss” function: if self.groundtruth_has_field(fields. -
《Distance-IoU Loss:Faster and Better Learning for Bounding Box Regression》论文笔记
2020-01-19 00:09:49代码地址:DIoU 1. 概述 ...将检测框的质量作为回归的度量就引入IoU损失函数,为了弥补IoU损失函数在不相交的时候不可导的问题引入GIoU,但是GIoU也是存在收敛速度慢且回归不准确(GIoU在两个框... -
Anchor-free目标检测算法系列12:UnitBox(中心点+IOU loss) UnitBox: An Advanced Object Detection ...
2019-08-13 19:41:36UnitBox: An Advanced Object Detection Network (ACM 2016) 论文UnitBox是旷世科技的一篇人脸检测文章,代码没有开源。主要的贡献是提出了IOU ... -
iou_loss loss 为nan
2020-12-01 16:53:24使用 iou_loss ,dioulossyolo, diouloss ciou_term: False, diouloss ciou_term: True, iou loss 均为nan ,偶尔第一个迭代不为nan,检查代码和配置均没发现问题,请问是什么原因导致的?</p><p>该... -
the IoU-Loss, Iou-Aware-Loss and final confidence in PPYOLO?
2021-01-03 07:26:23<div><p>from the paper, we know that IoU-Loss and Iou-Aware-Loss (adopt BCE loss) are both used as additional loss to orig box-regression (adopt L1 loss) to improve the locate accuracy and IoU of ...
-
SubstancePainter插件开发-基础入门
-
UniStorm v4.1.0.rar
-
C++异步串口通信
-
性能测试面面观
-
jenkins + gitflow流程 实现一键自动发布(gitlab 上的操作)
-
UIUC CS225 Data Structure powerpoint
-
绿色外语培训学习网页模板
-
plugins中的插件重复出现怎么办
-
Rockchip
-
15.6寸键盘的详细介绍
-
python --- 二分图匈牙利算法和KM算法
-
美尔诺M97系列电子负载的手动标定流程.zip
-
Linux 删除文件夹和文件的命令
-
【大数据项目学习】第九章:HBase数据库
-
微信支付2021系列之扫码支付一学就会java版
-
2021最新Kubernetes(k8s)集群实战精讲
-
没有U盘安装Windows10系统教程
-
橘黄色户外运动俱乐部网页模板
-
Filecoin矿工为什么会掉算力?
-
转行做IT-第6章 IDEA、方法