【YOLOv8改进-损失函数】SlideLoss损失函数,解决样本不平衡问题

介绍

image-20240605222542603

YOLO目标检测创新改进与实战案例专栏

专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO基础解析+创新改进+实战案例

摘要

近年来,基于深度学习的人脸检测算法取得了很大进展。这些算法一般可以分为两类,即像 Faster R-CNN 这样的两阶段检测器和像 YOLO 这样的单阶段检测器。由于在准确性和速度之间更好的平衡,单阶段检测器已在许多应用中得到广泛使用。在本文中,我们提出了一种基于单阶段检测器 YOLOv5 的实时人脸检测器,名为 YOLO-FaceV2。我们设计了一个称为 RFE(感受野增强)模块来增强小人脸的感受野,并使用 NWD 损失来弥补 IoU 对微小物体位置偏差的敏感性。对于人脸遮挡问题,我们提出了一个名为 SEAM 的注意力模块,并引入排斥损失来解决。此外,我们使用一个权重函数 Slide 来解决简单和困难样本之间的不平衡,并利用有效感受野的信息设计了锚点。在 WiderFace 数据集上的实验结果表明,我们的人脸检测器在所有的简单、中等和困难子集上均优于 YOLO 及其变体。源码地址:https://github.com/Krasjet-Yu/YOLO-FaceV2

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

Slide Loss旨在解决易样本和难样本之间的不平衡问题。该损失函数根据预测框和真实框之间的IoU大小区分易样本和难样本,并通过一个称为Slide的加权函数来赋予难样本更高的权重。Slide函数的设计使得模型能够更好地优化那些处于边界的样本,并更充分地利用这些样本来训练网络,从而提高模型对难样本的关注度。

Slide Loss的公式如下所示:
$$
f(x) = \begin{cases}
1 & x \leq \mu - 0.1 \
e^{\frac{1-\mu}{x}} & \mu < x < \mu - 0.1 \
e^{\frac{1-x}{\mu}} & x \geq \mu
\end{cases}
$$

其中,$x$ 是IoU值,$\mu$ 是阈值参数,用于区分易样本和难样本。

image-20240605222648732

核心代码


