汇总利用YOLO8训练遇到的报错和解决方案(包含训练过程中验证阶段报错、精度报错、损失为Nan、不打印GFLOPs)

一、本文介绍

本文为专栏内读者和我个人在训练YOLOv8时遇到的各种错误解决方案,你遇到的问题本文基本上都能够解决,同时本文的内容为持续更新,定期汇总大家遇到的问题已经一些常见的问题答案,目前包含的问题已经解决方法汇总如下图所示。

专栏目录:YOLOv8改进有效系列目录 | 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制

专栏回顾:YOLOv8改进系列专栏——本专栏持续复习各种顶会内容——科研必备 

目录

一、本文介绍

二、 报错问题 

(1)训练过程中loss出现Nan值.

(2)多卡训练问题,修改模型以后不能支持多卡训练可以尝试下面的两行命令行操作,两个是不同的操作,是代表不同的版本现尝试第一个不行用第二个

(3) 针对运行过程中的一些报错解决

(4) 针对yaml文件中的nc修改

(5) 针对环境的问题

(6) 训练过程中不打印GFLOpS

(7) mmcv安装的解决方法

三、全文总结 


二、 报错问题 

# 以下为两个重要库的版本,大家可以对应下载,使用教程我会更新,时间还没来得及大家可以先看视频使用。

项目环境:

python == 3.9.7

pytorch == 1.12.1

timm == 0.9.12

mmcv-full == 1.6.2

 


(1)训练过程中loss出现Nan值.

可以尝试关闭AMP混合精度训练,如何关闭amp呢找到如下文件'ultralytics/cfg/default.yaml',其中有一个参数是

amp: False  # (bool) Automatic Mixed Precision (AMP) training, choices=[True, False], True runs AMP check

我们将其设置为False即可,默认时为True。

.

(2)多卡训练问题,修改模型以后不能支持多卡训练可以尝试下面的两行命令行操作,两个是不同的操作,是代表不同的版本现尝试第一个不行用第二个

    python -m torch.distributed.run --nproc_per_node 2 train.py

    python -m torch.distributed.launch --nproc_per_node 2 train.py


(3) 针对运行过程中的一些报错解决

    1.如果训练的过程中验证报错了(主要是一些形状不匹配的错误这是因为验证集的一些特殊图片导致)

就是有这种训练第一个epochs完成后开始验证的时候报错,下面的方法基本百分之九十都能够解决。

    找到ultralytics/models/yolo/detect/train.py的DetectionTrainer class中的build_dataset函数中的rect=mode == 'val'改为rect=False

    2.推理的时候运行detect.py文件报了形状不匹配的错误

    找到ultralytics/engine/predictor.py找到函数def pre_transform(self, im),在LetterBox中的auto改为False

    3.训练的过程中报错类型不匹配的问题

    找到'ultralytics/engine/validator.py'文件找到 'class BaseValidator:' 然后在其'__call__'中

    self.args.half = self.device.type != 'cpu'  # force FP16 val during training的一行代码下面加上self.args.half = False


(4) 针对yaml文件中的nc修改

    不用修改,模型会自动根据你数据集的配置文件获取。

    这也是模型打印两次的区别,第一次打印出来的就是你选择模型的yaml文件结构,第二次打印的就是替换了你数据集的yaml文件,模型使用的是第二种。


(5) 针对环境的问题

    环境的问题我实在解决不过来,所以大家可以自行在网上搜索解决方案。
    这里是我早期写的一个环境搭建的教程,大家可以参考。
    https://snu77.blog.csdn.net/article/details/128027977


(6) 训练过程中不打印GFLOpS

计算的GFLOPs计算异常不打印,所以需要额外修改一处, 我们找到如下文件'ultralytics/utils/torch_utils.py'文件内有如下的代码按照如下的图片进行修改,大家看好函数就行,其中红框的640可能和你的不一样, 然后用我给的代码替换掉整个代码即可。

def get_flops(model, imgsz=640):"""Return a YOLO model's FLOPs."""try:model = de_parallel(model)p = next(model.parameters())# stride = max(int(model.stride.max()), 32) if hasattr(model, 'stride') else 32  # max stridestride = 640im = torch.empty((1, 3, stride, stride), device=p.device)  # input image in BCHW formatflops = thop.profile(deepcopy(model), inputs=[im], verbose=False)[0] / 1E9 * 2 if thop else 0  # stride GFLOPsimgsz = imgsz if isinstance(imgsz, list) else [imgsz, imgsz]  # expand if int/floatreturn flops * imgsz[0] / stride * imgsz[1] / stride  # 640x640 GFLOPsexcept Exception:return 0

 


