【YOLO系列】IoU、GIoU、DIoU、CIoU详细解析
【YOLO系列】IoU、GIoU、DIoU、CIoU详细解析
IoU(Intersection over Union)系列损失函数是目标检测中常用的定位损失函数,从最初的IoU到后来的GIoU、DIoU和CIoU,每一代都有其独特的改进和优化。本文将详细解析这些损失函数的原理、优缺点及应用场景。
1. MSE作bbox定位损失的局限性
YOLOv3损失函数(红框部分为bbox定位损失项)
MSE(均方误差)的局限性:
- 对位置敏感,缺乏对重叠情况的衡量:MSE主要关注框的位置和大小,不关心预测框与真实框的重叠程度,因此在预测框和真实框之间的重叠较少时,bbox定位损失项也可能很小,导致模型优化方向不准确。
2. IoU Loss
针对MSE为作bbox定位损失项的缺陷,提出IoU Loss作为bbox定位损失项
IoU、IoU Loss计算公式
IoU的优越性:
- IoU计算公式直接衡量预测框与真实框的重叠程度,是检测任务中评估框匹配度的标准。相比于MSE,IoU更直观地反映了两个框的重合情况。
- 更加鲁棒:IoU能够反映框与框之间的实际重叠质量,而不仅仅是数值上的距离差异(IoU的值在0
1之间,越靠近0说明重叠程度越低,越靠近1说明重叠程度更高,而MSE计算box损失时如果预测框与真实框差距很大的话,数值可能是无限的,范围是0正无穷),这使得IoU对边界框调整的反馈更符合检测目标。
下面举个例子理解一下IoU的优越性
IoU的优越性例子
IoU的缺陷:
当两个框不相交时,无论两个框的距离远近,IoU始终为0,IoU Loss值始终为同一值,反向传播过程中模型无法得到正确的反馈,无法优化边界框
下面举例说明IoU的缺陷
IoU的缺陷例子(左边两个黑色框预测框,右边绿色框为真实框)
虽然两个预测框与真实框的IoU均为0,但明显第2个预测框离真实框“更近”,相对来说该框的预测效果是比预测框1要好的,但这两个框的IoU Loss值均相同,使得反向传播过程中模型无法得到正确的反馈
针对IoU的缺陷,后续提出了GIoU
3. GIoU Loss
为了解决IoU Loss作为bbox定位损失项时出现的问题(两个框只要不相交IoU就为0),提出了GIoU,计算两个框的最小外接矩形,用于标注两个框的距离,从而解决了两个框没有交集时梯度为0的问题,公式为:
GIoU、GIoU Loss计算公式
注意:
- 如果A、B两个框没有重叠部分,那么AUB即为两个框的面积之和
- GIoU的取值范围为[-1,1],GIoU Loss的取值范围为[0,2]
(1)当两个框离得无穷远时,也就是不相交时,那么IoU为0,GIoU计算公式退化为如下形式:
示意图
- 由于不相交,因此AUB是两个框的面积之和(是个常数),而C趋于无穷大,则趋于0,那么GIoU趋于-1,所以这解决了IoU中两个框只要不相交时IoU=0,致使IoU Loss值始终相同的情况,GIoU在两个目标框不相交时也能提供损失,并进行误差的反向传播
- 当IoU为0时,意味着A与B是没有交集的,这个时候两个框离得越远,GIoU越接近-1(所以当IoU=0时,GIoU仍然可以很好的表示两个框之间的距离)
(2)当两个框完全重合时,A=B=C,GIoU如下:
综上,GIoU的取值范围为[-1,1],GIoU Loss的取值范围为[0,2]
GIoU的优点:
- 预测框与真实框重叠时,GIoU可以很好的反应两个框重叠程度
- 预测框与真实框不重叠,即IoU为0时,仍然可以很好的表示两个框的距离
第二个优点的例子(该例子中的预测框1、2的大小完全相同)
上图两个预测框与真实框的IoU都为0,但显然是预测框1的预测效果比预测框2更好的(因为预测框1与真实框“更近”,位置更趋于真实框),单单利用IoU无法通过反向传播向模型反馈哪个预测框的效果更好,而,显然预测框2的GIoU更小(因为预测框2与真实框的最小外接矩形框更大),那么由可知,预测框2的更大,即损失更大,符合实际情况
GIoU的缺陷:
- 当预测框与真实框属于包含关系时,GIoU退化成IoU,无法区分其相对位置关系,如下图例子
第一个缺陷例子(绿:真实框,红:预测框,此例中第一个预测框的预测效果比其他两个好)
可得这3个预测框与真实框的GIoU退化为如下形式:
而3个预测框与真实框的IoU值均相同,所以GIoU也相同,显然不合理
- 还有一个例子,GIoU也区分不出预测效果的好坏
第二个缺陷例子(绿色实线:真实框,红色实线:预测框,黑色虚线:最小外接矩形,此例中3个预测框的大小相同)
3个预测框与真实框均不相交,IoU均为0,最小外接矩形框均相同,所以GIoU计算公式退化成如下:
所以3个预测框与真实框的GIoU值均相同,显然不合理(应该是第二个预测效果稍微好一点,因为离真实框的中心点坐标最近)
针对GIoU的缺陷,后续提出了DIoU
4. DIoU Loss
针对GIoU的缺陷,提出了DIoU。DIoU损失能够直接最小化两个框之间的距离,因此收敛速度更快
DIoU、DIoU Loss计算公式(虚线框为最小外接矩形框)
b,分别代表了预测框和真实框的中心点坐标,p代表的是计算两个中心点间的欧式距离。c代表的是能够同时包含预测框和真实框的最小外接矩形的对角线长度
(1)DIoU上限1什么时候取到?
当预测框和真实框完全重合时,d=0,DIou=IoU=1
(2)DIou下限-1什么时候取到?
当预测框和真实框不相交,且相距无穷远时,那么IoU=0,,而d趋于无穷大,c也趋于无穷大,所以趋于1,最终DIoU趋于-1
现在我们重新来看GIoU中的两个缺点例子,看DIoU是如何解决的:
GIoU的第一个缺陷解决:
GIoU第一个缺陷例子(绿:真实框,红:预测框)
我们只看第一个预测框bbox1和第二个预测框bbox2,已知bbox1和bbox2与真实框的IoU相同
预测框bbox1和真实框的中心点完全重合,所以,所以
预测框bbox2和真实框的中心点有一点距离,所以,所以DIoU计算公式的第二项为一个整数,所以
所以通过DIoU可以判断出哪种情况预测效果好,解决了GIoU的第一个缺陷
GIoU的第二个缺陷解决:
GIoU第二个缺陷例子(绿实线:真实框,红实线:预测框,黑虚线:最小外接矩形)
如果按GIoU的计算公式的话,上述两个预测框bbox1和bbox2与真实框的GIoU相同,分辨不出哪个预测框的预测效果更好
预测框bbox1与真实框的DIoU为:
预测框bbox2与真实框的DIoU为:
又因为d1>d2,所以
所以是预测框bbox2与真实框的DIoU更大,即预测效果更好,解决了GIoU的第二个缺陷
DIoU的优点:
- DIoU比GIoU更加符合目标框回归的机制,将真实框与预测框之间的距离(后面那一项的欧式距离部分)、重叠率(IoU)、已知尺度(对角线长度)都考虑进去,使得目标框回归变得更加稳定
- DIoU Loss可以直接最小化两个目标框的距离,因此比GIoU Loss收敛快得多
- DIoU还可以替换普通的IoU评价策略,应用于NMS中,使得NMS得到的结果更加合理和有效
DIoU的缺陷:虽然DIoU能够直接最小化预测框和真实框的中心点距离加速收敛,但是预测框BBox的回归还有一个重要的因素长宽比未考虑进去。
如下图所示,bbox1、bbox2和bbox3的面积均相同,因此3个bbox与真实框的IoU均相同。但是长宽比不一样,3个bbox均与真实框中心点重合,所以3个bbox与真实框的DIoU均为:
,所以DIoU不能很好的区分这种情况
DIoU的缺陷例子(绿:真实框,红:预测框,该例子中3个bbox的面积均相同)
针对GIoU的缺陷,后续提出了CIoU
5. CIoU Loss
针对GIoU的缺陷,后续提出了CIoU,CIoU Loss是一个优秀的回归定位损失,考虑到3种几何参数:重叠面积,中心点距离,长宽比
CIoU、CIoU Loss计算公式
说明:
- :真实框的宽
:真实框的高 - :预测框bbox的宽
:预测框bbox的高 - 可以理解为对于预测框的高和宽的惩罚系数;
- v用来衡量高宽比的一致性,当预测框与真实框的高和宽越接近时,v越接近于0
6. 实验对比和总结
该实验结果是从YOLOv4论文中截取过来的
XIoU Loss实验对比结果
可以看到,利用XIoU Loss作为bbox定位损失项的效果和它的发展史一样,CIoU Loss效果最佳
总结:
- IoU Loss:主要考虑预测框框和真实框重叠面积。
- GIoU Loss:在IoU的基础上,解决预测框与真实框不相交时的问题。
- DIoU Loss:在IoU和GIoU的基础上,考虑预测框与真实框中心点距离的信息。
- CIoU Loss:在DIoU的基础上,考虑预测框的长宽比信息。