目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss
加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~
目标检测任务的损失函数由Classificition Loss和Bounding Box Regeression Loss两部分构成。本文介绍目标检测任务中近几年来Bounding Box Regression Loss Function的演进过程,其演进路线是Smooth L1 Loss IoU Loss GIoU Loss DIoU Loss CIoU Loss,本文按照此路线进行讲解。
1. Smooth L1 Loss
本方法由微软rgb大神提出,Fast RCNN论文提出该方法
1.1 假设x为预测框和真实框之间的数值差异,常用的L1和L2 Loss定义为:
1.2 上述的3个损失函数对x的导数分别为:
从损失函数对x的导数可知: 损失函数对x的导数为常数,在训练后期,x很小时,如果learning rate 不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。 损失函数对x的导数在x值很大时,其导数也非常大,在训练初期不稳定。 完美的避开了 和 损失的缺点。
1.3 实际目标检测框回归任务中的损失loss为:
其中 表示GT 的框坐标, 表示预测的框坐标,即分别求4个点的loss,然后相加作为Bounding Box Regression Loss。
缺点:
上面的三种Loss用于计算目标检测的Bounding Box Loss时,独立的求出4个点的Loss,然后进行相加得到最终的Bounding Box Loss,这种做法的假设是4个点是相互独立的,实际是有一定相关性的
实际评价框检测的指标是使用IOU,这两者是不等价的,多个检测框可能有相同大小的 Loss,但IOU可能差异很大,为了解决这个问题就引入了IOU LOSS。
2. IoU Loss
本文由旷视提出,发表于2016 ACM
2.1 通过4个坐标点独立回归Building boxes的缺点:
检测评价的方式是使用IoU,而实际回归坐标框的时候是使用4个坐标点,如下图所示,是不等价的;L1或者L2 Loss相同的框,其IoU 不是唯一的
通过4个点回归坐标框的方式是假设4个坐标点是相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性
基于L1和L2的距离的loss对于尺度不具有不变性
2.2 基于此提出IoU Loss,其将4个点构成的box看成一个整体进行回归:
附录:
论文链接:https://arxiv.org/pdf/1608.01471.pdf
3 GIoU Loss
本文由斯坦福学者提出,发表于CVPR2019
3.1 IoU Loss 有2个缺点:
当预测框和目标框不相交时,IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不相交的情况。
假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其IoU值是相同时,IoU值不能反映两个框是如何相交的。
GIoU的性质
GIoU和IoU一样,可以作为一种距离的衡量方式,
GIoU具有尺度不变性
对于 ,有 且 ,因此 当 时,两者相同都等于1,此时 等于1
当 和 不相交时,
附录
论文链接:https://arxiv.org/abs/1902.09630
github链接:https://github.com/generalized-iou/g-darknet
参考链接:目标检测算法之CVPR2019 GIoU Loss(https://mp.weixin.qq.com/s/CNVgrIkv8hVyLRhMuQ40EA)
实现结论和启发:
本文提出了GIoU Loss,最终单阶段检测器YOLO v1涨了2个点,两阶段检测器涨点相对较少(RPN的box比较多,两个框未相交的数量相对较少)
4. DIoU Loss
本文发表在AAAI 2020
GIoU Loss不足
启发点:
基于IoU和GIoU存在的问题,作者提出了两个问题:
第一:直接最小化预测框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。
第二:如何使回归在与目标框有重叠甚至包含时更准确、更快。
好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。基于问题一,作者提出了DIoU Loss,相对于GIoU Loss收敛速度更快,该Loss考虑了重叠面积和中心点距离,但没有考虑到长宽比;针对问题二,作者提出了CIoU Loss,其收敛的精度更高,以上三个因素都考虑到了。
Distance-IoU Loss
通常基于IoU-based的loss可以定义为 ,其中 定义为预测框 和目标框 的惩罚项。
DIoU中的惩罚项表示为 ,其中 和 分别表示 和 的中心点, 表示欧式距离, 表示 和 的最小外界矩形的对角线距离,如下图所示。可以将DIoU替换IoU用于NMS算法当中,也即论文提出的DIoU-NMS,实验结果表明有一定的提升。
DIoU Loss function定义为:
DIoU的性质:
尺度不变性
当两个框完全重合时, ,当2个框不相交时
DIoU Loss可以直接优化2个框直接的距离,比GIoU Loss收敛速度更快
对于目标框包裹预测框的这种情况,DIoU Loss可以收敛的很快,而GIoU Loss此时退化为IoU Loss收敛速度较慢
5. CIoU Loss
CIoU的惩罚项是在DIoU的惩罚项基础上加了一个影响因子 ,这个因子把预测框长宽比拟合目标框的长宽比考虑进去。 ,其中 是用于做trade-off的参数, , 是用来衡量长宽比一致性的参数,定义为
CIoU Loss function的定义为
DIoU和CIoU的提升效果
结论:
DIoU Loss和CIoU Loss优化了GIoU Loss的不足,实验证明效果有进一步提升,代码已开源,非常推荐工程上去尝试。
附录:
论文地址:https://arxiv.org/pdf/1911.08287.pdf
github地址:https://github.com/Zzh-tju/DIoU-darknet
6. 后续
本文给大家介绍了目标检测任务中的Bounding Boxes Regression Loss Function的发展演进,后续给大家介绍 Classification Loss 的发展演进,例如Binary Cross Entropy Loss, AUC Loss, focal Loss, GHM Loss, AP Loss等。
参考文献:
[1]FastR-CNN (Smooth L1 Loss; 201509)
[2]UnitBox: An Advanced Object Detection Network (IoU Loss;201608)
[3]Generalized Intersection over Union: A Metric and ALoss for Bounding Box Regression (GIOU Loss;CVPR2019)
[4]Distance-IoU Loss:Faster and Better Learning for Bounding Box Regression(DIOU Loss & CIoU Loss ; CVPR2019)
-End-