查看原文
其他

【强基固本】损失函数之DIoU Loss和CIoU Loss

“强基固本,行稳致远”,科学研究离不开理论基础,人工智能学科更是需要数学、物理、神经科学等基础学科提供有力支撑,为了紧扣时代脉搏,我们推出“强基固本”专栏,讲解AI领域的基础知识,为你的科研学习提供助力,夯实理论基础,提升原始创新能力,敬请关注。

来源:知乎—大师兄

地址:https://zhuanlan.zhihu.com/p/374907266


00

前言
在GIoU Loss[2]一文中我们介绍到GIoU Loss使用闭包作为惩罚项,当两个矩形没有重叠区域时,它的值和  成反比。它的缺点是闭包的惩罚项并不是十分直接,因为它可以通过两个方式减小loss的值,一个是通过缩小闭包的方式减小loss,另外一个方式是通过扩大预测框面积的方式增加并集  的大小。但是第二个方式并不总是我们想要的,因此GIoU存在让模型迭代“走弯路”的问题,进而影响模型的收敛速度。
这里要介绍的DIoU Loss(Distance)使用更直接的两个框的欧式距离作为惩罚项,它的特点是惩罚项和我们的优化目标是一致的,因此拥有比GIoU Loss更快的收敛速度。另外一个CIoU Loss(Complete)则是进一步在惩罚项中加入了矩形框的相对比例。除此之外,作者还将DIoU和NMS进行结合,提出了DIoU-NMS的后处理方法。

01

背景

1.1 收敛速度

如之前所介绍的,因为GIoU Loss使用闭包作为惩罚项,可能导致在模型训练过程中存在“走弯路”的问题,如图1所示的这种情况,其中绿色框是ground truth,蓝色框是我们预测的bounding box。在上面的GIoU loss的情况下,因为两个框没有重合区域,因此此时loss的值为  ,对比第 100 代和第 40 代,第 100 代的损失值是比第 40 代要低的,但是检测效果反而变的更差了,这一切的根源GIoU的设计使得扩大两个区域的并集面积也能够减小损失值。而下面的DIoU Loss的训练情况则要比GIoU Loss强很多。

图1:GIoU loss在训练过程中的“走弯路”的现象

1.2 检测效果

GIoU Loss的另外一个问题是当预测框在ground truth内部时,GIoU Loss的惩罚项退化为0,此时GIoU loss也退化回了IoU Loss [3]。如图2所示,这时的GIoU Loss和IoU Loss已无法反应检测效果的优劣了。
图2:不同效果的检测框的 GIoU 的损失都是 0.75


02

DIoU Loss

2.1 DIoU Loss的定义

基于上面的介绍,DIoU Loss设计了一个更符合实际检测效果的惩罚项,DIoU Loss表示为式(1)。
其中  和  表示两个矩形框的中心点,  表示两个矩形框之间的欧氏距离,  表示两个矩形框的闭包区域的对角线的距离,它的物理意义如图3所示。可以看出DIoU loss的优化目标是直接减小两个矩形框中心点之间的欧式距离,  的作用是防止损失函数的值过大,提升收敛速度。

图3:DIoU惩罚项的物理意义

这里我们通过分析DIoU loss的两个极端情况来看一下DIoU的阈值。一种极端是预测结果完全一致,此时  ,  ,因此DIoU Loss的最小值是 0 。另外一个极端是预测的bounding box距离ground truth比较远,此时  和  无限逼近,因此  ,  ,因此DIoU Loss的最大值是 2 。而且我们可以看出  ,因此DIoU Loss的值域是 [0,2] ,而且不存在除 0 的情况,所以DIoU Loss是个稳定的损失函数。
对比IoU Loss和GIoU Loss,因为DIoU Loss的惩罚项是距离,因此它丧失了尺度不变性的优点,但是它仍旧是一个距离,因此具有对称性,非负性,同一性和三角不等性。

2.2 DIoU Loss的问题

从式(1)中我们可以看出  和闭包的对角线距离  成反比,当两个bounding box的中心点之间的距离不变时,闭包的对角线越长,则DIoU损失函数的值越小,这就意味着DIoU Loss可能存在图4所示的问题。

图4:DIoU Loss存在训练过程中预测框被错误放大,但是损失值变小的现象

图4.(a)是两个没有互相覆盖的矩形框,它们都是边长为  的矩形,它们中心点的距离为  。图4.(b)是中心点不变,但是边长扩大到了  ,两种情况下DIoU的值分别是  和  ,因此DIoU Loss也存在预测框被错误放大的问题。
另外DIoU Loss破坏了尺度不变性,因此可能导致小尺度样本检测精度失准的问题。

2.3 DIoU NMS

在原始的NMS中,它使用的是IoU作为是否合并的标准。而因为DIoU中引入了新的衡量检测效果优劣的指标,因此可以使用DIoU作为合并的标准,从而对图2中的几种情况进行更好的合并。DIoU-NMS表示为式(2)。
其中  表示预测框中得分更高的bounding box,  是DIoU-NMS的阈值。


03

CIoU Loss
DIoU Loss考虑了两个指标:IoU和中心点距离,CIoU Loss则又向其中添加了相对比例,用于对预测的形状和ground truth不一致的结果进行惩罚,它的惩罚项定义为式(3)。
其中  用来衡量两个矩形框相对比例的一致性,  是权重系数:
CIoU损失定义为式(5)。
CIoU比DIoU就多了一项  ,而  中包含了我们要预测的  和  。  关于这两个变量的倒数为:
当预测的  和  的值非常小时,会导致  的值非常大,进而导致梯度爆炸,为了避免这个问题,在CIoU Loss中,这个值被设置为了常数 1 。


04

总结
DIoU Loss将两个框之间的距离作为损失函数的惩罚项,比GIoU Loss间接的优化闭包面积要直接的多,所以拥有比GIoU Loss更快的收敛速度和更好的表现。而CIoU Loss则进一步考虑了矩形框的相对比例,使得检测效果更进一步。此外DIoU还可以与NMS结合,提升后处理的效果。

Reference

[1] Zheng, Zhaohui, et al. "Distance-IoU loss: Faster and better learning for bounding box regression." Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 34. No. 07. 2020.
[2] Rezatofighi, Hamid, et al. "Generalized intersection over union: A metric and a loss for bounding box regression." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019.
[3] Yu, Jiahui, et al. "Unitbox: An advanced object detection network." Proceedings of the 24th ACM international conference on Multimedia. 2016.

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“强基固本”历史文章


更多强基固本专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存