目标检测中常见的loss函数

常见的回归损失函数

Smooth L1 Loss-> IoU Loss(2016)-> GIoU Loss(2019)-> DIoU Loss(2020)->CIoU Loss(2020)

L1/L2 Loss

目标检测中常见的loss函数_第1张图片
缺点:
1、L1 Loss对x的导数为常数,由于 x 代表真实值与预测值的差值,故在训练后期x 很小时,如果学习率不变收敛很慢。
2、L2 Loss 在 x 值很大时,其导数非常大,故在训练初期不稳定。

Smooth L1 Loss

Smooth L1 由微软rgb大神提出,完美避开了L1和L2损失函数的缺点。
目标检测中常见的loss函数_第2张图片

缺点:
1、评价检测框的指标是使用的是IOU,但是和Smooth L1并不等价,多个检测框可能有相同的Loss但是IOU差异很大,此时引入了IOU Loss。
2、L1、L2、smooth Loss在计算bbox loss时,都是独立的求出4个点的loss,然后相加得到bbox loss。这种做法默认是4个点相互独立的。

IOU Loss

IOU(Intersection over Union,交并比),在2016年由旷视提出,考虑重叠面积,归一化坐标尺度
IOU Loss:预测框和真实框之间的交集并集之比,用来确定正样本和负样本,评价预测框和真实框之间的距离。
缺点:
1、当loss=0时,如果两个框没有相交根据定义,此时不可导,不能反映两者之间的距离,可能距离很远。
2、当两者重合的时候,无法准确的反映两者的重合度大小,如下图所示。
目标检测中常见的loss函数_第3张图片

GIOU Loss

GIOU(Generalized Intersection over Union,)在2019年由斯坦福学者提出,考虑重叠面试,基于IOU解决了边框不相交时loss等于0的问题。
GIOU loss:先计算两个框的最小闭包面积,同时包括预测框和真实框的最小框面积,再计算出IOU,再计算闭包区域中不属于两个框的区域占闭包区域的比重,最后用IoU减去这个比重得到GIoU。

缺点:
1、收敛速度很慢。
2、水平方向和垂直方向上这种情况,GIoU损失几乎退化为IoU损失。
3、当真实框完全被预测框保住时,GIOU和IOU一样,如下图所示。
目标检测中常见的loss函数_第4张图片

DIOU Loss

DIOU(Distance-IoU,距离),在2020年提出,考虑重叠面积和中心点距离,基于IOU解决了CIOU收敛慢的问题。
DIOU Loss:将目标与anchor之间的距离,重叠率以及尺度都考虑进去,其中代表的是计算两个中心点间的欧式距离。 代表的是能够同时包含预测框和真实框的最小闭包区域的对角线距离。
目标检测中常见的loss函数_第5张图片
当目标框包裹时,因为加入了位置信息,DIoU loss可以直接最小化两个目标框的距离,因此比GIoU loss收敛快得多。
对于包含两个框在水平方向和垂直方向上这种情况,DIoU损失可以使回归非常快,而GIoU损失几乎退化为IoU损失

CIOU Loss

CIoU(Complete-IoU,)考虑重叠面积、中心点距离、纵横比,基于DIOU提升回归精度问题。
CIOU Loss:考虑到bbox回归三要素中的长宽比还没被考虑到计算中,因此,进一步在DIoU的基础上提出了CIoU,加入了一个惩罚影响因子,这个因子把预测框长宽比拟合目标框的长宽比考虑进去。

参考资料:
1、https://zhuanlan.zhihu.com/p/104236411
2、https://zhuanlan.zhihu.com/p/94799295
3、https://zhuanlan.zhihu.com/p/342991797

你可能感兴趣的:(目标检测,b树,算法,数据结构)