```py
import mathclass SlideLoss(nn.Module):def __init__(self, loss_fcn):super(SlideLoss, self).__init__()self.loss_fcn = loss_fcnself.reduction = loss_fcn.reductionself.loss_fcn.reduction = 'none'  # required to apply SL to each elementdef forward(self, pred, true, auto_iou=0.5):loss = self.loss_fcn(pred, true)if auto_iou < 0.2:auto_iou = 0.2b1 = true <= auto_iou - 0.1a1 = 1.0b2 = (true > (auto_iou - 0.1)) & (true < auto_iou)a2 = math.exp(1.0 - auto_iou)b3 = true >= auto_ioua3 = torch.exp(-(true - 1.0))modulating_weight = a1 * b1 + a2 * b2 + a3 * b3loss *= modulating_weightif self.reduction == 'mean':return loss.mean()elif self.reduction == 'sum':return loss.sum()else:  # 'none'return loss

task与yaml配置

详见:https://blog.csdn.net/shangyanaf/article/details/139483941

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Device Mapper创建线性阵列

​ 在之前的文章:《QEMU/KVM启动物理分区的Windows并调优》中笔者使用mdadm创建线性阵列,使VM启动物理硬盘分区上的Windows系统。这个做法思路清晰且具有实操性,但根据这个issue,Linux内核上游已将CONFIG_MD_LINEAR编译参数弃置了,这意味着在6.8及以后的内核中将无法使用m…

【YOLOv8改进-卷积Conv】DualConv( Dual Convolutional):用于轻量级深度神经网络的双卷积核

**摘要:**我们提出DualConv,一种融合$3\times3$和$1\times1$卷积的轻量级DNN技术,适用于资源有限的系统。它通过组卷积结合两种卷积核,减少计算和参数量,同时增强准确性。在MobileNetV2上,参数减少54%,CIFAR-100精度仅降0.68%。在YOLOv3中,DualConv提升检测速度并增4.4…

达梦数据库图形化安装

图形化安装(官网https://eco.dameng.com/document/dm/zh-cn/start/dm-instance-linux.html)启用图形化安装界面前需要通过如下命令将图形界面权限放开: Copy[root@localhost mnt]# xhost + access control disabled, clients can connect from any host [root@localhost mnt…

【YOLOv8改进-卷积Conv】 OREPA(Online Convolutional Re-parameterization):在线卷积重参数化

**OREPA**是在线卷积重参数化的缩写,它提出了一种两阶段流程来减少深度模型训练的开销。该方法通过线性缩放层优化复杂训练块,并在训练完成后将其压缩为单个卷积层,降低内存使用和提高训练速度。与现有技术相比,OREPA能减少约70%的训练内存开销,提升2倍训练速度,并在Imag…

【YOLOv8改进】 RFB (Receptive Field Block):多分支卷积块

**RFB Net是针对目标检测的轻量级解决方案,它通过设计灵感来自人眼感受野的模块提升特征表示。RFB块包含多分支卷积,模拟不同尺度和偏心率,增强轻量模型如SSD的性能。在保持实时速度的同时,RFB Net在准确性上媲美深度检测器。代码可在GitHub找到。**介绍摘要 当前表现最好的…

BUUCTF---天干地址+甲子

题目直接参考天干地支表作结,转ASCII flag{Goodjob}

BUUCTF---古典密码知多少

题目知识 一共给出四种古典密码,分别是:猪圈密码、圣堂武士密码、标准银河字母、栅栏密码 猪圈之前有介绍 圣:标准银河字母更多加密方式 解题 对照解密 FGCPFLIRTUASYON 再使用栅栏 FLAGISCRYPTOFUN flag{CRYPTOFUN}

mysql 查询,字符串带着空格也能匹配上

1.说明有空格,这些数据其实是不规范的数据,但是仍然能查询出来2.注意id是一样的,但是查询出来的数据自动trim了。3.甚至输入数字也能查出来,之前知道可以自动转型,但是没想到可以自动转型+trim 4.带着前导0的整型 也能匹配上5.带着前导0的字符肯定匹配不上6.空格在前面也…

个人网站接入Google Ads的一点心得

前言 前段时间花了一些精力尝试和摸索主题接入 Google Ads 的问题,算是阶段性成功了吧,这次简单分享一下,如果有缘看到这篇文章,应该会有些启发。 1. 展示效果 上篇文章说到,前两天我在我的两款主题中内置了 Google Ads 广告位,并且我自己的网站也启用了,下图是这两天的…

你要的AI Agent工具都在这里

只有让LLM(大模型)学会使用工具,才能做出一系列实用的AI Agent,才能发挥出LLM真正的实力。本篇,我们让AI Agent使用更多的工具,比如:外部搜索、分析CSV、文生图、执行代码等。只有让LLM(大模型)学会使用工具,才能做出一系列实用的AI Agent,才能发挥出LLM真正的实力。…

C#语言编写的仅有8KB大小的简易贪吃蛇开源游戏

前言 今天大姚给大家分享一款由C#语言编写的仅有8KB大小的简易贪吃蛇开源游戏:SeeSharpSnake。 项目特点 该仓库中的项目文件和脚本可以用多种不同的配置构建相同的游戏,每个配置生成的输出大小也不同。 项目源码运行F5 运行 SeeSharpSnake项目,查看优秀效果: 构建不同大小…

dotnet X11 调用 XRootWindow 是否耗时

本文将通过阅读 lib x11 代码告诉大家,调用 XRootWindow 函数是不耗时的,没有成本的在我阅读 Avalonia 和 CPF 和 UNO 框架的代码的时候,我发现了很多时候都是在需要用到 RootWindow 时,调用 XRootWindow 或 XDefaultRootWindow 获取 RootWindow 的值。此时我想着是否将 Ro…