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

news2024/11/16 7:23:00

目录

一、安装环境(配置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://www.coloradmin.cn/o/1964168.html

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

相关文章

贪心问题集

常见问题分类&#xff1a; 1&#xff09;区间问题 2&#xff09;Huffman 3&#xff09;排序不等式 4&#xff09;绝对值不等式 5&#xff09;推公式 一、区间问题 板子&#xff1a; ①区间选点问题 #include <iostream> #include <algorithm> using namespace std;…

【算法 01】快速排序算法与分治思想

深入理解快速排序与分治思想 在算法的世界里&#xff0c;快速排序以其高效的性能著称&#xff0c;它巧妙地运用了分治策略&#xff08;Divide and Conquer&#xff09;&#xff0c;将复杂的排序问题逐步分解为更小的子问题&#xff0c;直至问题变得足够简单&#xff0c;从而轻…

永劫无间:游戏模式操作,云手机游戏辅助教程!

在《永劫无间》中&#xff0c;快速比赛模式和无间模式是提升实力和展示技巧的重要途径。以下是详细的攻略建议&#xff0c;帮助玩家在游戏中取得更好的成绩。 快速比赛模式 快速比赛模式与排位赛的玩法内容一致&#xff0c;但对局结果不会影响你的段位积分和英雄积分&#xff…

昇思 25 天学习打卡营第 25 天 | MindSpore Diffusion 扩散模型

1. 背景&#xff1a; 使用 MindSpore 学习神经网络&#xff0c;打卡第 25 天&#xff1b;主要内容也依据 mindspore 的学习记录。 2. Diffusion 介绍&#xff1a; Diffusion也是从纯噪声开始通过一个神经网络学习逐步去噪&#xff0c;最终得到一个实际图像。 具体的 Diffusi…

二进制部署k8s集群之CoreDNS部署及多master节点负载均衡以及高可用(下)

目录 1.部署 CoreDNS 2.在master01节点基础上&#xff0c;完成master02节点部署 3.部署nginx做负载均衡器 4.部署keepalived做高可用 1.部署 CoreDNS CoreDNS&#xff1a;CoreDNS 是 Kubernetes 的默认 DNS 实现。可以为 K8S 集群内的 Pod 提供 DNS 服务。 使用 CoreDNS 可…

【C++BFS】1162. 地图分析

本文涉及知识点 CBFS算法 LeetCode1162. 地图分析 你现在手里有一份大小为 n x n 的 网格 grid&#xff0c;上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋&#xff0c;1 代表陆地。 请你找出一个海洋单元格&#xff0c;这个海洋单元格到离它最近的陆地单元格的距…

67.利用FreeLibrary函数实现无痕注入的核心代码

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;66.FreeLibrary隐藏模块 以 65.破坏特征码防止内存定位查杀 它的代码为基础进行修改 效…

前端实现文本超出指定行数显示”展开”和”收起”效果

目录 效果演示步骤一&#xff1a;实现整体框架步骤二&#xff1a;实现样式步骤三&#xff1a;js实现元素控制完整代码 效果演示 本文方法是利用js原生进行实现的&#xff0c;可根据相关vue或react语法进行相关的改写&#xff0c;并实现效果 步骤一&#xff1a;实现整体框架 <…

今天分享分享缓冲器小故事

在一个繁华都市的角落&#xff0c;有一家小小的修理铺。铺子里堆满了各种老旧的机械零件和工具&#xff0c;而铺子的主人是一位名叫老陈的工匠。 老陈手艺精湛&#xff0c;尤其擅长修理那些复杂而精密的机械。但他的铺子生意却一直不温不火&#xff0c;因为在这个快节奏的时代…

⌈ 传知代码 ⌋ 使用稀疏查询进行3D目标检测

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

Linux基础知识之Shell命令行及终端中的快捷键

1.察看历史命令快捷键 按键 操作 ctrl p 返回上一次输入命令字符 ctrl n 返回下一次输入命令字符 ctrl r 输入单词甚至词组搜索匹配历史命令 alt p 输入字符查找与字符相接近的历史命令 alt . 向之前执行的命令的最后一个参数轮循, 并将之添加到当前光标之后…

WPF数据绑定对象Binding中的辅助属性

以下案例使用的统一的数据源&#xff1a; public class Data{public string Value { get; set; } "123";public int IntValue { get; set; } 100;public float FloatValue { get; set; } 0.114f;public DateTime DateTimeValue { get; set; } DateTime.Now;publi…

《品牌与观察》深度剖析:格行如何成为随身WiFi行业标杆?如何成为排名第一名随身WiFi?央视推荐的随身WiFi!官方认证的随身WiFi!

在随身WiFi行业乱象频发的背景下&#xff0c;格行以一股清流之姿&#xff0c;毅然决然地选择了一条“难而正确”的道路——大力发展线下门店&#xff0c;发展续航技术以品质和服务重塑市场格局。格行现已宣布其线下合作门店已突破万家&#xff0c;并且续航技术已经遥遥领先于其…

计算机毕业设计选题推荐-医疗废物管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

思科认证有哪些?有什么区别?选哪个比较好?考试多少钱?

思科认证体系庞大且全面&#xff0c;涵盖了从基础到高级的多个方向和等级。那么&#xff0c;思科认证究竟有哪些?有什么区别?选哪个比较好?考试多少钱&#xff1f;下面将为您一一揭晓。 思科认证有哪些? 思科认证体系丰富多样&#xff0c;涵盖了从基础到高级的多个层次和…

AI助力工艺|利用机器学习实现泡沫浮选工艺优化

浮选是一种矿物处理过程&#xff0c;它利用矿物颗粒的自然疏水性或通过添加化学试剂使其变得疏水&#xff0c;从而使它们能够附着在空气泡上&#xff0c;从矿浆中分离出来。在处理铁矿石时&#xff0c;浮选过程特别重要&#xff0c;因为它可以帮助减少二氧化硅&#xff08;SiO2…

【数据结构】——堆的实现与算法

目录 一、堆的实现 1.1堆数据的插入 1.2堆数据的删除 二、建堆算法 2.1向上调整建堆 2.2向下调整建堆 三、堆的应用 3.1堆排序 3.2Top—K问题 一、堆的实现 1.1堆数据的插入 插入一个数据后不再是小堆需要将新数据调整到合适的位置&#xff0c;所以堆的插入就是在数组…

永结无间Ⅷ--释放机器学习“百万专家组合”的力量

介绍 随着人们对特定领域模型和小型语言模型的兴趣日益浓厚&#xff0c;对于能够利用专门数据有效处理特定领域中大量专门任务请求的模型的需求比以往任何时候都更加迫切。 传统模型往往难以实现可扩展性和适应性&#xff0c;因此研究人员开始探索新的创新方法。DeepMind的“…

【课程系列10】某乎AI大模型全栈工程师-第5期

网盘链接 链接&#xff1a;https://pan.baidu.com/s/1ZC-fOC_QQjNM6wyVjQcYOg --来自百度网盘超级会员v6的分享 课程目标 ✅学大模型来干什么&#xff1f;&#xff1a; &#x1f449;想提升薪资&#xff0c;提升效率 &#x1f449;想私有化部署垂直领域大模型 &#x1f449…