YOLOv8训练自定义数据集(超详细)

news2024/9/23 13:16:55

借鉴 https://blog.csdn.net/qq_40716944/article/details/128648001

一、准备训练环境

  1. 安装 requirements.txt

下载:https://raw.githubusercontent.com/ultralytics/ultralytics/main/requirements.txt

然后在你 目录下执行

pip install -r requirements.txt

它的 requirements 主要是以下 包,用下面代码检查下自己还缺哪些,补上就好。

pip show matplotlib         
pip show numpy              
pip show opencv-python      
pip show Pillow             
pip show PyYAML             
pip show requests           
pip show scipy              
pip show torch              
pip show torchvision        
pip show tqdm               
pip show tensorboard        
pip show pandas             
pip show seaborn            
pip show psutil 
pip show thop               
pip show certifi            

  1. 安装ultralytics

pip install ultralytics

二、 准备自己的数据集

dataSet
images
label
xml

先 把 用labelImage 标注 完的图片和xml文件 分别放到 images 和 xml 文件夹里,运行 split_train_val.py,切分好数据。再运行 voc2yolo.py ,把数据集格式转换成yolo_txt格式。

三、模型训练

1、下载预训练模型

在YOLOv8的GitHub开源网址上下载对应版本的模型

2、训练

接下来就可以开始训练模型了,命令如下:

yolo task=detect mode=train model=yolov8n.yaml data=mydata.yaml epochs=100 batch=16

以上参数解释如下:

task:选择任务类型,可选['detect', 'segment', 'classify', 'init']

mode: 选择是训练、验证还是预测的任务蕾西 可选['train', 'val', 'predict']

model: 选择yolov8不同的模型配置文件,可选yolov8s.yaml、yolov8m.yaml、yolov8l.yaml、yolov8x.yaml

data: 选择生成的数据集配置文件

epochs:指的就是训练过程中整个数据集将被迭代多少次,显卡不行你就调小点。

batch:一次看完多少张图片才进行权重更新,梯度下降的mini-batch,显卡不行你就调小点。

训练过程:

如果中途遇到 下载 Arial.ttf 文件的报错,是因为 训练时需要Arial.ttf字体,本地没有,但是下载网站有可能被 墙了,你只能下通过其他方法下载。

Downloading https://ultralytics.com/assets/Arial.ttf to C:\Users\Teddy\AppData\Roaming\Ultralytics\Arial.ttf...

解决方案

点击这个Arial.ttf字体链接进行下载,然后上传到yolov5项目的根目录即可。

或者 它 提示的 :

C:\Users\Teddy\AppData\Roaming\Ultralytics\

训练完了之后,它的结果会保存在:

ultralytics\ultralytics\models\v8\runs\detect\

如果想断点续训:

大部分网上的教程目前只有以下这种,

yolo task=detect mode=train model=yolov8n.yaml data=mydata.yaml epochs=10 batch=8

而没有如何断点续训的方法,当然可以参考 yolov5 的,我通过 查看 v8的 源代码,发现它命令的参数都在这个文件里。

.\ultralytics\ultralytics\yolo\cfg\default.yaml

注意里面有个参数 是 resume,将其设置为resume=True即可,

yolo task=detect mode=train model=yolov8n.yaml data=mydata.yaml epochs=3 batch=8  resume=True 

博主运行后,便是接着上一次训练完10个epoch继续训练

3、训练过程的可视化

在训练过程的可视化tensorboard tensorboard --logdir ./ 然后打开localhost:6006即可,效果如下:

备注:

训练的一些参数解释

