iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >YOLOV5损失函数
  • 247
分享到

YOLOV5损失函数

人工智能python 2023-09-15 05:09:27 247人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

yolov5的损失函数包括: classification loss 分类损失 localization loss 定位损失,预测框和真实框之间的误差 confidence loss 置信度损失,框的目标性 总损失函数为三者的和  clas

yolov5的损失函数包括:

classification loss 分类损失

localization loss 定位损失,预测框和真实框之间的误差

confidence loss 置信度损失,框的目标性

总损失函数为三者的和

 classification loss + localization loss + confidence loss

也可以在三个损失前乘上不同的权重系数,已达到不同比重的结果。

在yolov5中的置信度损失和分类损失用的是二元交叉熵来做的,而定位损失是用的CIOU Loss来做的

类别预测(Class Prediction)

在传统的多分类任务中,一般使用的是softmax函数,将预测得分转换为综合为1的概率,就有点二极管那种感觉,不是动物,那就是人,再不行就是背景,就会导致有极强的排他性。

而在yolov3/v4/v5当中,在计算分类损失进行训练时,对每个标签使用二元交叉熵,去替换了softmax函数,降低了计算复杂度,以计算输入特定的标签的可能性,可以输出的标签是行人+儿童这种类型,输出的总分可以大于1。

边界框损失(localization loss)

IoU Loss

早先的对于边界框的损失使用的IoU损失去做的,去看真实框和预测框的交并比,来计算损失。但是会出现一个问题,就是当真实框和预测框不重叠时,IoU值将为0,并不会反应两个形状彼此之间的距离,会造成梯度为0并且无法优化

GIoU Loss

后来在在CVPR2019时,出现了一个叫GIoU的损失他引入了一个最小包围框的概念。如图

  将绿色框A和土黄色框B,完全包围起来,这个框我们称为C框

 那么GIoU损失就为,两框的交并比IoU — (|C ÷ (A ∪ B)|  ÷  |C|)

 但是GIoU也有一些问题:

当检测框和真实框出现包含现象(一个完全套住了另一个,没有并集了)的时候GIoU退化成IoU

两个框相交时,在水平和垂直方向上收敛慢

DIoU Loss

这时候时又出现了一个DIoU Loss

 这时候引入了两框中心点的距离d 对角线C 的概念

 b和 bgt代表预测框的中心点和gt框的中心点。 ρ2() 代表的是欧式距离,c代表包含这两个框的最小矩形的对角线长度。这样的话,对于包含这种情况,中心点的距离也成为了一个评判标准,也能有一个优化的方向。从而解决了两个框相交时,在水平和垂直方向上收敛慢,这个问题。

原论文中作者给出了训练过程

 

第一排是 GIoU 第二排是DIoU,中心点的绿框是真实框,这图片可以清楚的看出,GIoU的收敛需要400次,而DIoU只需要120次,而且DIoU收敛的效果更好。原因就是DIoU考虑了两框中心点的距离,当两框中心点的距离为0或接近0时,可以判断是拟合的状态

CIoU Loss 

CIoU 又加入了一个长宽比这个条件,比较两个框宽高比的吻合度

 最后的αv就是相较于 GIoU增加的部分。

总结

DIoU相比于IoU和GIoU有更快的收敛速度。

CIoU考虑的范围更多,包括了重叠的面积,中心点距离,宽高比。这样的话对于框的回归会更充分,所以Yolov5当中默认的矩形框损失是CIoU Loss。

参考:

DIOU-loss - 知乎

来源地址:https://blog.csdn.net/qq_35326529/article/details/128208740

--结束END--

本文标题: YOLOV5损失函数

