【YOLOv8改进-损失函数】SlideLoss损失函数,解决样本不平衡问题
介绍
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$ 是阈值参数,用于区分易样本和难样本。
核心代码
```py
import math
class SlideLoss(nn.Module):
def __init__(self, loss_fcn):
super(SlideLoss, self).__init__()
self.loss_fcn = loss_fcn
self.reduction = loss_fcn.reduction
self.loss_fcn.reduction = 'none' # required to apply SL to each element
def forward(self, pred, true, auto_iou=0.5):
loss = self.loss_fcn(pred, true)
if auto_iou < 0.2:
auto_iou = 0.2
b1 = true <= auto_iou - 0.1
a1 = 1.0
b2 = (true > (auto_iou - 0.1)) & (true < auto_iou)
a2 = math.exp(1.0 - auto_iou)
b3 = true >= auto_iou
a3 = torch.exp(-(true - 1.0))
modulating_weight = a1 * b1 + a2 * b2 + a3 * b3
loss *= modulating_weight
if 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)