(win10)yolov5训练自己的数据集

目录

环境:

python包的配置

文件夹路径

标注数据

获取电脑/视频里的图片

开始标记数据

划分划分训练集、验证集、测试集

 把相应的文件路径存入txt文件中,xml转为txt

创建配置文件

聚类获得先验框

 开始训练

 运行文件:

用gpu训练

查看cuda版本

​编辑

安装pytorch

训练

问题

如果出现 (页面太小,无法完成操作)的相关问题

 参考文章:


1|0环境:

  • windows 10
  • yolov5的源文件(链接yolov5
  • 标注工具(链接标注

2|0python包的配置

打开pycharm的终端

运行

pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple

3|0文件夹路径

在data文件中创建一个VOCData文件

进入VOCData文件夹里面创建一个Annotations文件夹用于放置你标记的数据集的数据xml或者是txt,再在VOCData文件夹里面创建一个images的文件夹里面用于放你的训练的图片

先创建好,有没有还没有关系。

4|0标注数据

接下来就是标注数据集了

打开上面的标注数据的工具(原来用于dnf挂机的脚本工具,用了发现他的自动截图功能不错,而且标记出来的数据labels可以直接用,不用xml转txt了)

4|1获取电脑/视频里的图片

打开自动截图

要设置区域可以按照上面的文字来设置截图区域

 然后开启全屏,之后直接ctrl+q键开始截图就行了(默认时间是3秒自动截图一次)

默认是png,我用的jpg,为了防止后面代码报错,最好也改成这个吧

截图文件在软件目录下的的“截图”文件夹

4|2开始标记数据

点击“打开图库”

把刚刚 截图的图片给复制进去

然后重启一次软件就可以开始标记了

需要注意的是最后要把没有任何标记的图片删除,以防后面执行代码时报错

5|0划分划分训练集、验证集、测试集

在data/VOCData文件目录下面创建一个py文件(名字随意,认得出来就行)

# coding:utf-8 import os import random import argparse parser = argparse.ArgumentParser() #xml文件的地址,根据自己的数据进行修改 xml一般存放在Annotations下 parser.add_argument('--xml_path', default='Annotations', type=str, help='input xml label path') #数据集的划分,地址选择自己数据下的ImageSets/Main parser.add_argument('--txt_path', default='ImageSets/Main', type=str, help='output txt label path') opt = parser.parse_args() trainval_percent = 1.0 # 训练集和验证集所占比例。 这里没有划分测试集 train_percent = 0.9 # 训练集所占比例,可自己进行调整 xmlfilepath = opt.xml_path txtsavepath = opt.txt_path total_xml = os.listdir(xmlfilepath) if not os.path.exists(txtsavepath): os.makedirs(txtsavepath) num = len(total_xml) list_index = range(num) tv = int(num * trainval_percent) tr = int(tv * train_percent) trainval = random.sample(list_index, tv) train = random.sample(trainval, tr) file_trainval = open(txtsavepath + '/trainval.txt', 'w') file_test = open(txtsavepath + '/test.txt', 'w') file_train = open(txtsavepath + '/train.txt', 'w') file_val = open(txtsavepath + '/val.txt', 'w') for i in list_index: name = total_xml[i][:-4] + '\n' if i in trainval: file_trainval.write(name) if i in train: file_train.write(name) else: file_val.write(name) else: file_test.write(name) file_trainval.close() file_train.close() file_val.close() file_test.close()

然后在data/VOCData/ImageSets/Main目录下可以看到三个文件,就是划分的数据集合

6|0 把相应的文件路径存入txt文件中,xml转为txt

因为是用刚刚的应用程序来标注的图片文件所以就不需要把xml转为yolo格式的文件了

在VOCData目录下创建一个py文件(名称随意)

import os from os import getcwd abs_path = os.getcwd() print(abs_path) wd = getcwd() for image_set in sets: image_ids = open('D:/yolov5/data/VOCData/ImageSets/Main/%s.txt' % (image_set)).read().strip().split() if not os.path.exists('D:/yolov5/data/VOCData/dataSet_path/'): os.makedirs('D:/yolov5/data/VOCData/dataSet_path/') list_file = open('dataSet_path/%s.txt' % (image_set), 'w') # 这行路径不需更改,这是相对路径 for image_id in image_ids: list_file.write('D:/yolov5/data/VOCData/images/%s.jpg\n' % (image_id)) convert_annotation(image_id) list_file.close()

这样就会在VOCData下出现这样一个文件夹

打开

里面有各个文件的路径(因为没有划分test文件所以打开test.txt是空的) 

最后需要把data/VOCData/Annotations的文件移到文件夹labels文件夹中(没有文件夹就自己创建)

7|0创建配置文件

在 yolov5 目录下的 data 文件夹下 新建一个 myvoc_1.yaml文件(可以自定义命名),用记事本打开。

内容是:

train: D:/yolov5/data/VOCData/dataSet_path/train.txt val: D:/yolov5/data/VOCData/dataSet_path/val.txt #文件的绝对路径(要改,注意是斜杠不是反斜杠) #如果划分了test数据也需要加上去 # number of classes nc: 2 #类别个数(要改) # class names names: ["light", "post"] #类别(要改)

8|0聚类获得先验框

9|0

因为什么提供的yolo版本很新所以一定在yolov5/utils下有 autoanchor.py文件(不用运行)

在model的文件夹中选择一个模型配置文件我选择的是yolov5s.yaml

官方的表格:

打开yolov5s.yaml

把nc的值改成标注的种类个数就行了

10|0 开始训练

打开根目录的train.py

有很多的数据

weights:权重文件路径

cfg:存储模型结构的配置文件

data:存储训练、测试数据的文件

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

batch-size:训练完多少张图片才进行权重更新,显卡不行就调小点。

img-size:输入图片宽高,显卡不行就调小点。

device:cuda device, i.e. 0 or 0,1,2,3 or cpu。选择使用GPU还是CPU

workers:线程数。默认是8。

noautoanchor:不自动检验更新anchors
rect:进行矩形训练

resume:恢复最近保存的模型开始训练

nosave:仅保存最终checkpoint

notest:仅测试最后的epoch

evolve:进化超参数

bucket:gsutil bucket

cache-images:缓存图像以加快训练速度

name: 重命名results.txt to results_name.txt

adam:使用adam优化

multi-scale:多尺度训练,img-size +/- 50%

single-cls:单类别的训练集

10|1 运行文件:

python train.py --weights weights/yolov5s.pt --cfg models/yolov5s.yaml --data data/myvoc.yaml --epoch 200 --batch-size 8 --img 640 --device cpu

11|0用gpu训练

11|1查看cuda版本

首先看看自己的gpu型号(a卡跑不了ai)

输入

nvidia-smi

12|0

选择高于他的版本的pytorch

12|1安装pytorch

 打开pytorch官网

PyTorch

把这个117改成你要安装的版本11.6就改成116

12|2训练

最后开始训练

其实就是把--device的值改一下

打开任务管理器——性能

0号gpu就写--device 0

python train.py --weights weights/yolov5s.pt --cfg models/yolov5s.yaml --data data/myvoc.yaml --epoch 200 --batch-size 8 --img 640 --device cpu

13|0问题

13|1如果出现 (页面太小,无法完成操作)的相关问题

打开train.py

降低线程 --workes (默认是8) 。最后再试试调小 --batch-size,降低 --epoch

然后把刚刚运行的命令改一下参数我把worker改成1才可以跑

14|0 参考文章:

文章链接


__EOF__

本文作者xxxx
本文链接https://www.cnblogs.com/mumuemhaha/p/17710206.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   木木em哈哈  阅读(227)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示