目标检测之回归损失

目标检测之回归损失

大家好!我是栗子鑫,今天主要分享一下在准备面试的时候遇到的一个问题:“目标检测中的回归损失函数有哪些?”,笔者各个损失函数笔者进行了简单的介绍,正文如下,希望对你们有所帮助。



01


简介



在目标检测中损失函数主要分为两大类,一类是求目标类别的分类损失函数另一类是求目标位置的信息的回归损失函数。在上一篇博客笔者主要介绍了分类损失,如有感兴趣可以翻阅上一篇博客。本篇博客主要先介绍有关于目标检测的回归损失函数。

目标检测之回归损失

1.SmoothL1 loss

在介绍SmoothL1 Loss之前先介绍一下L1和L2 Loss:

L1 Loss也叫平均绝对误差(Mean Absolute Error,MAE)是目标变量和预测变量之间绝对差值之和:

上式可知MAE曲线连续,N为样本数量, 分别为第i个样本模型为其的预测值和真实值,但是MAE在𝑦−𝑓(𝑥)=0处不可导。同时在使用的大部分情况下梯度都是相等的都为常数定值,这意味着无论对于网络有什么样的输入值,都会有稳定的梯度,不会导致梯度爆炸问题以及梯度消失等问题,具有较为稳健性的解,但是对于网络训练后期损失值比较小时,其反向传播的梯度也是很大的。会导致参数更新在最后解左右“动荡”,这不利于函数收敛到最优解。

L2 loss也叫均方误差(Mean Square Error,MSE)是目标变量和预测变量之间差值平方的均值,其公式如下:

MSE损失函数是处处平滑可导的,其导数的值和其输入相关,意味着其梯度与其输入有关,不会再像MAE那样,在训练后期梯度较大,有利于函数收敛到最优解,但是MSE对异常值却没有很好的解决办法,当某个输入和其他的输入差距很大时,梯度也会变得异常大,这样会影响训练的稳定性。

SmoothL1 Loss 结合了上述两者的优缺点,整合了两者的优点,形成了新的损失函数 :

它解决了训练初期出现的异常值,带来的梯度异常,导致训练不稳定问题,也解决了训练后期需要的更新的参数的幅度小,而梯度值过大的问题。具体导数图像如图

目标检测之回归损失

其导数在x 大于等于1或者小于等于-1时,梯度为固定常数1,而在-1到1之间其导数和本身的值相关,这样的设定利于稳定训练。

2.KL loss

针对KL loss笔者只在一篇论文中看到过。该论文主要为了解决边界不确定的box的回归问题(不被模糊样例造成大的loss干扰)。文章预测坐标(x1,y1,x2,y2)的偏移值,对于每个偏移值,假设预测值服从高斯分布,标准值为狄拉克函数(即偏移一直为0),计算这两个分布的距离(这里用KL散度表示距离)作为损失函数

的梯度公式为

这里 ,这里的 就是假设中预测值的高斯分布的

3.IOU loss

以上都是是针对样本分布的回归损失,后来发现基于区域的损失在回归框的任务中,起到了很好的效果,因此用基于框的回归损失函数来进行回归预测。

1.IoU loss

IoU就是我们所说的交并比,是目标检测中最常用的指标,在基于anchor-based的目标检测方法中,他的作用不仅用来确定正样本和负样本,还可以用来评价预测框(predict box)和标注框(ground-truth)的距离。

     

优点它可以反映预测检测框与真实检测框的检测效果。还有一个很好的特性就是尺度不变性,也就是对尺度不敏感(scale invariant), 在回归任务中,判断predict box和gt的距离最直接的指标就是IoU。但也有缺点:如果两个框没有相交,根据定义,IoU=0,不能反映两者的距离的重合度。同时因为loss=0,没有梯度回传,无法进行学习训练,而且IoU无法精确的反映两者的重合度大小。如下图所示,三种情况IoU都相等,但看得出来他们的重合度是不一样的,左边的图回归的效果最好,右边的最差。

目标检测之回归损失

2.GIoU loss

