目标检测常用损失函数-类别损失+位置损失

目录

类别损失

1. 交叉熵损失 Cross Entropy Loss

2. Focal Loss 改进的交叉熵损失函数

位置损失

1. L1 Loss 平均绝对误差(Mean Absolute Error, MAE)

2. L2 Loss  均方误差损失(Mean Square Error, MSE)

3. Smooth L1 Loss

4. IoU Loss

5. GIoU Loss

6. DIoU Loss

. CIoU Loss


 一般的目标检测模型包含两类损失函数,

  • 一类是类别损失(分类)
  • 另一类是位置损失(回归)

这两类损失函数往往用于检测模型最后一部分,根据模型输出(类别和位置)实际标注框(类别和位置)分别计算类别损失和位置损失。

类别损失

1. 交叉熵损失 Cross Entropy Loss

交叉熵损失是基于“熵”这个概念,熵用来衡量信息的不确定性。对于概率分布为p(X)的随机变量X,熵可以表示为:

当X分布的不确定性越大,对应的熵越大(对应log(x)积分面积),反之,熵越小

  • 当把熵用于分类问题时分类的结果越好可以理解为预测为某一类的概率远高于其他类别的概率,不确定性越低,熵就越小;
  • 反之,分类的结果越差(可以理解为预测的各个类别的概率都比较高,没有明确的分界线),此时不确定性越强,熵就越高。

针对以上分析,可以把熵用于分类问题的损失,根据分类的类别数量不同,可以分为二元交叉熵损失多分类交叉熵损失

对于二分类问题(即0-1分类),即属于第1类的概率为p,属于第0类的概率为1−p。则二元交叉熵损失可表示为:

也可以统一写成如下形式:

可以理解为:当实际类别为1时,我们希望预测为类别1的概率高一点,此时log(p)的值越小,产生的损失越小;反之,我们希望预测为类别0的概率高一点,此时log(1−p)的值越小,产生的损失也越小。

在实际应用中,二分类的类别概率通常采用sigmoid函数把结果映射到(0,1)之间。

对数函数图像

对比二元交叉熵损失,可以推广到多分类交叉熵损失,定义如下:

多分类实际应用中,通常采用SoftMax函数来得到样本属于每个类别的概率

2. Focal Loss 改进的交叉熵损失函数

Focal Loss首次在目标检测框架RetinaNet中提出,RetinaNet可以参考

目标检测论文笔记:RetinaNet

它是对典型的交叉信息熵损失函数的改进主要用于样本分类的不平衡问题。为了统一正负样本的损失函数表达式,首先做如下定义:

位置损失

1. L1 Loss 平均绝对误差(Mean Absolute Error, MAE)

L1 loss即平均绝对误差(Mean Absolute Error, MAE),指模型预测值和真实值之间距离的平均值

2. L2 Loss  均方误差损失(Mean Square Error, MSE)

L2 loss即均方误差损失(Mean Square Error, MSE),指预测值和真实值之差的平方的平均值

3. Smooth L1 Loss

Smooth L1 loss是基于L1 loss修改得到,对于单个样本,记x为预测值和真实值的差值,则对应的Smooth L1 loss可表示为:

4. IoU Loss

IoU类的损失函数都是基于预测框和标注框之间的IoU(交并比),记预测框为P,标注框为G,则对应的IoU可表示为:

即两个框的交集和并集的比值。IoU loss定义为:

5. GIoU Loss

IoU反映了两个框的重叠程度,在两个框不重叠时,IoU衡等于0,此时IoU loss恒等于1。而在目标检测的边界框回归中,这显然是不合适的。因此,GIoU loss在IoU loss的基础上考虑了两个框没有重叠区域时产生的损失。具体定义如下:

其中,C表示两个框的最小包围矩形框,R(P,G)是惩罚项。从公式可以看出,当两个框没有重叠区域时,IoU为0,但R依然会产生损失。极限情况下,当两个框距离无穷远时,R→1

6. DIoU Loss

IoU loss和GIoU loss都只考虑了两个框的重叠程度,但在重叠程度相同的情况下,我们其实更希望两个框能挨得足够近,即框的中心要尽量靠近。因此,DIoU在IoU loss的基础上考虑了两个框的中心点距离,具体定义如下:

其中,ρ表示预测框和标注框中心端的距离,p和g是两个框的中心点。c表示两个框的最小包围矩形框的对角线长度。当两个框距离无限远时,中心点距离和外接矩形框对角线长度无限逼近,R→1

下图直观显示了不同情况下的IoU loss、GIoU loss和DIoU loss结果:

其中,绿色框表示标注框,红色框表示预测框,可以看出,最后一组的结果由于两个框中心点重合,检测效果要由于前面两组。IoU loss和GIoU loss的结果均为0.75,并不能区分三种情况,而DIoU loss则对三种情况做了很好的区分

7. CIoU Loss

DIoU loss考虑了两个框中心点的距离,而CIoU loss在DIoU loss的基础上做了更详细的度量,具体包括:

  • 重叠面积
  • 中心点距离
  • 长宽比

具体定义如下:

注:关于IoU系列损失更详细的分析可以参考论文:Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression

 

  • 12
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》,课程链接 https://edu.csdn.net/course/detail/29865【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来!  代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《YOLOv4目标检测实战:训练自己的数据集》《YOLOv4-tiny目标检测实战:训练自己的数据集》《YOLOv4目标检测实战:人脸口罩佩戴检测》《YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值