# Train settings -------------------------------------------------------------------------------------------------------
model:  # 模型文件的路径,即yolov8n.pt, yolov8n.yaml  
data:  # 数据文件的路径,i.e. i.e. coco128.yaml
epochs: 100  # 训练的epoch数量
patience: 50  # 50个周期等待没有明显的改善,尽早停止训练
batch: 16  # number of images per batch (-1 for AutoBatch)
imgsz: 640  # #输入图像大小为整数或w,h
save: True  #保存 checkpoints 并预测结果
save_period: -1 # 每x个epoch保存一次检查点 (disabled if < 1)
cache: False  # True/ram, disk or False. 使用缓存进行数据加载
device:  # 要运行的设备,即cuda Device =0或Device =0,1,2,3或Device =cpu
workers: 8  # 用于数据加载的工作线程数(如果是DDP,则为每个RANK)
project:  # 项目名称
name:  # 实验名称
exist_ok: False  # 是否覆盖现有实验
pretrained: False  # whether to use a pretrained model
optimizer: SGD  # optimizer to use, choices=['SGD', 'Adam', 'AdamW', 'RMSProp']
verbose: True  # whether to print 详细 output
seed: 0  # 随机种子的重现性
deterministic: True  # 是否启用确定性模式
single_cls: False  # 将多类数据训练为单个类 
image_weights: False  # 使用加权图像选择进行训练
rect: False  # 如果模式为'train',则支持矩形训练;如果模式为'val',则支持矩形计算。
Mask_ratio: 4 #掩码下采样比(仅限段训练)
cos_lr: False  # 使用余弦学习速率调度器 
close_mosaic: 10  # 最后10个epoch 禁用 马赛克增强
resume: False  # 从上一个检查点开始恢复培训
min_memory: False  # 最小化内存占用损失函数,, choices=[False, True, <roll_out_thr>]
# Segmentation  #分割
overlap_mask: True  #掩码在训练过程中应该重叠(仅限训练段)
mask_ratio: 4  #  #掩码下采样比(仅限段训练) (segment train only)
# Classification
dropout: 0.0  # 使用Dropout正则化(仅分类 train)

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

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

相关文章

【字符串】leetcode28. 实现 strStr()(C/C++/Java/Python/Js)

leetcode28. 实现 strStr&#xff08;&#xff09; 1 题目2 KMP2.1 什么是KMP&#xff1f;2.2 KMP有什么用&#xff1f;2.3 什么是前缀表&#xff1f;2.4 最长公共前后缀2.5 为什么一定要用前缀表&#xff1f;2.6 如何计算前缀表2.7 前缀表与next数组2.8 使用next数组来匹配2.9…

2022 年度_职业项目总结_Java技术点归纳

Java技术点归纳目录概述需求&#xff1a;设计思路实现思路分析1.Structs 元工程改造2.个贷子系统开发3.架构的迭代开发&#xff0c;升级&#xff0c;部署&#xff0c;参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,fu…

学编程的 4 大阶段,你到哪了?

大家好&#xff0c;我是阅黑马学生无数的播妞……通过观察黑马学生的学习状态&#xff0c;播妞总结了他们来黑马后的四个学习状态&#xff0c;可以说&#xff0c;只要跨过这四个阶段&#xff0c;走向辉煌的编程人生就是必然的事情。阶段一&#xff1a;一窍不通这个阶段的学生&a…

2023初级会计详细学习计划打卡表!自律逆袭,一次上岸!

2023年初级会计职称考试报名时间&#xff1a;2月7日-28日考试时间&#xff1a;5月13日—17日给大家整理了《经济法基础》和《初级会计实务》两科超实用的学习打卡表重要程度、难易度、易错点、要求掌握内容、章节估分等都全部总结在一起&#xff0c;一目了然&#xff01;为什么…

rk3288-android8-IR-mouse