(7) mmcv安装的解决方法

有的读者mmcv-full会安装失败是因为自身系统的编译工具有问题,也有可能是环境之间安装的有冲突 推荐大家离线安装的形式,下面的地址中大家可以找找自己的版本,下载到本地进行安装。 https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html https://download.openmmlab.com/mmcv/dist/index.html 

三、全文总结 

到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv8改进有效涨点专栏,本专栏目前为新开的平均质量分98分,后期我会根据各种最新的前沿顶会进行论文复现,也会对一些老的改进机制进行补充,目前本专栏免费阅读(暂时,大家尽早关注不迷路~),如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

专栏回顾YOLOv8改进系列专栏——本专栏持续复习各种顶会内容——科研必备

这里会持续更新群内的一些报错的解决方法,同时希望大家对于我的CSDN博客能够看完之后顺手点赞收藏和评论支持一下,这样我也会更努力的给大家收集更多的改进机制

专栏如果销量好后面我会考虑出模型剪枝和蒸馏,同时人数多了我更新起来也更有动力,在此真诚的感谢大家。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

“替代云”知多少?Akamai Linode 重新定义公有云服务!

自2006年云计算概念提出以来,云产业已经成为数字化时代所必备的底层基础,但随着多元化的业务需求的增多,多云战略、本地部署所形成混合环境,都使得云复杂性,日渐成为了迫在眉睫的挑战。 451 Research 云价格指数 (CPI…

前端基础自学整理|HTML + JavaScript + DOM事件

目录 一、HTML 1、Html标签 2、Html元素 3、基本的HTML标签 二、CSS 样式 层叠样式表 三、JavaScript 使用示例 四、HTML DOM 通过可编程的对象模型,javaScript可以: window document 1、查找HTML元素 2、操作HTML元素 获取元素的属性 四…

Linux---进程间通讯(上)

一、进程间通讯的目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件&#xff0…

聚观早报 | OPPO公布全新AI战略;华为P70 Art影像细节曝光

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 2月22日消息 OPPO公布全新AI战略 华为P70 Art影像细节曝光 苹果正加速开发智能戒指 微软将大规模投资人工智能 …

ArcgisForJS如何访问Arcgis Server?

文章目录 0.引言1.准备ArcGIS相关工具2.创建含有ArcSDE地理数据库的MXD文件3.注册ArcSDE地理数据库4.发布数据到Arcgis Server5.ArcgisForJS访问ArcGIS Server数据 0.引言 ArcGIS API for JavaScript 是一个用于在Web和移动应用程序中创建交互式地图和地理空间分析应用的库。它…

[word] 如何使用Excel制作简单的流程图 #媒体#微信#学习方法

如何使用Excel制作简单的流程图 对于在职场办公的朋友们来说,经常要使用到Excel演示公式,制作各种图表等等,其实Excel还可以制作简单的流程图呢,估计许多小伙伴们还不知道吧,今天就来给大家演示一下,看完就…

在VSCode中新配置一个ros项目

如何从零开始配置一个ros项目 预先准备初始化ros工程运行hello_ros进行第一个示例进行编译测试 预先准备 首先要在vscode中安装(必须安装的):ros,c,cmake,cmake tools(补全camkelist文件&#…

一个C#开发的大小只有8KB的贪吃蛇开源游戏!

大家好,我是编程乐趣。 今天给大家推荐基于C#开发的、一个贪吃蛇开源项目,这个项目除了实现贪吃蛇的功能外,重点是讲解如何把编译后的程序,从65MB精简为8KB。 项目地址 https://github.com/MichalStrehovsky/SeeSharpSnake 编译…

openssl3.2 - 编译 - zlib.dll不要使用绝对路径

文章目录 openssl3.2 - 编译 - 编译时的动态库zlib.dll不要使用绝对路径概述测试zlib特性在安装好的目录中是否正常笔记70-test_tls13certcomp.t80-test_cms.t对测试环境的猜测从头再编译测试安装一次测试一下随便改变位置的openssl用到zlib时是否好使测试一下随便改变位置的op…

为全志D1开发板移植LVGL日历控件和显示天气

利用TCP封装HTTP包请求天气信息 Linux还真是逐步熟悉中,现在才了解到Linux即没有原生的GUI,也没有应用层协议栈,所以要实现HTTP应用,必须利用TCP然后自己封装HTTP数据包。本篇即记录封装HTTP数据包,到心知天气请求天气…

javaSE多态

文章目录 斜体样式1.1 面向对象三大特征 ?1.2 什么是多态 ?*斜体样式*1.3 多态的前提1.4 多态的成员访问特点1.5 多态的优缺点1.6 多态的转型1.7 多态的转型注意1.8 解决转型安全隐患 2 内部类2.1 内部类的分类什么是内部类 ?什么时候使用内部类 ?内部类分类 ? 2.2 成员内…

【医学大模型】大模型 + 长期慢病的预测和管理

大模型 长期慢病的预测和管理 提出背景长期慢病框架慢性疾病检测框架如何实现多提示工程为什么使用多提示 慢性疾病管理框架个性化提示工程医学知识注入 提出背景 论文:https://arxiv.org/abs/2401.12988 慢性疾病是指那些需要长期管理和治疗的疾病,包…

PyTorch深度学习实战(37)——CycleGAN详解与实现

PyTorch深度学习实战(37)——CycleGAN详解与实现 0. 前言1. CycleGAN 基本原理2. CycleGAN 模型分析3. 实现 CycleGAN小结系列链接 0. 前言 CycleGAN 是一种用于图像转换的生成对抗网络(Generative Adversarial Network, GAN),可以在不需要配…

车灯裂了用什么胶修复?

当车灯出现裂缝、破口、缺损、裂痕、破裂、破损、崩角、掉角等问题时,可以使用车灯无痕修复专用UV胶进行修复。车灯无痕修复专用UV胶是一种经过处理的UV树脂胶,主要成份是改性丙烯酸UV树脂。应用在车灯的专业无痕修复领域。 具有如下特点: 1…

详细描述一下CrossOver2024版本的用途和作用?

当然可以。CrossOver 是一款由 CODE WEAVERS 公司开发的软件,其主要目标是在 macOS 和 Linux 系统上实现与 Windows 应用程序的兼容性。它不同于传统的虚拟机,如 Parallels 或 VMware,因为它并不在 macOS 上创建一个完整的 Windows 环境。相反…

基于机器学习的青藏高原高寒沼泽湿地蒸散发插补研究_王秀英_2022

基于机器学习的青藏高原高寒沼泽湿地蒸散发插补研究_王秀英_2022 摘要关键词 1 材料和方法1.1 研究区概况与数据来源1.2 研究方法 2 结果和分析2.1 蒸散发通量观测数据缺省状况2.2 蒸散发与气象因子的相关性分析2.3 不同气象因子输入组合下各模型算法精度对比2.4 随机森林回归模…

安卓系统签名方法

首先在源码中创建key目录用来存放我们需要的文件,一般需要build/target/product/security/platform.pk8,build/target/product/security/platform.x509.pem,然后执行命令openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.…

9.vue学习笔记(组件传递Props校验+组件事件-组件传递数据+组件事件-配合“v-model”使用)

文章目录 1.组件传递Props校验1.1.默认值1.2.必选项1.3.注意事项:props 是只读的 2.组件事件-组件传递数据2.1.温馨提示:组件之间传递数据的方案 3.组件事件-配合“v-model”使用 1.组件传递Props校验 Vue组件可以更细致地声明对传入的 props 的校验要求…

重铸安卓荣光——复选框ButtonCheckBox

痛点: 公司打算做安卓软件,最近在研究安卓,打算先绘制样式 研究发现安卓并不像前端有那么多组件库,甚至有些基础的组件都需要自己实现,记录一下自己实现的组件 成品展示 一个复选框样式 选中时背景橙色,带…

升级到PHP8.X的原因和方法

上周有一个使用Hostease美国主机服务器多年的客户,反馈需要升级到PHP8.x,原因是站点程序已升级,并希望站点运行在更高也稳定的PHP8.x上。在升级PHP8.x的过程中,联系我们并反馈在升级过程中遇到了问题,需求解决方案。 升…