yolov26改进 | 损失函数改进篇 | SlideLoss、FocalLoss、VFLoss分类损失函数助力细节涨点(全网最全)

开始讲解之前推荐一下我的专栏,本专栏的内容支持(分类、检测、分割、追踪、关键点检测),专栏目前为限时折扣,欢迎大家订阅本专栏,本专栏每周更新5-7篇最新机制,更有包含我所有改进的文件和交流群提供给大家,本人定期在群内分享发表论文方法和经验。


一、本文介绍

本文给大家带来的是目标检测中的几种常用分类损失函数,本文介绍的 SlideLoss、VFLoss、FocalLoss 则属于分类损失函数,主要用于优化模型对目标类别的判断能力。因此,分类损失和边界框回归损失并不冲突,它们分别作用于目标检测任务中的不同部分。简单来说,目标检测中的损失函数通常可以分为两大类:一类是边界框回归损失,负责让模型把目标框预测得更准;另一类是分类损失,负责让模型把目标类别判断得更准。上一篇文章中,我们已经较为系统地总结了现阶段大部分常见边界框回归损失的使用方法。本文则继续围绕损失函数改进展开,重点介绍几种目前比较流行、实用性较强的分类损失函数,并给出它们在 YOLO 系列模型中的集成方式。通过本文内容,大家可以进一步理解分类损失在目标检测中的作用,并掌握 SlideLoss、VFLoss、FocalLoss 等损失函数的使用方法,为后续模型改进、消融实验和论文创新提供更多思路。

欢迎大家订阅我的专栏一起学习YOLO! 

专栏链接:


目录

一、本文介绍

二、原理介绍

三、核心代码

三、使用方式 

3.1 修改一

3.2 修改二

3.3 修改三

四、使用方法 

五 、本文总结


二、原理介绍

其中绝大多数损失在前面我们都讲过了本文主要讲一下SlidLoss的原理,SlideLoss的损失首先是由YOLO-FaceV2提出来的。

​​

官方论文地址: 

Yolov5 改进之损失函数 SlideLoss & 注意力机制 MultiSEAM Yolov5/Yolov7损失函数改进:SlideLoss,解决简单样本和困难样本之间的不平衡问题。 阅读详情

相关推荐

varifocal loss(VFL)介绍

介绍varifocal loss(VFL)并给出代码实现

Q先森的博客 9945

[yolov5]给yolov5增加了一个损失函数VFloss

在loss.py文件里面新增了一个损失函数VFloss。该函数主要是用于替换Focal loss(两个损失函数并不能说谁好谁坏,各有自己的看法吧)

PLH19990227的博客 1586

YOLOv5改进 | 损失篇 | VarifocalLoss密集检测专用损失函数 (VFLoss,论文一比一复现)

本文给大家带来的是损失函数改进VFLoss损失函数,VFL是一种为密集目标检测器训练预测IoU-aware Classification Scores(IACS)的损失函数,我经过官方的版本将其集成在我们的YOLOv8的损失函数使用上,其中有很多使用的小细节(否则按照官方的版本使用根本拟合不了,这也是为啥网上的版本拟合不了的原因,其中需要设置一些参数),后面我也会给大家讲解到底模型改到什么地步的时候引入损失函数改进。

Snu77的博客 2811

YOLOv5改进 | 损失函数篇 | SlideLoss、VFLoss分类损失函数助力细节涨点(全网最全)

其中绝大多数损失在前面我们都讲过了本文主要讲一下SlidLoss的原理,SlideLoss的损失首先是由YOLO-FaceV2提出来的。​​官方论文地址:官方论文地址点击即可跳转官方代码地址:官方代码地址点击即可跳转​​从摘要上我们可以看出SLideLoss的出现是通过权重函数来解决简单和困难样本之间的不平衡问题题,什么是简单样本和困难样本?样本不平衡问题是一个常见的问题,尤其是在分类和目标检测任务中。它通常指的是训练数据集中不同类别的样本数量差异很大。容易被模型正确识别的样本。

Snu77的博客 1628

yolov26改进 | 损失函数改进篇 | QualityFocalLoss质量焦点损失(含代码 + 详细修改教程)

本文介绍了目标检测中的QualityFocalLoss(QFL)损失函数改进机制。QFL通过将定位质量(如IoU得分)与分类得分融合,形成联合表示,解决了传统目标检测中分类与定位任务不一致的问题。其核心优势包括:1)支持连续标签(0-1范围),更好反映定位质量;2)动态调整对困难样本的关注度;3)保持训练与推理阶段的一致性。文章详细解析了QFL的原理,并提供了在YOLO框架中的实现代码和使用方法。该改进机制适用于目标检测任务,可有效提升模型性能,对于分割和关键点检测等任务暂不适用。作者推荐订阅其YOLOv2