IR问题: mouse按键使用不了 然后排查: 1.排查上报 ir_key6{ rockchip,usercode <0xbf00>;rockchip,key_table <0xff KEY_POWER>,<0xfe KEY_MUTE>, <0xfd KEY_1>, <0xfc KEY_2>, <0xfb KEY_3>, <0xfa KEY_4>, <0xf9 KEY_5>…

JavaEE进阶第六课:SpringBoot ⽇志⽂件

上篇文章介绍了SpringBoot配置文件&#xff0c;这篇文章我们将会介绍SpringBoot ⽇志⽂件 荔枝1.日志有什么用2.自定义日志输出2.1获取程序日志对象2.2使用相关方法输出日志2.3日志级别2.3.1日志级别的作用2.3.2日志级别如何设置2.4日志格式3.持久化日志4.更简单的日志输出4.1使…

【移动端表格组件】uniapp简单实现H5,小程序,APP多端兼容表格功能,复制即用,简单易懂【详细注释版本】

前言&#xff1a; 由于最近需要做移动端的项目 有个pc端的后台系统里面需要移一部分页面过来 而里面就有很多的表格&#xff0c;我就开始惯例网上先找前人栽的树&#xff0c;我好乘凉 然后找了一圈发现&#xff0c;不管是主流的移动端ui库或者网上自己写的帖子&#xff0c;或者…

224. 基本计算器

224. 基本计算器给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。注意:不允许使用任何将字符串作为数学表达式计算的内置函数&#xff0c;比如 eval() 。 示例 1&#xff1a;输入&#xff1a;s "1 1"输出&#xff1a;2示例 2&#…

【Pygame实战】变异狗大战:据说是最近还不错的小游戏,这一个个玩到表情崩坏,点开即玩,赶紧来~(Python代码搞笑版本)

前言 只有你想不到&#xff0c;没有我找不到写不了的好游戏&#xff01; 哈喽。我是你们的栗子同学啦~ 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 今天小编去了我朋友家里玩儿&#xff0c…

ExSwin-Unet 论文研读

ExSwin-Unet摘要1 引言2 方法2.1 基于窗口的注意力块2.2 外部注意力块2.3 不平衡的 Unet 架构2.4 自适应加权调整2.5 双重损失函数3 实验结果3.1 数据集3.2 实现细节3.3 与 SOTA 方法的比较3.4 消融研究4 讨论和限制5 结论数据集来源&#xff1a; https://feta.grand-challenge…

图扑 Web SCADA 智慧制硅厂,打造新时代制硅工业

前言 我国目前是全球最大的工业硅生产国、消费国和贸易国&#xff0c;且未来该产业的主要增量也将来源于我国。绿色低碳发展已成为全球大趋势和国际社会的共识&#xff0c;随着我国“双碳”目标的推进&#xff0c;光伏产业链快速发展&#xff0c;在光伏装机需求的带动下&#…

武汉凯迪正大KD305系列智能数字绝缘电阻测试仪

一、概述 KD305系列智能数字绝缘电阻测试仪采用嵌入式工业单片机实时操作系统&#xff0c;数字模拟指针与数字段码显示结合&#xff0c;该系列表具有多种电压输出等级&#xff08;500V、1000V、2500V、5000V、10000V&#xff09;、容量大、抗干扰强、模拟指针与数字同步显示、交…

数据结构考研习题精选

&#xff11; A假设比较&#xff54;次&#xff0c;由于换或不换&#xff0c;则必然有&#xff12;&#xff3e;&#xff54;种可能。又设有&#xff4e;个关键字&#xff0c;&#xff4e;&#xff01;排列组合&#xff0c;则必然有&#xff12;&#xff3e;&#xff54;&…

vue-element-admin执行npm install时的一些报错。

文章目录1. 首先在gitee上拉取的中文版2. 执行npm install的一些报错3. 参考文章1. 首先在gitee上拉取的中文版 git clone -b i18n https://gitee.com/panjiachen/vue-element-admin.git 2. 执行npm install的一些报错 npm install Please make sure you have the correct acc…

跨境电商平台,亚马逊、eBay、Shopee……哪个好?

2023一开始&#xff0c;随着各项利好政策的出台&#xff0c;中国跨境电商正在重新步入最好的时代。一些跨境电商企业纷纷开启上市热潮&#xff0c;身边许多人也跃跃欲试想转行跨境电商。专业数据显示&#xff0c;接下来将会有更多的跨境企业走向资本化的道路&#xff0c;借助资…

设备运行状况不能远程手机查看。难道就妥协吗?为何不试试这个办法

一、背景 随着国家经济结构逐步调整&#xff0c;纺织行业自动化、智能化水平逐步提高&#xff0c;业内竞争程度也将加大&#xff1b;整个市场变化快&#xff0c;并呈现出智能化、通用化、网络化、复杂化的新发展趋势。客户订单小批量、个性化、快速交货的特点越来越明显&#…

阅读(1)-----六级

目录 1.单词不懂怎么办&#xff1f; 1.1构词法 1.2上下文 2.句子不通怎么办&#xff1f; 3.时间不够怎么办 &#xff1f; 4.题型 4.1细节题 问文章的细节 4.2主旨题(文章主旨和段落主旨) 4.3语义题 4.4观点题 &#xff08;一共三种&#xff0c;支持、反对和中立 &…

从0开始学python -47

Python CGI编程 -2 GET和POST方法 浏览器客户端通过两种方法向服务器传递信息&#xff0c;这两种方法就是 GET 方法和 POST 方法。 使用GET方法传输数据 GET方法发送编码后的用户信息到服务端&#xff0c;数据信息包含在请求页面的URL上&#xff0c;以"?"号分割…

【面试题】社招中级前端笔试面试题总结

大厂面试题分享 面试题库后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库typeof null 的结果是什么&#xff0c;为什么&#xff1f;typeof null 的结果是Object。在 JavaScript 第一个版本中&#xff0c;所有值都存储在…

Nginx的反向代理配置笔记

1、反向代理的概念&#xff1a; 对一个大型网站来说&#xff0c;随着网站的访问量的快速增长&#xff0c;单台服务器已经无法承担大量用户的并发访问&#xff0c;必须采用多态服务器协同工作&#xff0c;以提高计算机系统的处理能力。通过Nginx提供的反向代理和负载均衡功能&a…