(最全最小白易懂版)Yolov8新手教程-配置环境、数据集处理、目标检测、结果分析处理(图像指标、可视化结果)、报错分析等全过程学习记录

目录

一、安装环境(配置yolo、demo测试)

二、数据集准备(格式学习)

三、训练数据集

1.划分数据集

2.训练数据集

2.1常规训练

2.2微调

3.各种报错记录

3.1AttributeError

3.2TypeError

3.3Error while loading conda entry point

4.训练结果

4.1 RGB-yolov8n(train16/train)

4.2 RGB-yolov8s(train2)

4.3 RGB-yolov8m

4.4 RGB-yolov8l

4.5 RGB-yolov8x

4.6 NIR-yolov8n

4.7 NIR-yolov8m

4.8 NIR-yolov8l

4.9 NIR-yolov8x

4.10 NIR-yolov8s

四、验证(val)

五、预测结果(predict)

六、数据处理和分析

七、总结


写在前面:这篇笔记全过程花了大概两天的时间,第一部分花了一下午,第二部分+第三部分花了一下午+一晚上,第四+五部分也是一下午,最后结果分析花了一晚上时间。(完全Yolo零基础,只复现过一个深度学习算法的小白)

一、安装环境(配置yolo、demo测试)

最开始先连接服务器,相关内容如下(本地跑不动我的数据集)

服务器安装基本环境教程icon-default.png?t=N7T8https://blog.csdn.net/qq_53826699/article/details/140666990?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22140666990%22%2C%22source%22%3A%22qq_53826699%22%7D

Pycharm教程icon-default.png?t=N7T8https://blog.csdn.net/weixin_45662399/article/details/134499605?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172129266716800188593845%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172129266716800188593845&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-134499605-null-null.142%5Ev100%5Epc_search_result_base6&utm_term=YOLOV8&spm=1018.2226.3001.4187我用的是VsCode,全程在安装ultralytics包的过程中出了一点小问题(注意神秘的力量,安装的时候不要开,否则一直会报SSL Error),总共花了大约两小时完成了全部配置+demo测试(bus和自己用了一张图)

其他常见问题比如HTTP Error可以看我之前写的这篇文章:

Anaconda-HTTP Error、SSLErro怎么解决【5种方法综合试验后最强版解决方案】icon-default.png?t=N7T8https://blog.csdn.net/qq_53826699/article/details/140520692?spm=1001.2014.3001.5501

首先cd到requirements.txt的路径上,然后执行下述命令行

pip install requirements.txt
pip install ultralytics
pip install yolo

总共就这三行指令的事,其他博客写的那个天花乱坠啊,注意点如下:

