【YOLOv8代码详解】各个任务Loss损失函数梳理

YOLOv8官方将各类任务(目标检测,关键点检测,实例分割,旋转目标框检测,图像分类)的损失函数封装了在ultralytics\utils\loss.py中,本文主要梳理一下各类任务Loss的大致组成,不涉及到具体的原理。

一、目标检测任务

1.1 class v8DetectionLoss

YOLOv8目标检测任务主要由分类损失,和矩形框回归损失(iou loss,DFL loss)组成。
在这里插入图片描述
在这里插入图片描述

1.2 分类损失

YOLOv8用的多分类损失是N个目标的二元交叉熵损失,而不是一般我们认为的多目标的softmax交叉熵损失。
这里的BECWithLogitsLoss=BCELoss(二元交叉熵)+Sigmoid(激活函数)

在这里插入图片描述
这里的分类损失是把N个目标的二元交叉熵损失求和,再取平均
在这里插入图片描述
二分类,多分类损失可以参考http://t.csdnimg.cn/y89vH

1.3 矩形框回归损失

YOLOv8用的矩形框损失主要由iou loss和DFL loss组成。
在这里插入图片描述
在这里插入图片描述

1.3.1 iou loss

iou loss有CIoU,DIoU,GIoU 三种loss可选择
在这里插入图片描述

1.3.2 DFL loss

论文:https://ieeexplore.ieee.org/document/9792391
Distribution Focal Loss (DFL) 是在 Generalized Focal Loss(GLF)中提出,用来让网络快速聚焦到标签附近的数值,使标签处的概率密度尽量大。思想是使用交叉熵函数,来优化标签y附近左右两个位置的概率,使网络分布聚焦到标签值附近。
在这里插入图片描述
在这里插入图片描述

1.4 loss加权

在这里插入图片描述

二、关键点检测任务(姿态估计)

2.1 class v8PoseLoss(v8DetectionLoss)

YOLOv8关键点检测任务主要由关键点相关的回归损失obj损失和通过继承了目标检测任务分类损失,和矩形框回归损失(iou loss,DFL loss)组成。

2.2 关键点损失

关键点的损失主要由各个关键点的obj losspose loss组成。

2.2.1 obj loss

obj loss也是使用的N个关键点的二元交叉熵之和,表示当前关键点是否存在(可见)。
在这里插入图片描述
在这里插入图片描述

2.2.2 pose loss

pose loss由每个关键点的预测坐标与gt坐标的L2损失,再除以gt矩形框面积,再除以比例系数计算而得。
在这里插入图片描述
在这里插入图片描述

2.3 分类损失

参考目标检测任务的分类损失1.2小节,继承的目标检测任务中的分类损失。
在这里插入图片描述

2.4 矩形框回归损失

参考目标检测任务的矩形框回归损失1.3小节,继承的目标检测任务中的矩形框回归损失。
在这里插入图片描述

2.4 loss加权

在这里插入图片描述

三、实例分割任务

3.1 class v8SegmentationLoss(v8DetectionLoss)

YOLOv8关键点检测任务主要由分割相关的损失和通过继承了目标检测任务分类损失,和矩形框回归损失(iou loss,DFL loss)组成。

3.2 分割损失

分割损失主要是预测分割区域与gt分割区域进行逐像素的计算二元交叉熵损失。
F.binary_cross_entropy_with_logits()对应的类是torch.nn.BCEWithLogitsLoss,在使用时会自动添加sigmoid,然后计算loss。(其实就是nn.sigmoid和nn.BCELoss的合体)
在这里插入图片描述

3.3 分类损失

参考目标检测任务的分类损失1.2小节,继承的目标检测任务中的分类损失。
在这里插入图片描述

3.4 矩形框回归损失

参考目标检测任务的矩形框回归损失1.3小节,继承的目标检测任务中的矩形框回归损失。
在这里插入图片描述

3.5 loss加权

在这里插入图片描述

四、图像分类任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490711.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

封装-练习

T2、以面向对象的思想,编写自定义类描述IT从业者。设定属性包括:姓名,年龄,技术方向,工作年限;方法包括:工作。 要求: 设置属性的私有访问权限,通过公有的get,set方法实现…

第2章 辐射度、光度和色度学基本理论

一、前言 辐射度学(radiology)是一门以整个电磁波段(electromagnetic band)的电磁辐射能(electromagnetic radiation energy)测量为研究对象的科学。计算机图形学中涉及的辐射度学,则集中于整个…

代码随想录算法训练营三刷day35 |贪心 之 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

三刷day35 860.柠檬水找零406.根据身高重建队列452. 用最少数量的箭引爆气球 860.柠檬水找零 题目链接 解题思路: 局部最优:遇到账单20,优先消耗美元10,完成本次找零。全局最优:完成全部账单的找零。 代码如下&#x…

Internet Explorer 降级

