点击上方“视学算法”,选择加"星标"或“置顶”
重磅干货,第一时间送达
作者丨记忆的迷谷@知乎(已授权)
来源丨https://zhuanlan.zhihu.com/p/359982543
编辑丨极市平台
导读
IOU损失函数目前主要应用于目标检测的领域,其演变的过程如下:IOU --> GIOU --> DIOU -->CIOU损失函数,每一种损失函数都较上一种损失函数有所提升。本文来具体介绍这几种损失函数。
IOU损失函数:
![b12caf5ac8084d30713d7e0f48380f2e.jpeg](https://img-blog.csdnimg.cn/img_convert/b12caf5ac8084d30713d7e0f48380f2e.jpeg)
图片展示了3组矩形框重合的示例:绿色是真实目标存在的框GT box,黑色是预测的box位置。通过观察上图,发现第三个预测效果较好,因为预测目标的位置与真实目标最为接近。但是计算三组l2损失发现损失值都为8.41,然而IOU的值不同。因此说明l2损失不能准确反应两个目标边界框重合的程度,因此诞生了IOU损失函数。
![c7322e581f809ee50f4e0198c886d107.jpeg](https://img-blog.csdnimg.cn/img_convert/c7322e581f809ee50f4e0198c886d107.jpeg)
上图是IOU损失函数的计算方法:首先绿色的框表示真实目标的位置,蓝色框代表预测框的位置。IOU的计算方法很简单,用两个方框相交的面积/两个方框合并的面积,将得到的值取以e为底对数,前面添上负号就得到了IOU损失函数。
GIOU损失函数:
![c9c93b5ec76b9f59b6a6cb3e51c88247.jpeg](https://img-blog.csdnimg.cn/img_convert/c9c93b5ec76b9f59b6a6cb3e51c88247.jpeg)
如图:绿色是真实目标边界框,红色是预测目标边界框,最外面的蓝色边框是将红绿矩形用最小矩形框起来的边界,Ac是蓝色矩形框的面积,u对应红绿矩形的并集面积。
如果当红绿矩形完美重合,那么IOU =1, Ac = u = 预测目标边界框面积,GIOU = 1 - 0 = 1。如果两个目标分开很远,Ac趋向于很大的数值,u趋于0,IOU也趋于0,GIOU = 0 - 1 = -1。因此GIOU取值的区间是[-1, 1]。
![59aecbd19f8f3324caadf643ddfd928a.jpeg](https://img-blog.csdnimg.cn/img_convert/59aecbd19f8f3324caadf643ddfd928a.jpeg)
GIOU损失函数的最终表达形式是L(GIOU) = 1 - GIOU
![6f33e08265906b3451a98f148f54cac2.jpeg](https://img-blog.csdnimg.cn/img_convert/6f33e08265906b3451a98f148f54cac2.jpeg)
上表是原论文中的实验效果:第一列(AP-IoU一列)采用MSE(l2损失)的mAP=0.461,采用IoU损失得到的mAP=0.466,有些许提升。如果采用GIoU loss,能达到0.477,效果比IOU更好。
![3196b54a1a8fe673df2ab63aaa2c9478.jpeg](https://img-blog.csdnimg.cn/img_convert/3196b54a1a8fe673df2ab63aaa2c9478.jpeg)
但是,GIOU也存在它的缺点:当两个预测框高宽相同,且处于同一水平面时,GIOU就退化为IOU。此外,GIOU和IOU还有两个缺点:收敛较慢、回归不够准确。
DIOU 损失函数:
![b153c04e160b127ddbbb781782396729.jpeg](https://img-blog.csdnimg.cn/img_convert/b153c04e160b127ddbbb781782396729.jpeg)
在介绍DIOU之前,先来介绍采用DIOU的效果:如图,黑色代表anchor box, 蓝色红色代表default box,绿色代表真实目标存在的框GT box的位置,期望红蓝框与绿框尽可能重合。第一行是使用GIOU训练网络,让预测边界框尽可能回归到真实目标边界框中,迭代到400次后才勉强重合。第二行使用DIOU训练网络,到达120步时,发现与目标边界框已经完全重合。可以看出,相对于GIOU,DIOU的不仅收敛速度更快,准确率也更高。
![2bfd1315babb64a0473d28d554434c25.jpeg](https://img-blog.csdnimg.cn/img_convert/2bfd1315babb64a0473d28d554434c25.jpeg)
我们再看一组图,图中给出了3组目标边界框与目标边界框的重合关系,显然他们的重合位置不相同的,我们期望第三种重合(两个box中心位置尽可能重合。这三组计算的IOU loss和GIoU loss是一模一样的,因此这两种损失不能很好表达边界框重合关系)。但是DIOU计算出的三种情况的损失是不一样的,显然DIOU更加合理。
![b82ffb3342d69d08bdfc47730fe48fdf.jpeg](https://img-blog.csdnimg.cn/img_convert/b82ffb3342d69d08bdfc47730fe48fdf.jpeg)
ρ代表b和b(gt)之间的欧氏距离
![a1fd3a10c3509e09fff374b650ba8981.jpeg](https://img-blog.csdnimg.cn/img_convert/a1fd3a10c3509e09fff374b650ba8981.jpeg)
结合这张图理解一下公式:b代表预测中心坐标的参数,也就是黑框的中心点,bgt代表真实目标边界框中心的参数,即绿框中心点。ρ^2就是两个中心点距离的平方,即图中的d(红线)的平方,c代表两个矩形的最小外接矩形对角线(蓝线)长度。如果两个框完美重叠,d=0 ,IOU = 1,DIOU = 1 - 0 = 1 。如果两个框相距很远,d^2/c^2 趋近于1,IOU = 0, DIOU = 0 - 1 = -1 。因此,DIOU的取值范围也是[-1,1]。
![032679cbb1b16f04d6a5ea20382f141d.jpeg](https://img-blog.csdnimg.cn/img_convert/032679cbb1b16f04d6a5ea20382f141d.jpeg)
DIOU最终损失函数为:L(DIoU) = 1 - DIOU
![20ee8ed32dd85a8a2747d9784c608b2c.jpeg](https://img-blog.csdnimg.cn/img_convert/20ee8ed32dd85a8a2747d9784c608b2c.jpeg)
当采用DIOU loss,mAP为46.57,相较于Iou和GIOU准确率都有提高,且收敛速度相比IOU提高了3%左右。
CIOU LOSS:
论文中,作者表示一个优秀的回归定位损失应该考虑三种几何参数:重叠面积、中心点距离、长宽比。CIoU就是在DIoU的基础上增加了检测框尺度的loss,增加了长和宽的loss,这样预测框就会更加的符合真实框。
![8b5cd4c27ad94ef1f4e4004c9f178b36.jpeg](https://img-blog.csdnimg.cn/img_convert/8b5cd4c27ad94ef1f4e4004c9f178b36.jpeg)
因此CIOU的三项恰好对应IOU,中心点距离,长宽比的计算。CIOU loss = 1 - CIoU。α和v为长宽比,计算公式如上图所示:w、h和w(gt)、h(gt)分别代表预测框的高宽和真实框的高宽。
![06da0ce9eb848fc9859a94d704a8b8f1.jpeg](https://img-blog.csdnimg.cn/img_convert/06da0ce9eb848fc9859a94d704a8b8f1.jpeg)
如果使用CIOU,mAP可以达到49.21%,相比于GIoU涨了1.5个百分点。CIOU(D)指在验证模型评价mAP时,将IOU换成DIOU,准确率还有提升 。
![b8ea2bd7d24d05fc873ef30c184678b9.jpeg](https://img-blog.csdnimg.cn/img_convert/b8ea2bd7d24d05fc873ef30c184678b9.jpeg)
实际检测效果中,CIOU相比GIOU在框选目标时,能找到一个更合适的框选位置。如上图所示,第一行的两张图中,第一个猫猫使用GIOU损失函数,发现有一只猫耳朵在框外,第二只猫猫使用DIOU损失函数,将猫猫的位置准确标出。同样,第二行中,第一只狗狗虽然完整标出,但并不能准确框出狗狗的轮廓,而第二张图检测框的位置刚好合适。
鸣谢:本文内容总结自up主霹雳吧啦Wz
参考视频来源:https://www.bilibili.com/video/BV1yi4y1g7ro
点个在看 paper不断!