Snu77的博客 172

YOLOv8改进 | 损失篇 | VarifocalLoss密集目标检测专用损失函数

VarifocalLoss(VFLoss)是一种专为密集目标检测场景设计的损失函数,由旷视科技提出并于2020年发表在《CVPR》上。相较于传统的交叉熵损失函数,VarifocalLoss能够更好地处理密集目标场景中的难易样本不平衡问题,提高目标检测模型的精度和鲁棒性。VarifocalLoss是一种有效的密集目标检测损失函数,能够提高模型的精度和鲁棒性。VarifocalLoss已被广泛应用于各种商业产品中,并取得了良好的效果。

走向CTO的路上... 2196

YOLOv8改进 | 损失篇 | VarifocalLoss密集目标检测专用损失函数 (VFLoss,原论文一比一复现)

本文给大家带来的是损失函数改进VFLoss损失函数,VFL是一种为密集目标检测器训练预测IoU-aware Classification Scores(IACS)的损失函数,我经过官方的版本将其集成在我们的YOLOv8的损失函数使用上,其中有很多使用的小细节(否则按照官方的版本使用根本拟合不了,这也是为啥网上的版本拟合不了的原因,其中需要设置一些参数),后面我也会给大家讲解到底模型改到什么地步的时候引入损失函数改进,同时在开始讲解之前推荐一下我的专栏,本专栏的内容支持(分类、检测、分割、追踪、关键点检测),

Snu77的博客 4541

VFloss pytorch

# Loss functions import torch import torch.nn as nn from utils.general import bbox_iou from utils.torch_utils import is_parallel def smooth_BCE(eps=0.1): # https://github.com/ultralytics/yolov3/issues/238#issuecomment-598028441 # return positi...

jacke121的专栏 2393

YOLOv8【第七章:损失函数篇·第9节】一文搞定,VFLoss变分焦点损失!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1029

YOLOv11改进有效涨点专栏目录 | 含卷积、主干、注意力机制、Neck、检测头、损失函数、二次创新C2PSA/C3k2等各种网络结构改进

Hello,各位读者们好.本文为最新YOLOv11有效涨点专栏目录,YOLOv11以及发布了一个月左右,这个过程中我也是给大家整理了许多的机制,其中包含了C3k2、主干(均支持根据yolov11训练的版本进行二次缩放,全系列都能轻量化)、检测头、注意力机制、Neck多种结构上创新,也有损失函数和一些细节点上的创新。

Snu77的博客 8万+

YOLOv8改进 | 损失篇 | Varifocal Loss密集目标检测专用损失函数(VFLoss)详细实现与优化

VarifocalLoss(VFLoss)是一种新型的损失函数,旨在解决密集目标检测中的难例问题。传统的损失函数,如交叉熵损失(Cross-Entropy Loss)和焦点损失(Focal Loss),在处理密集目标时可能会出现关注度不均的问题。VFLoss通过引入变焦因子(varifocal factor)来调整对不同目标的关注度,从而提高检测精度。分析结果根据实验记录的结果,分析不同超参数配置对模型性能的影响。使用可视化工具绘制超参数与性能指标的关系图,以直观展示不同配置的效果。优化建议。

一键难忘的博客 4696

YOLOv8密集目标检测的革新:VarifocalLoss的引入与复现【YOLOv8】

VarifocalLoss(VFLoss)是一种新型的损失函数,旨在解决密集目标检测中的难例问题。传统的损失函数,如交叉熵损失(Cross-Entropy Loss)和焦点损失(Focal Loss),在处理密集目标时可能会出现关注度不均的问题。VFLoss通过引入变焦因子(varifocal factor)来调整对不同目标的关注度,从而提高检测精度。分析结果根据实验记录的结果,分析不同超参数配置对模型性能的影响。使用可视化工具绘制超参数与性能指标的关系图,以直观展示不同配置的效果。优化建议。

博客 1690

Yolov5/Yolov7损失函数改进:SlideLoss,解决简单样本和困难样本之间的不平衡问题

SlideLoss| 亲测在多个数据集能够实现涨点,对小目标、遮挡物性能提升也能够助力涨点。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 2545

YOLOv10改进 | 损失函数篇 | SlideLoss、FocalLoss、VFLoss分类损失函数助力细节涨点(全网最全)