Internet Explorer 降级 1. version2. Internet Explorer 降级References 1. version 帮助 -> 关于Internet Explorer(A) 2. Internet Explorer 降级 开始 -> 控制面板 -> 卸载程序 -> 查看已安装的更新 搜索 Internet -> Internet Explorer 11 -> 卸载 -…

office办公技能|word中的常见使用问题解决方案2.0

一、设置多级列表将表注从0开始,设置为从1开始 问题描述:word中插入题注,出来的是表0-1,不是1-1,怎么办? 写论文时,虽然我设置了“第一章”为一级标题,但是这三个字并不是自动插入的…

[leetcode]118.杨辉三角

前言:剑指offer刷题系列 问题: 给定一个非负整数 *numRows,*生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,…

C# NumericUpDown 控件正整数输入控制

用到了控件的 KeyPress 和 KeyUp事件。 KeyPress 中控制输入“点、空格,负号”; KeyUp 中防止删空,以及防止输入超过最大值或最小值 。 private void nudStart_KeyPress(object sender, KeyPressEventArgs e){numericUpDownKeyPress(sender…

CAPL - 如何实现弹窗提示和弹窗操作(续)

目录 函数介绍 openPanel closePanel 代码示例 1、简单的打开关闭panel面板

美团0309春招笔试题

下面是美团2024-03-09笔试真题,笔者进行了VP,由于未参与评测,故不保证正确性,仅供参考。 第一题 小美的MT 首先找到原来字符串中含有的M和T的数量,记作cnt。然后剩余n - cnt个字符是可以修改的,但这取决于…

二叉树|236.二叉树的最近公共祖先

力扣题目链接 class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (root q || root p || root NULL) return root;TreeNode* left lowestCommonAncestor(root->left, p, q);TreeNode* right lowestCommonAncesto…

【办公类-21-10】三级育婴师 视频转文字docx(等线小五单倍行距),批量改成“宋体小四、1.5倍行距、蓝色字体、去掉五分钟”

作品展示 背景需求 今天将最后3个育婴师操作视频做整理 第1步:视频MP4转MP3 【办公类-40-01】20240311 用Python将MP4转MP3提取音频 (家长会系列一)-CSDN博客文章浏览阅读393次,点赞9次,收藏6次。【办公类-40-01】20…

鸿蒙应用开发-录音保存并播放音频

功能介绍: 录音并保存为m4a格式的音频,然后播放该音频,参考文档使用AVRecorder开发音频录制功能(ArkTS),更详细接口信息请查看接口文档:ohos.multimedia.media (媒体服务)。 知识点: 熟悉使用AVRecorder…

码垛机与人工搬运:效率与安全性的比较分析

在现代包装行业中,泡沫箱因其轻便和保温特性被广泛用于商品的包装与运输。随着自动化技术的不断发展,码垛机成为提升泡沫箱生产效率、降低劳动强度的关键技术。本文旨在比较码垛机与人工码垛在泡沫箱生产中的优势,并探讨自动化码垛的未来发展…

c语言文件操作(下)

目录 1.文件的随机读写1.1 fseek1.2 ftell1.3 rewind 2. 文件结束的判定2.1 文本文件读取结束的判断2.2 二进制文件读取结束的判断 3. 文件缓冲区 1.文件的随机读写 1.1 fseek 根据⽂件指针的位置和偏移量来定位⽂件指针。 函数原型: int fseek (FILE * stream,…

【STL学习】(2)string的模拟实现

前言 本文将模拟实现string的一些常见功能,目的在于加深理解string与回顾类与对象的相关知识。 一、前置知识 string是表示可变长的字符序列的类string的底层是使用动态顺序表存储的string对象不以’\0’字符为终止算长度,而是以size有效字符的个数算长…

7.2024

小明发现了一个奇妙的数字。它的平方和立方正好把 0 ~ 9 的 10 个数字每个用且只用了一次。你能猜出这个数字是多少吗? 代码: import java.util.HashSet; import java.util.Set;public class 第七题 {public static void main(String[] args) {int i1;…

Docker数据卷与网络模式

华子目录 数据卷注意数据卷操作查看镜像,容器,数据卷所占空间 Docker的网络模式查看指定容器的网络模式bridge模式none模式host模式container模式 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有…

LangChain-Chatchat

文章目录 关于 LangChain-Chatchat特性说明实现原理文档处理流程技术路线图(截止0.2.10) 使用 关于 LangChain-Chatchat Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答。 gith…

阿赵UE学习笔记——21、武器插槽

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎的使用,这次来看看骨骼插槽的用法。 一、准备资源 这次的目的很简单,就是给之前做了角色蓝图的钢铁侠手上加一把枪。   所以先要找到枪的资源。在虚幻商城里面搜索weapon&#…

Transformer 模型中增加一个 Token 对计算量的影响

Transformer 模型中增加一个 Token 对计算量的影响 Transformer 模型中增加一个 Token 对计算量的影响1. Transformer 模型简介2. Token 对计算量的影响3. 增加一个 Token 的计算量估算4. 应对策略5. 结论 Transformer 模型中增加一个 Token 对计算量的影响 Transformer 模型作…