YOLOv8损失函数篇 | 更换损失函数

📌损失函数篇 | YOLOv8更换损失函数之 SIoU、EIoU、WIoU、Focal_xIoU等

SloU

  • 论文地址SloU: More Powerful Learning for Bounding Box Regression
  • 提出时间
  • 适用场景:适用于需要高精度边界框对齐的场景,如精细的物体检测和小目标检测。
  • 概念:SloU损失通过融入角度考虑和规模敏感性,引入了一种更为复杂的边界框回归方法,解决了以往损失函数的局限性,SloU损失函数包含四个组成部分:角度损失、距离损失、形状损失和第四个未指定的组成部分。通过整合这些方面,从而实现更好的训练速度和预测准确性。

WIoU

GloU

DloU

EloU

  • 论文地址Focal and Efficient IOU Loss for Accurate Bounding Box Regression
  • 提出时间:中科院提出
  • 适用场景:可用于需要进一步优化边界框对齐和形状相似性的高级场景。
  • 概念:EloU损失函数的核心思想在于提高边界框回归的准确性和效率。它通过以下几个方面来优化目标检测:
  1. 增加中心点距离损失:通过最小化预测框和真实框中心点之间的距离,提高边界框的定位准确性。
  2. 考虑尺寸差异:通过惩罚宽度和高度的差异,EloU确保预测框在形状上更接近真实框。
  3. 结合最小封闭框尺寸:将损失函数与包含预测框和真实框的最小封闭框的尺寸相结合,从而使得损失更加敏感于对象的尺寸和位置。

EloU损失函数在传统loU基础上增加了这些考量,以期在各种尺度上都能获得更精确的目标定位,尤其是在物体大小和形状变化较大的场景中。

Inner-IoU

  • 论文地址Inner-IoU: More Effective Intersection over Union Loss with Auxiliary Bounding Box
  • 提出时间:2023
  • 动机:提出了Inner-IoU损失,通过使用辅助边界框来加速回归,而无需添加任何新的损失项。其通过尺度因子ratio控制辅助边框尺寸以计算损失加速收敛,并能够集成至现有基于IoU的损失函数GIoU、DIoU、CIoU、EIoU、SIoU中。
  • 引入比例因子控制来生成不同尺度的辅助边界框以计算损失。

自己的数据集效果不是很好。

Focal loss

  • 论文地址Focal Loss for Dense Object Detection
  • 提出时间: Facebook AI团队
  • 概念:提出目标便是解决高低质量样本类别不平衡的问题。
  • 适用场景:适用于需要高精度边界框对齐的场景,如精细的物体检测和小目标检测。

使用Focal_xIoU类损失一般都会提升精度。


整理不易🚀🚀,关注和收藏后拿走📌📌欢迎留言🧐👋📣✨
快来关注我的公众号🔎AdaCoding 和 GitHub🔎 AdaCoding123
在这里插入图片描述

### 使用 Matplotlib 可视化训练损失和验证损失 以下是通过 Python 的 `matplotlib` 库实现训练损失和验证损失可视化的代码示例: ```python import matplotlib.pyplot as plt # 假设这是模型的训练过程中的损失数据 epochs = range(1, 11) # 训练周期数 train_loss = [3.2, 2.9, 2.5, 2.0, 1.7, 1.4, 1.2, 1.0, 0.8, 0.6] # 训练损失 val_loss = [3.0, 2.7, 2.3, 1.9, 1.6, 1.4, 1.3, 1.1, 1.0, 0.9] # 验证损失 # 绘制折线图 plt.figure(figsize=(10, 6)) plt.plot(epochs, train_loss, 'o-', label='Training Loss') plt.plot(epochs, val_loss, 's-', label='Validation Loss') # 设置图表标题和坐标轴标签 plt.title('Training and Validation Loss Over Epochs', fontsize=16) plt.xlabel('Epochs', fontsize=14) plt.ylabel('Loss', fontsize=14) # 添加网格和图例 plt.grid(True) plt.legend(fontsize=12) # 显示图表 plt.show() ``` 上述代码展示了如何利用 `matplotlib` 将训练损失和验证损失绘制成折线图[^4]。其中,`'o-'` 和 `'s-'` 参数分别表示用圆圈标记和正方形标记连接线条。 如果希望使用 TensorBoard 进行可视化,则可以通过 TensorFlow 提供的功能记录训练日志并启动 TensorBoard 工具完成可视化操作。TensorBoard 是一种强大的工具,能够实时监控训练指标的变化情况[^5]。 #### 关于 TensorBoard 的简单说明 为了在 TensorBoard 中显示训练损失和验证损失,可以按照以下方式设置回调函数并将日志保存到指定目录下: ```python from tensorflow.keras.callbacks import TensorBoard import os log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = TensorBoard(log_dir=log_dir, histogram_freq=1) model.fit(x_train, y_train, epochs=10, validation_data=(x_val, y_val), callbacks=[tensorboard_callback]) ``` 运行完成后,在命令行输入 `tensorboard --logdir=logs/fit` 启动服务即可查看结果[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值