本文给大家带来的是分类损失损失函数,我们之前看那的那些IoU都是边界框回归损失,和本文的修改内容并不冲突,所以大家可以知道损失函数分为两种一种是分类损失另一种是边界框回归损失,上一篇文章里面我们总结了过去百分之九十的边界框回归损失的使用方法,本文我们就来介绍几种市面上流行的和最新的分类损失函数,同时在开始讲解之前推荐一下我的专栏,本专栏的内容支持(分类、检测、分割、追踪、关键点检测),专栏目前为限时折扣,

Snu77的博客 2321

深度学习环境搭建:CUDA、Anaconda、PyTorch 完整安装与验证教程

步骤操作验证命令1安装 CUDA 工具包nvcc -V2安装 Anaconda3创建 yolo 环境4安装 PyTorch5验证 GPU。

qq_37606844的博客 322

【Unity报错】Unity导入海康SDK 报错 DllNotFoundException: PlayCtrl assembly

2.尝试按网上其他的办法(包括使用depengs查看dll依赖等)1.先检查Plugins文件夹中是否存在PlayCtrl文件。3.如果网上查阅的办法都不能解决,请继续往下看。更换低版本的SDK库文件。

weixin_42968584的博客 1127

Multisim14.3中FPGA接口电路设计:原理图项目应用

深入讲解在multisim14.3环境下构建FPGA接口电路的方法,结合原理图设计与项目实践,展现multisim14.3强大的电路仿真能力,提升数字系统开发效率。

weixin_42578963的博客 1158

数据库行转列的sql语句

 问题描述假设有张学生成绩表(CJ)如下Name Subject Result张三 语文 80张三 数学 90张三 物理 85李四 语文 85李四 数学 92李四 物理 82现在 想写  sql 语句     查询后结果 为    姓名 语文 数学 物理张三 80 90 85李四 85 92 82       该怎么实现 ?研究意义        这是个并不复杂的问题,但却是数

jb303的专栏 2248

Ubuntu下安装Hive3.1.2教程(附MySQL安装方法及安装包)

文章目录前言一、安装Hive1. 下载压缩包并解压2. 安装Hive3. 配置环境变量4. 修改配置文件二、MySQL安装与配置1. 安装MySQL2. 安装MySQL jdbc包3. 为Hive创建MySQL账号三、验证Hive安装及错误处理1. 启动Hadoop2. 启动hive3. 运行Hive实例总结 前言 Hive 的安装需要建立在 Hadoop 的之上(类似于Hbase),关于 Hadoop 的单机安装以及伪分布式安装可以参考作者的另两篇博客: Ubuntu下单机安装Hadoop详细教程(附

程序必须为人类阅读而编写,并且仅仅碰巧可以让机器执行 1万+

Java/PHP:微信支付v3显示 “商户证书序列号有误。请使用签名私钥匹配的证书序列号。“(Spring Boot、thinkPHP微信支付失败返回错误,例如退款、企业付款到零钱等各种微信支付业务)

商户证书序列号有误。请使用签名私钥匹配的证书序列号,php,Java微信支付v3显示"商户证书序列号有误。请使用签名私钥匹配的证书序列号。"请问如何解决?httResponseBody[{"code":"SIGN_ERROR","message":"商户证书序列号有误。请使用签名私钥匹配的证书序列号"}]微信V3支付报错 平台证书及平台证书序列,vue3微信支付报错,Uniapp支付报错,微信支付签名错误解决方法,微信支付v3证书报错,微信支付平台证书过期(报错:证书序列号错误)计算签名时,商户号、商户AP

✅ 精选推荐文章 4598

【C2000系列DSP的Bootloader详解】实现过程、流程图与示例代码

C2000 Bootloader 的核心逻辑可概括为 “初始化→选模式→加载程序→校验→跳转” 五步。对于小白来说,无需纠结底层寄存器配置(驱动库已封装),重点理解 “启动流程” 和 “数据传输 + 校验” 的核心思想即可。 通过本文的流程图和示例代码,相信你已经掌握了 C2000 Bootloader 的核心原理。实际开发中,可基于 TI 提供的 Bootloader 示例(C2000Ware 中自带)进行修改,快速适配自己的硬件和应用场景。

昔时扬尘处 376

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: yolov26改进 | 损失函数改进篇 | 更加聚焦的边界框损失Focaler-IoU、InnerFocalerIoU(解决样本不平衡问题,二次创新)
下一篇: yolov26改进 | 损失函数改进篇 | QualityFocalLoss质量焦点损失(含代码 + 详细修改教程)
Snu77
Snu77 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域
博客等级 码龄5年 11万+粉丝 934原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Snu77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值