本文链接: https://www.lsjlt.com/news/407902.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • YOLOV5损失函数
    yolov5的损失函数包括: classification loss 分类损失 localization loss 定位损失,预测框和真实框之间的误差 confidence loss 置信度损失,框的目标性 总损失函数为三者的和  clas...
    99+
    2023-09-15
    人工智能 python
  • YOLOV5代码详解之损失函数的计算
    目录摘要:1、位置损失2、置信度损失和类损失总结摘要: 神经网络的训练的主要流程包括图像输入神经网络, 得到模型的输出结果,计算模型的输出与真实值的损失, 计算损失值的梯度,最后用梯...
    99+
    2024-04-02
  • Pytorch损失函数torch.nn.NLLLoss()的使用
    目录Pytorch损失函数torch.nn.NLLLoss()交叉熵计算公式nn.NLLLoss计算公式log_softmaxnn.NLLLossnn.CrossEntropyLos...
    99+
    2023-02-01
    Pytorch损失函数 torch.nn.NLLLoss() 使用torch.nn.NLLLoss()
  • 机器学习之损失函数
    深度学习中常用的损失函数多种多样,具体选择取决于任务类型和问题的性质。以下是一些常见的深度学习任务和相应的常用损失函数: 分类任务: 交叉熵损失函数(Cross-Entropy Loss):用于二分类和多类别分类任务,包括二元交叉熵...
    99+
    2023-08-30
    神经网络 人工智能 深度学习
  • Pytorch——常用损失函数详解
    文章目录 损失函数总结部分特殊损失函数详解1. 余弦损失函数 `torch.nn.CosineEmbeddingLoss` 损失函数总结 首先直接贴上个人看过比较好的一些的解...
    99+
    2023-09-24
    深度学习 python 神经网络
  • pytorch自定义loss损失函数
    目录步骤1:添加自定义的类步骤2:修改使用的loss函数自定义loss的方法有很多,但是在博主查资料的时候发现有挺多写法会有问题,靠谱一点的方法是把loss作为一个pytorch的模...
    99+
    2024-04-02
  • PyTorch中怎么定义损失函数
    在PyTorch中,我们可以使用torch.nn模块中的各种损失函数来定义损失函数。以下是一些常用的损失函数及其定义方法: 均方误...
    99+
    2024-04-02
  • 深度学习(23):SmoothL1Loss损失函数
    0. 基本介绍 SmoothL1Loss是一种常用的损失函数,通常用于回归任务中,其相对于均方差(MSE)损失函数的优势在于对异常值(如过大或过小的离群点)的惩罚更小,从而使模型更加健壮。 Smoot...
    99+
    2023-09-27
    深度学习 神经网络 人工智能 python pytorch
  • PyTorch中的损失函数有哪些
    PyTorch中常用的损失函数有: nn.CrossEntropyLoss:多分类问题中常用的交叉熵损失函数。 nn.MSELos...
    99+
    2024-03-05
    PyTorch
  • Torch中的损失函数有哪些
    在Torch中常用的损失函数包括: nn.MSELoss:均方误差损失,用于回归问题。 nn.CrossEntropyLoss:交...
    99+
    2024-04-02
  • tensorflow2中怎么自定义损失函数
    tensorflow2中怎么自定义损失函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Keras的核心原则是逐步揭示复杂性,可以在保持相应的高级便利性的同时,对操作细节进行更...
    99+
    2023-06-20
  • 机器学习之损失函数(Loss Function)
    损失函数(Loss Function)是机器学习和深度学习中的关键概念,它用于衡量模型的预测与实际目标之间的差异或误差。损失函数的选择对于模型的训练和性能评估至关重要,不同的任务和问题通常需要不同的损失函数。 以下是一些常见的损失函数以及它...
    99+
    2023-08-30
    神经网络 人工智能 深度学习
  • 详解MindSpore自定义模型损失函数
    目录一、技术背景二、MindSpore内置的损失函数三、自定义损失函数四、自定义其他算子五、多层算子的应用六、重定义reduction一、技术背景 损失函数是机器学习中直接决定训练结...
    99+
    2024-04-02
  • Torch中怎么定义一个损失函数
    在Torch中定义一个损失函数,一般是通过继承nn.Module类来实现的。以下是一个示例: import torch import...
    99+
    2024-03-07
    Torch
  • Neuroph是否支持自定义损失函数
    Neuroph不支持直接定义自定义损失函数。Neuroph是一个用Java编写的神经网络库,它提供了一些常见的损失函数,如平方损失函...
    99+
    2024-04-02
  • PyTorch中怎么选择合适的损失函数
    在PyTorch中选择合适的损失函数取决于你的任务类型和模型架构。以下是一些常见的损失函数及其适用场景: 交叉熵损失函数(Cro...
    99+
    2024-03-05
    PyTorch
  • pytorch中常用的损失函数用法说明
    1. pytorch中常用的损失函数列举 pytorch中的nn模块提供了很多可以直接使用的loss函数, 比如MSELoss(), CrossEntropyLoss(), NLLL...
    99+
    2024-04-02
  • 推荐系统笔记(十):InfoNCE Loss 损失函数
    背景         对比学习损失函数有多种,其中比较常用的一种是InfoNCE loss。最近学习实现了SGL推荐系统算法,对InfoNCE Loss做一个总结。         InfoNCE Loss损失函数是基于对比度的一个损失函...
    99+
    2023-09-05
    推荐算法 算法 机器学习 python 人工智能
  • PaddlePaddle中如何选择适当的损失函数
    在PaddlePaddle中选择适当的损失函数通常取决于所解决的问题类型和模型的设计。以下是一些常见的损失函数及其适用的情况: ...
    99+
    2024-04-02
  • 如何在PyTorch中定义一个损失函数
    在PyTorch中定义损失函数非常简单。你可以使用torch.nn模块中提供的各种损失函数,也可以自定义自己的损失函数。 下面是一个...
    99+
    2024-03-14
    PyTorch
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作