1、 神秘力量(有时候开着不能安装,有时候开着安装更快(不知道

2、记得activate环境之后再Pip这些玩意哦

然后pip list检查一下是否安装成功(如下图所示,即为成功)

pip list

然后测试一下是否可以运行(注意好路径)

yolo predict model=yolov8n.pt source=ultralytics/ultralytics/assets/bus.jpg

 运行命令后可以实现检测,结果保存在runs->detect->predict文件夹下, 可以看到已经完成了目标框和类别概率的显示和绘制

看不懂的话还可参考以下两篇文章:

https://blog.csdn.net/weixin_45819759/article/details/131962654icon-default.png?t=N7T8https://blog.csdn.net/weixin_45819759/article/details/131962654https://blog.csdn.net/weixin_45662399/article/details/134499605?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172126313516800222832426%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172126313516800222832426&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-134499605-null-null.142%5Ev100%5Epc_search_result_base6&utm_term=yolov8&spm=1018.2226.3001.4187icon-default.png?t=N7T8https://blog.csdn.net/weixin_45662399/article/details/134499605?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172126313516800222832426%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172126313516800222832426&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-134499605-null-null.142%5Ev100%5Epc_search_result_base6&utm_term=yolov8&spm=1018.2226.3001.4187

二、数据集准备(格式学习)

修改yaml文件,给出了数据集的路径、训练集、验证集和测试集所在的位置

三、训练数据集

1.划分数据集

先找到数据分割的.py文件,然后一定要修改路径!!!

python splitDataset.py

上图所示,即为分割成功~并且会生成test.txt和train.txt两个文件

2.训练数据集

2.1常规训练

  • data = datasets/mmship/data/RGB/MMship.yaml
  • model = yolov8n.yaml
  • pretrained = ultralytics/yolov8n.pt
  • epoch = 12
yolo detect train data = ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=12 batch=4 lr0=0.001  resume=True

yolo detect train data = ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=12 batch=4 lr0=0.001  resume=True

2.2微调

考虑上wd和数据增强的指令行如下:

yolo detect train data=ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

yolo detect train data = ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

3.各种报错记录

3.1AttributeError

AttributeError: module 'torch.amp' has no attribute 'GradScaler'

解决方案:找到GradScaler这个函数(ctrl+点击函数),然后将 torch.amp.GradScaler 改为torch.cuda.amp.GradScaler

上个问题解决了,重新运行一下:

3.2TypeError

然后又报错:TypeError: full() received an invalid combination of arguments - got (tuple, str, device=torch.device, dtype=torch.dtype), but expected one of:
 * (tuple of ints size, Number fill_value, *, tuple of names names, torch.dtype dtype, torch.layout layout, torch.device device, bool pin_memory, bool requires_grad)
 * (tuple of SymInts size, Number fill_value, *, Tensor out, torch.dtype dtype, torch.layout layout, torch.device device, bool pin_memory, bool requires_grad)

解决方案:

torch.full((1,), self._init_scale, dtype=torch.float32, device=dev)

torch.full((1,), self._init_scale, dtype=torch.float32, device=dev)

def full(size: _size, fill_value: Union[Number, _complex], *, out: Optional[Tensor] = None, layout: _layout = strided, dtype: Optional[_dtype] = None, device: Optional[DeviceLikeType] = None, requires_grad: _bool = False, pin_memory: _bool = False) -> Tensor:

def full(size: _size, fill_value: Union[Number, _complex], *, names: List[Union[str, None]], layout: _layout = strided, dtype: Optional[_dtype] = None, device: Optional[DeviceLikeType] = None, requires_grad: _bool = False, pin_memory: _bool = False) -> Tensor:

def full(size: Sequence[Union[_int, SymInt]], fill_value: Union[Number, _complex], *, out: Optional[Tensor] = None, dtype: Optional[_dtype] = None, layout: Optional[_layout] = None, device: Optional[Optional[DeviceLikeType]] = None, pin_memory: Optional[_bool] = False, requires_grad: Optional[_bool] = False) -> Tensor:

def full(size: _size, fill_value: Union[Number, _complex], *, names: Optional[Sequence[Union[str, ellipsis, None]]], dtype: Optional[_dtype] = None, layout: Optional[_layout] = None, device: Optional[Optional[DeviceLikeType]] = None, pin_memory: Optional[_bool] = False, requires_grad: Optional[_bool] = False) -> Tensor:

根据报错信息,传递给torch.full()函数的参数组合不正确。报错信息给出了两种正确的签名:

  1. (tuple of ints size, Number fill_value, *, tuple of names names, torch.dtype dtype, torch.layout layout, torch.device device, bool pin_memory, bool requires_grad)
  2. (tuple of SymInts size, Number fill_value, *, Tensor out, torch.dtype dtype, torch.layout layout, torch.device device, bool pin_memory, bool requires_grad)

从提供的四个函数定义来看,最接近的应该是第一种签名。尝试如下修改:

torch.full((1,), self._init_scale, dtype=torch.float32, device=dev)

或者

torch.empty(1, dtype=torch.float32, device=dev)
torch.full((1,), self._init_scale, out=out)

这里的关键是:

  1. size 参数应该是一个 tuple,即使只有一个元素也要用 (1,) 的形式传递。
  2. fill_value 参数应该是一个 Number,您传递的 self._init_scale 应该满足这个要求。
  3. 其他可选参数 nameslayoutpin_memoryrequires_grad 您可以不传,使用默认值即可。

哈哈哈哈哈

以为以上有用吗!

不!!!!!!!!

你只要安一个高版本的torch!!!

就解决啦!!!!!!!!!!

纯纯是torch内嵌包的问题啦!!!!!

3.3Error while loading conda entry point

然后创建环境的时候又有一个问题,但是貌似啥都不影响

Error while loading conda entry point: anaconda-cloud-auth (cannot import name 'Callable' from 'collections' (/data1/zhangjiening/anaconda3/lib/python3.12/collections/__init__.py))

然后就训练上了wwww

4.训练结果

练结束后训练结果都保存在runs这个文件夹下,可以看到有所有的指标曲线的可视化;

还有模型训练出来的权重,best.pt为训练的最好的一组权重,后面可以使用。

4.1 RGB-yolov8n(train16/train)

train16是2.1中指令,如下图所示

yolo detect train data = ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=12 batch=4 lr0=0.001  resume=True

yolo detect train data = ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=12 batch=4 lr0=0.001  resume=True

train是2.2中指令,如下图所示

yolo detect train data=ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

yolo detect train data=ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

我要复现的结果,如下图所示

4.2 RGB-yolov8s(train2)

yolo detect train data=ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8s.yaml pretrained=ultralytics/yolov8s.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

yolo detect train data=ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8s.yaml pretrained=ultralytics/yolov8s.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

然后报错:

Downloading https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8s.pt to 'ultralytics/yolov8s.pt'...
⚠️ Download failure, retrying 1/3 https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8s.pt...
curl: (28) Failed to connect to github.com port 443: 连接超时                                                   #          #         #        #                   
Warning: Transient problem: timeout Will retry in 1 seconds. 3 retries left.

解决方案:纯网络原因,重新下载就好了啦

结果如下图:

4.3 RGB-yolov8m(train3)

yolo detect train data=ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8m.yaml pretrained=ultralytics/yolov8m.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

4.4 RGB-yolov8l(train4)

yolo detect train data=ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8l.yaml pretrained=ultralytics/yolov8l.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

4.5 RGB-yolov8x(train5)

yolo detect train data=ultralytics/datasets/mmship/data/RGB/MMship.yaml model=yolov8x.yaml pretrained=ultralytics/yolov8x.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

4.6 NIR-yolov8n(train6)

yolo detect train data=ultralytics/datasets/mmship/data/NIR/MMship.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

4.7 NIR-yolov8m(train7)

yolo detect train data=ultralytics/datasets/mmship/data/NIR/MMship.yaml model=yolov8m.yaml pretrained=ultralytics/yolov8m.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

4.8 NIR-yolov8l(train8)

yolo detect train data=ultralytics/datasets/mmship/data/NIR/MMship.yaml model=yolov8l.yaml pretrained=ultralytics/yolov8l.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

4.9 NIR-yolov8x(train9)

yolo detect train data=ultralytics/datasets/mmship/data/NIR/MMship.yaml model=yolov8x.yaml pretrained=ultralytics/yolov8x.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

4.10 NIR-yolov8s(train10)

yolo detect train data=ultralytics/datasets/mmship/data/NIR/MMship.yaml model=yolov8s.yaml pretrained=ultralytics/yolov8s.pt epochs=12 batch=4 lr0=0.001 resume=True device=0 augment=True weight_decay=0.05

四、验证(val)

进行模型的验证,这里的models为训练的最好的那一组权重

yolo detect val data = ultralytics/datasets/mmship/data/RGB/MMship.yaml model=runs/detect/train16/weights/best.pt batch=4

五、预测结果(predict)

随便找一张图片进行预测,可以看到标注出来了所属类别、位置和概率值

yolo predict model=runs/detect/train16/weights/best.pt source=ultralytics/datasets/mmship/data/RGB/images/0001032.jpg

六、数据处理和分析

文件里面jpg文件都是些可视化展示

png文件包含数据集分析和训练过程的指标,都是yolo自动生成的

主要看两个results文件,指标是AP和mAP

参数配置是yaml文件,训练好的模型参数文件是pt

yolo有很多可配置的参数,具体可以参考官方

https://docs.ultralytics.com/tasks/detect/#trainicon-default.png?t=N7T8https://docs.ultralytics.com/tasks/detect/#train后续会更新对上述实验结果的数据处理,会新发一篇完整的笔记并将link放这~可以关注一下

 

七、总结

1. 大多数情况下gpt/poe对于代码报错的解释,给出的解释都没问题,但是轻易不要相信他提出的任何解决方案,基本都是没用的。

去github直接搜你的报错,然后看有回复的贴子

或者去goole直接搜报错,看最新的有回复的帖子

或者来CSDN(但大多数不靠谱,特别是时间久远的,版本都不对应)

2. 路径啊 路径啊 路径啊 重要的事情说三遍 时刻关注路径!!无论是安装的时候,还是运行的时候,最先关注的都应该是路径是否正确!

3.各种内嵌类型的报错,或者很难搜索到的报错,都极有可能是版本问题造成的

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

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

相关文章

Flutter Dio网络请求报错FormatException: Unexpected character

最近开发Flutter项目,网络请求采用的是Dio框架,在发起网络请求的时候报错: 网络请求返回的数据为: var returnCitySN {\"cip\": \"127.0.0.1\", \"cid\": \"00\", \"cname\"…

浅谈 JVM 的内存划分、类加载、垃圾回收机制

文章目录 一、JVM内存划分1.1、JVM为什么要进行内存划分? 二、JVM类加载2.1、什么是类加载?2.2、类加载大体过程2.3、何时触发类加载?2.4、双亲委派模型[!面试高频问题]2.4.1、类加载器2.4.1、什么是双亲委派模型? 三、JVM 垃圾回…

Flink SQL 的工作机制

前言 Flink SQL 引擎的工作流总结如图所示。 从图中可以看出,一段查询 SQL / 使用TableAPI 编写的程序(以下简称 TableAPI 代码)从输入到编译为可执行的 JobGraph 主要经历如下几个阶段: 将 SQL文本 / TableAPI 代码转化为逻辑执…

书生大模型实战营--L1关卡-OpenCompass 评测 InternLM-1.8B 实践

一、使用 OpenCompass 评测 internlm2-chat-1.8b 模型在 MMLU 数据集上的性能 1、使用lmdeploy部署 internlm2-chat-1.8b模型 2、根据OpenCompass官网教程安装并下载数据集 opencompass/README_zh-CN.md at main open-compass/opencompass GitHub 注意: pyhton…

【Java】this关键字、构造方法、标准javabean类(009)

目录 ♦️构造方法 🎃无参数构造方法(空参构造) 🎃有参数构造方法 ♦️this关键字 🎃就近原则 🎃使用this关键字调用本类中的属性 ​编辑 🎃使用this关键字调用成员方法 ​编辑 &#x…

Collention集合基础知识

Array 数组是一种连续的内存空间存储相同数据类型数据的线性数据结构 数组获取其他元素的地址值 寻址公式 a[i] baseaddress i*datatypesize 为什么数组索引从0开始 从1开始不行吗 从0开始寻址公式 a[i] baseaddress i*datatypesize 从1开始寻址公式 a[i] baseadd…

【计算机网络】无线网络和移动网络(第9章)大纲(共70+页)

最后只复习了1.5天,应用层简单过了一遍。 本来是mindmap的,但是太大了只能导出成提纲了,凑合看吧orz。 如果你找我要源文件,最好是在2024年,不然我可能就找不到了()。

基于STC8H系列单片机的中断系统

基于STC8H系列单片机的中断系统 STC8H4K64TL单片机介绍STC8H4K64TL单片机管脚图(48个引脚)STC8H4K64TL单片机串口仿真与串口通信STC8H4K64TL单片机管脚图(32个引脚)STC8H4K64TL单片机管脚图(20个引脚)STC8H系列单片机管脚说明STC8H系列单片机I/O口STC8H系列单片机I/O口相…

【C++】:红黑树的应用 --- 封装map和set

点击跳转至文章:【C】:红黑树深度剖析 — 手撕红黑树! 目录 前言一,红黑树的改造1. 红黑树的主体框架2. 对红黑树节点结构的改造3. 红黑树的迭代器3.1 迭代器类3.2 Begin() 和 End() 四,红黑树相关接口的改造4.1 Find…

centos stream 9安装 Kubernetes v1.30 集群

1、版本说明: 系统版本:centos stream 9 Kubernetes版本:最新版(v1.30) docker版本:27.1.1 节点主机名ip主节点k8s-master172.31.0.10节点1k8s-node1172.31.0.11节点2k8s-node2172.31.0.12 2、首先,使用Vagrant和Virt…

【2024年国际高等学校数学建模竞赛IMMCHE】问题 B:太空移民计划和战略 问题分析及数学模型及求解代码

【2024年国际高等学校数学建模竞赛IMMCHE】问题 B:太空移民计划和战略 问题分析及数学模型及求解代码 Problem B: Space Migration Program and Strategy 1 题目 我们的未来有两种可能:第一,我们将留在地球上,直到完全灭绝&…

Hive3:Hive初体验

1、创建表 CREATE TABLE test(id INT, name STRING, gender STRING);2、新增数据 INSERT INTO test VALUES(1, 王力红, 男); INSERT INTO test VALUES(2, 钉钉盯, 女); INSERT INTO test VALUES(3, 咔咔咔, 女);3、查询数据 简单查询 select * from test;带聚合函数的查询 …

Halcon 引擎方式调试

1.C# 端添加代码 启动调试模式 public HDevEngine MyEngine new HDevEngine(); // halcon引擎;// 启动调试服务 MyEngine.StartDebugServer();2.Halcon程序添加到进程 打开Halcon程序 【执行】>【附加到进程】 点击【确定】 3.C# 程序执行到相关位置 C# 程序执行调用…

vector深度剖析及模拟实现

目录 前言vector核心框架模拟实现1. 前期准备2. 构造和销毁补充: 隐式类型转换和多参数构造的区别 3. 迭代器相关4. 容器相关补充: memcpy拷贝问题 5. 元素访问6. vector的修改测试代码 总结 前言 本文重点模拟实现vector的核心接口, 帮助我们更好的理解底层逻辑, 以及对vecto…

科学又省力 宠物浮毛怎么去掉便捷高效?除毛秘籍养宠空气净化器

上次和朋友逛完街去她家,她家的猫哈基米一开门就飞奔过来,朋友直接抱起它狂亲。结果,猫毛和汗水粘得到处都是,手臂上、脸上都是,看得我这鼻炎星人直起鸡皮疙瘩。很多养宠物的朋友都说,天天给猫狗梳毛&#…

Android Studio导入源码

在有源码并且编译环境可用的情况下: 1.生成导入AS所需的配置文件 在源码的根目录执行以下命令: source build/ensetup.sh lunch 要编译的项目 make idegen //这一步会生成out/host/linux-x86/framework/idegen.jar development/tools/idegen/idegen.sh…

利用OSMnx求路网最短路径并可视化(二)

书接上回,为了增加多路径的可视化效果和坐标匹配最近点来实现最短路可视化,我们使用图形化工具matplotlib结合OSMnx的绘图功能来展示整个路网图,并特别高亮显示计算出的最短路径。 多起终点最短路路径并计算距离和时间 完整代码#运行环境 P…

《昇思25天学习打卡营第24天|基于MindSpore通过GPT实现情感分类》

基于MindSpore通过GPT实现情感分类 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mind…

自动化测试 pytest 中 scope 限制 fixture使用范围!

导读 fixture 是 pytest 中一个非常重要的模块,可以让代码更加简洁。 fixture 的 autouse 为 True 可以自动化加载 fixture。 如果不想每条用例执行前都运行初始化方法(可能多个fixture)怎么办?可不可以只运行一次初始化方法? 答&#xf…

C语言进阶 11.结构体

C语言进阶 11.结构体 文章目录 C语言进阶 11.结构体11.1. 枚举11.2. 结构类型11.3. 结构与函数11.4. 结构中的结构11.5. 类型定义11.6. 联合11.7. PAT11-0. 平面向量加法(10)11-1. 通讯录的录入与显示(10) 11.1. 枚举 常量符号化: 用符号而不是具体的数字表示程序中的数字 cons…