针对IoU Loss只是一个比值,IoU无法区分两个对象之间不同的对齐方式,因此引入了GIOU。具体公式如下:

                                 

IoU和U都代表了两个框的IoU值, 代表两个框的最小闭包面积(就是同时包含预测框和真实框的最小矩形面积)。与IoU相似,GIoU也是一种距离度量,作为损失函数的话 ,满足损失函数的基本要求。GIoU相较于IoU更加的对尺度敏感,不仅关注两个框的重叠部分,同时还关注两个框的非重叠部分。

目标检测之回归损失

尽管GIoU解决了在IoU作为损失函数时梯度无法计算的问题,且加入了最小外包框作为惩罚项。但是它仍然存在一些问题。下图第一行的三张图片是GIoU迭代时预测框收敛情况。其中黑色框代表anchor,蓝色框代表预测框,绿色框代表真实框。

目标检测之回归损失

上图中可以看出,GIoU在开始的时候需要将检测结果方法使其与目标框相交,之后才开始缩小检测结果与GT重合,这就带来了需要较多的迭代次数才能收敛问题,特别是对于水平与垂直框的情况下。此外,其在一个框包含另一个框的情况下,GIoU退化成IoU,无法评价好坏。

3.DIoU loss

在介绍DIou loss前先介绍一下其训练结果,上图第二行即为DIoU的训练结果,同样黑色代表anchor,绿色代表目标的真实框的位置,红色代表预测框的位置。到达120步时,发现与目标边界框已经完全重合。可以看出,相对于GIOU loss,DIOU loss的不仅收敛速度更快,准确率也更高。但针对下面三种情况时GIoU loss没有办法处理。

目标检测之回归损失

图中给出了3组目标边界框与目标边界框的重合关系,显然他们的重合位置不相同的,我们期望第三种重合(两个box中心位置尽可能重合。这三组计算的IOU loss和GIoU loss是一模一样的,因此这两种损失不能很好表达边界框重合关系)于是提出了DIoU loss:

                                     

式中 为是A框与B框中心点坐标的欧式距离, 为包住它们的最小方框的对角线距离。具体含义如下图所示:

目标检测之回归损失

DIoU的惩罚项是基于中心点的距离和对角线距离的比值,避免了像GIoU在两框距离较远时,产生较大的外包框,Loss值较大难以优化(因为它的惩罚项是A ∪ B比上最小外包框的面积)。所以DIoU Loss收敛速度会比GIoU Loss快。与GIoU loss类似,DIoU loss在与目标框不重叠时,仍然可以为边界框提供移动方向。

4.CIoU loss

DIoU损失同时考虑了边界框的重叠面积和中心点距离。然而,anchor框和目标框之间的长宽比的一致性也是极其重要的,于是有了CIoU loss,具体公式如下:

       

其中              

一个优秀的回归定位损失应该考虑三种几何参数:重叠面积、中心点距离、长宽比。CIoU就是在DIoU的基础上增加了检测框尺度的loss,增加了长和宽的loss,这样预测框就会更加的符合真实框。

5.SIoU loss

SIoU 损失函数由 4 个成本函数组成:角度成本、距离成本、形状成本和IoU成本,最终的损失函数如下:

                   

其中 为距离成本和形状成本。(距离成本中有涉及到了角度成本)具体详解可查看知乎:SIoU loss:更强大的边界框回归学习[1]讲解。



02


总结



上文讲述了目标检测中回归算法中的损失函数。相信读者对目标检测中的分类算法有了浅显的认识,对于在每一个算法的效果还需要具体问题具体分析。最后祝大家能早日拿到心仪的offer。

关注六只栗子,面试不迷路!

参考资料

[1]

SIoU loss:更强大的边界框回归学习: https://zhuanlan.zhihu.com/p/521977356

作者    栗子鑫

编辑   一口栗子  




目标检测之回归损失

目标检测之回归损失目标检测之回归损失目标检测之回归损失


原文始发于微信公众号(六只栗子):目标检测之回归损失

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88479.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!