点击上方“CVer”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文转载自:yuanCruise
DIoU要比GIou更加符合目标框回归的机制,将目标与anchor之间的距离,重叠率以及尺度都考虑进去,使得目标框回归变得更加稳定,不会像IoU和GIoU一样出现训练过程中发散等问题。
https://arxiv.org/pdf/1911.08287.pdf
https://github.com/Zzh-tju/DIoU-darknet
《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》
IoU & GIoU存在的问题分析
论文作者通过一个仿真实现,从实验结果的角度说明了IoU和GIoU存在的问题。实验设定如下图所示:
-
绿色框代表仿真实验需要回归的七个不同尺度的目标框,七个目标框的中心点坐标都是(10 * 10)。
-
蓝色的点代表了所有anchor的中心点,中心点的分布如下图所示,各个方向都有,各种距离都有,当然每个anchor
的一个中心点都包含有七个不同面积的anchor框。而且每个面积的anchor框又有其中不用比例尺寸。因此一共有5000个蓝色点,有5000*7*7个anchor框,而且每个框都需要回归到七个目标框去,因此一共有5000*7*7*7个回归案例。
最终的实验结果如下:图中展示的训练同样的代数后(200代),IoU,GIoU以及本文提出的DIoU作为loss的情况下,每个anchor的误差分布。
-
IoU:从IoU误差的曲线我们可以发现,anchor越靠近边缘,误差越大,那些与目标框没有重叠的anchor基本无法回归。
-
GIoU:从GIoU误差的曲线我们可以发现,对于一些没有重叠的anchor,GIoU的表现要比IoU更好。但是由于GIoU仍然严重的依赖IoU,因此在两个垂直方向,误差很大,基本很难收敛,这就是GIoU不稳定的原因。
-
DIoU:从DIoU误差的曲线我们可以发现,对于不同距离,方向,面积和比例的anchor,DIoU都能做到较好的回归。
再用一张很形象的图,来说明GIoU不稳定以及收敛很慢的原因。下图中第一行三张图展示的是GIoU的回归过程,其中绿色框为目标框,黑色框为anchor,蓝色框为不同次数的迭代后,anchor的偏移结果。第二行三张图展示的是DIoU的回归过程,其中绿色框为目标框,黑色框为anchor,红色框为不同次数的迭代后,anchor的偏移结果。从图中我们可以看到,GIoU在回归的过程中,从损失函数的形式我们发现,当IoU为0时,GIoU会先尽可能让anchor能够和目标框产生重叠,之后GIoU会渐渐退化成IoU回归策略,因此整个过程会非常缓慢而且存在发散的风险。而DIoU考虑到anchor和目标之间的中心点距离,可以更快更有效更稳定的进行回归。
基于IoU和GIoU存在的问题,作者提出了两个问题:
第一:直接最小化anchor框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。
第二:如何使回归在与目标框有重叠甚至包含时更准确、更快。
作者为了回答第一个问题:提出了Distance-IoU Loss。
上述损失函数为DIoU的损失。其中,b,bgt分别代表了anchor框和目标框的中心点,且p代表的是计算两个中心点间的欧式距离。c代表的是能够同时覆盖anchor和目标框的最小矩形的对角线距离。因此DIoU中对anchor框和目标框之间的归一化距离进行了建模。直观的展示如下图所示。
-
与GIoU loss类似,DIoU loss在与目标框不重叠时,仍然可以为边界框提供移动方向。
-
DIoU loss可以直接最小化两个目标框的距离,因此比GIoU loss收敛快得多。
对于包含两个框在水平方向和垂直方向上这种情况,DIoU损失可以使回归非常快,而GIoU损失几乎退化为IoU损失。
DIoU还可以替换普通的IoU评价策略,应用于NMS中,使得NMS得到的结果更加合理和有效。
问题2答案:CIoU
作者为了回答第二个问题:提出了Complete-IoU Loss。
作者认为一个好的目标框回归损失应该考虑三个重要的几何因素:重叠面积、中心点距离、长宽比。
GIoU:为了归一化坐标尺度,利用IoU,并初步解决IoU为零的情况。
DIoU:DIoU损失同时考虑了边界框的重叠面积和中心点距离。
然而,anchor框和目标框之间的长宽比的一致性也是极其重要的。基于此,作者提出了Complete-IoU Loss。
上述损失函数为CIoU的损失,通过公式可以很直观的看出,CIoU比DIoU多出了阿尔法和v这两个参数。其中阿尔法是用于平衡比例的参数。v用来衡量anchor框和目标框之间的比例一致性。
从阿尔法参数的定义可以看出,损失函数会更加倾向于往重叠区域增多方向优化,尤其是IoU为零的时候。
从下表可以看出,DIoU和CIoU在YOLOv3上都有较大的性能提升!
论文:https://arxiv.org/pdf/1911.08287.pdf
代码:https://github.com/Zzh-tju/DIoU-darknet
为了方便下载,我已经将上述DIoU Loss 论文打包,在
CVer公众号
后台回复:
20191202
即可获得百度云链接。
重磅!CVer-目标检测交流群已成立
扫码可添加CVer助手,可申请加入CVer-目标检测交流群,同时可申请加入CVer大群和细分方向群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索等群。一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲长按加群
▲长按关注我们
麻烦给我一个在看!