使用yolov8训练数据集及使用中遇到的问题
1.下载yolov8文件夹
下载链接
就是这个文件夹,别怕
2.yolov8模型
下载链接,我下了yolov8s.py,放在该路径E:\nfshare\yolov8\ultralytics\weights
ps:model文件类型可以是yaml,也可以是pt
3.修改yolov8.yaml文件
E:\nfshare\yolov8\ultralytics\cfg\models\v8\yolov8.yaml,就改类别数
nc: 9 # number of classes
4.新建data文件
E:\nfshare\yolov8\ultralytics\cfg\datasets\hr.yaml,这些和yolov5一样
5.修改default.yaml文件
E:\nfshare\yolov8\ultralytics\cfg\default.yaml ,就动了以下几个参数
model: weights/yolov8s.pt # (str, optional) path to model file, i.e. yolov8n.pt, yolov8n.yaml
data: cfg/datasets/hr.yaml # (str, optional) path to data file, i.e. coco128.yaml
epochs: 1 # (int) number of epochs to train for
amp: False
batch: 8
运行代码 yolo cfg=cfg/default.yaml
6.训练yolov8模型(train)
1.新建.py文件训练模型
在路径下新建python脚本文件\yolov8\ultralytics\demo.py,就像运行yolov5的模型一样,运行该脚本文件。
下面这些参数要怎么设置我还没懂。
#import sys
#sys.path.append("/home/yyt/nfshare/yolov8/")
from ultralytics import YOLO# Create a new YOLO model from scratch
#model = YOLO('/home/yyt/nfshare/yolov8/ultralytics/cfg/models/v8/yolov8.yaml')# Load a pretrained YOLO model (recommended for training)
model = YOLO('/home/yyt/nfshare/yolov8/ultralytics/weights/yolov8s.pt')# Train the model using the 'coco128.yaml' dataset for 3 epochs
results = model.train(data='/home/yyt/nfshare/yolov8/ultralytics/cfg/datasets/hr.yaml',amp=False,epochs=2,batch=8,val=True)# Evaluate the model's performance on the validation set
#results = model.val(data='/home/yyt/nfshare/yolov8/ultralytics/cfg/datasets/hr.yaml',amp=False,epochs=2,batch=8)success = model.export(format='onnx')
2.运行default.yaml文件训练模型
直接输入yolo cfg=/文件的路径/default.yaml
3.命令运行直接输:
yolo task=detect mode=train model=/yolov8/ultralytics/cfg/runs/detect/train6//weights/last.pt(模型位置,模型可以是.yaml形式或者.pt) data=/yolov8/ultralytics/cfg/datasets/hr.yaml(数据集.yaml文件位置) epochs=150 save=True resume=True (后面的都是参数,具体写什么看default.yaml里面你需要改什么)
7.测试训练后的模型(test)
1.运行default.yaml
修改default.yaml,运行代码和train一样
修改mode: val,model:/runs/detect/train6/weights/last.pt ,split: test
2.代码运行
这个方法能显示test每张图片检测的结果
yolo predict model= '/home/yyt/nfshare/yolov8/ultralytics/cfg/runs/detect/train6/weights/last.pt'(模型路径) source= '/home/yyt/nfshare/zijianshujuji/image/test'(图片文件路径)
问题
1.box_loss cls_loss dfl_loss全显示为nan,map全为0
显卡问题,batch值太大
解决:在default.yaml中,改小batch值 ,amp改为False
2.val的box_loss、cls_loss、dfl_loss为0,train不为0
排查问题:
1.validator.py文件
为了解决问题1 result全显示为0,我删去了validator中的如下代码,恢复看看能不能跑通val
self.args.half = self.device.type != 'cpu' # force FP16 val during training
失败
2.amp
amp改为ture,好的这个不能改,改了又都是nan
不是我瞎改的问题
尝试:
1.在trainer.py里面搜索half关键字,把所有有.half()变为.float()
#'model': deepcopy(de_parallel(self.model)).half(),'model': deepcopy(de_parallel(self.model)).float(),#'ema': deepcopy(self.ema.ema).half(),'ema': deepcopy(self.ema.ema).float(),
无效果
2.继续修改val.py,修改batch['img'].half()改为batch['img'].float()
#batch['img'] = (batch['img'].half() if self.args.half else batch['img'].float()) / 255batch['img'] = (batch['img'].float()) / 255
3.继续修改validator.py
不行
4.改小batch_size
batch_size=4
不行
解决:更新环境和其他安装包,pip install -r requirement.txt
3.运行default.yaml,报错 ModuleNotFoundError: No module named 'ultralytics'
(yolov5) root@xxdell:/home/yyt/nfshare/yolov8/ultralytics# yolo cfg=/home/yyt/nfshare/yolov8/ultralytics/cfg/default.yaml
Traceback (most recent call last):File "/home/nephilim/environment/anaconda3/envs/yolov5/bin/yolo", line 5, in <module>from ultralytics.cfg import entrypoint
ModuleNotFoundError: No module named 'ultralytics'
解决方法:在/home/xx/environment/anaconda3/envs/yolov5/bin/yolo文件中添加路径
sys.path.append("/home/yyt/nfshare/yolov8/")
再次运行,解决
4.训练结果runs文件保存路径改变
原本的训练结果保存在/home/yyt/nfshare/yolov8/runs 里面,即我的共享文件夹和yolov8存在的项目文件了,现在被更改了也不知道是怎么回事,前两次训练结果就没有出现。现在的文件夹路径在虚拟机的环境路径里/home/xx/environment/anaconda3/envs/yolov5/bin/runs/detect
感觉使用的不是yolov8,而是yolov5
(base) yyt@dell:/home/xx/environment/anaconda3/envs/yolov5/bin/runs/detect$ stat trainFile: trainSize: 4096 Blocks: 8 IO Block: 4096 directory
Device: 824h/2084d Inode: 16883842 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-08-21 15:02:27.587039861 +0800
Modify: 2023-08-21 14:59:15.937472731 +0800
Change: 2023-08-21 14:59:15.937472731 +0800
分析:
这几次运行的都是配置default.yaml,运行python文件,正常显示。
5.断网导致训练中断,继续训练
参考http://t.csdn.cn/UZRqy
命令行直接输入代码如下,模型改为之前跑的last.pt,epochs是总的训练次数
yolo task=detect mode=train model=/home/yyt/nfshare/yolov8/ultralytics/cfg/runs/detect/train6//weights/last.pt data=/home/yyt/nfshare/yolov8/ultralytics/cfg/datasets/hr.yaml epochs=150 save=True resume=True
6.ValueError: cannot convert float NaN to integer
训练完模型后,继续跑val测试,出现以下错误。
Validating runs/detect/train/weights/best.pt...
Ultralytics YOLOv8.0.173
使用yolov8训练数据集及使用中遇到的问题相关推荐
- YOLOv8训练参数详解(全面详细、重点突出、大白话阐述小白也能看懂)
文章目录 全部参数表 示例代码 1. model ✰✰✰✰✰ 选择.pt和.yaml的区别 模型种类选择,是n,s,m,还是l,x? 2. data ✰✰✰✰✰ 组织数据数据目录 1. 指定训练数据集 ...
- 基于深度学习的农作物叶片病害检测系统(UI界面+YOLOv5+训练数据集)
摘要:农作物叶片病害检测系统用于智能检测常见农作物叶片病害情况,自动化标注.记录和保存病害位置和类型,辅助作物病害防治以增加产值.本文详细介绍基于YOLOv5深度学习模型的农作物叶片病害检测系统,在介 ...
- 如何确定最佳训练数据集规模?6 大必备“锦囊”全给你了
[导读]对于机器学习而言,获取数据的成本有时会非常昂贵,因此为模型选择一个合理的训练数据规模,对于机器学习是至关重要的.在本文中,作者针对线性回归模型和深度学习模型,分别介绍了确定训练数据集规模的方法 ...
- Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例
Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例 目录
- 假设训练数据集中有10万个词,四元语法需要存储多少词频和多词相邻频率?《动手学深度学习 李沐》 转
假设训练数据集中有10万个词,四元语法需要存储多少词频和多词相邻频率? 循环神经网络 Notes 1. 语言模型 语言模型(language model)是自然语言处理的重要技术.自然语言处理中最常见 ...
- 包含近 20 万本图书,OpenAI 级别的训练数据集上线
来源:HyperAI超神经 本文约1000字,建议阅读8分钟 这些数据集中共包含 196640 册纯文本数据,可以用于训练 GPT 等大型语言模型. 近日,机器学习社区的一篇资源热贴「用于训练 GPT ...
- 独家 | 如何改善你的训练数据集?(附案例)
作者:Pete Warden 翻译:申利彬 校对:丁楠雅 本文约6800字,建议阅读10分钟. 本文作者基于自身项目经验阐述训练数据的重要性并分享了一些改进的实用技巧. Lisha Li 摄 这张幻灯 ...
- matlab 转换 tfrecord,训练数据集与TFRecord互相转换的两种方式
TensorFlow使用TFRecord格式来统一存储数据,该格式可以将图像数据.标签信息.图像路径以及宽高等不同类型的信息放在一起进行统一存储,从而方便有效的管理不同的属性. 将训练数据集转成TFR ...
- python训练数据集_Python——sklearn提供的自带的数据集
sklearn提供的自带的数据集 sklearn 的数据集有好多个种 自带的小数据集(packaged dataset):sklearn.datasets.load_ 可在线下载的数据集(Downlo ...
- python训练数据集_python – 如何训练大型数据集进行分类
我有一个1600000推文的训练数据集.我该如何训练这类巨大的数据. 我尝试过使用nltk.NaiveBayesClassifier.如果我跑步,训练需要5天以上. def extract_featu ...
最新文章
- c linux time微秒_学习linux,看这篇1.5w多字的linux命令详解(6小时讲明白Linux)
- 嵌入式工程师最后都选择了什么职位?
- c语言一元二次方程 ii(分支嵌套),C程序设计——求一元二次方程算法
- PHP. 02®. Ajax异步处理、常见的响应状态、XMLHttpRequest对象及API、ajax的get/post方法、...
- Shell脚本中的export
- 台湾自由行可行性研究报告
- 调用企业微信接口注意事项
- 深化高校人才培养体制机制改革
- 简单创意的思维导图怎么画
- 古往今来中国最经典的50句名言
- 定义由4条线和4个圆弧组成的Box类,绘制一个圆角矩形(可填充)。
- win11家庭版设置远程桌面
- 【RK按键】按键切换
- 全网最细的Spring教程(一)
- 增加matlab内存大小,matlab扩大内存的方法
- 计算机的风扇参数,电脑静音高效有诀窍 选购对风扇不可少
- ILI9341的使用之【一】TFT-LCD原理(转载)
- 机器视觉 工业相机评估
- 推箱子完整c语言程序,C语言实现推箱子游戏
- SpringBoot整合ElasticSearch测试代码
热门文章
- 微信截图时隐藏当前窗口失效(或者隐藏其他软件的窗口)
- 【HNU-CSEE jetson nano 第二节】系统镜像的烧录
- 普通图片转换成ICO图标
- 只因一泡尿,潜逃17年的女子,被人脸识别抓了!
- 终极光度蒙版PS插件Raya Pro 5 for Mac
- 简单快速的Mac软Jian删除方法,新手老鸟都适用
- [技术博客]采用Bootstrap框架进行排版布局
- 100多行代码实现纯算法云海效果
- Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(详细教程)
- Java代码怎么取消订阅功能,RxJava2取消订阅