(win10)yolov5训练自己的数据集
目录
环境:
python包的配置
打开pycharm的终端
运行
1 | pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple |
文件夹路径
在data文件中创建一个VOCData文件
进入VOCData文件夹里面创建一个Annotations文件夹用于放置你标记的数据集的数据xml或者是txt,再在VOCData文件夹里面创建一个images的文件夹里面用于放你的训练的图片
先创建好,有没有还没有关系。
标注数据
接下来就是标注数据集了
打开上面的标注数据的工具(原来用于dnf挂机的脚本工具,用了发现他的自动截图功能不错,而且标记出来的数据labels可以直接用,不用xml转txt了)
获取电脑/视频里的图片
打开自动截图
要设置区域可以按照上面的文字来设置截图区域
然后开启全屏,之后直接ctrl+q键开始截图就行了(默认时间是3秒自动截图一次)
默认是png,我用的jpg,为了防止后面代码报错,最好也改成这个吧
截图文件在软件目录下的的"截图"文件夹
开始标记数据
点击"打开图库"
把刚刚 截图的图片给复制进去
然后重启一次软件就可以开始标记了
需要注意的是最后要把没有任何标记的图片删除,以防后面执行代码时报错
划分划分训练集、验证集、测试集
在data/VOCData文件目录下面创建一个py文件(名字随意,认得出来就行)
1 | # coding:utf-8 |
然后在data/VOCData/ImageSets/Main目录下可以看到三个文件,就是划分的数据集合
把相应的文件路径存入txt文件中,xml转为txt
因为是用刚刚的应用程序来标注的图片文件所以就不需要把xml转为yolo格式的文件了
在VOCData目录下创建一个py文件(名称随意)
1 | import os |
这样就会在VOCData下出现这样一个文件夹
打开
里面有各个文件的路径(因为没有划分test文件所以打开test.txt是空的)
最后需要把data/VOCData/Annotations的文件移到文件夹labels文件夹中(没有文件夹就自己创建)
创建配置文件
在 yolov5 目录下的 data 文件夹下 新建一个 myvoc_1.yaml文件(可以自定义命名),用记事本打开。
内容是:
1 | train: D:/yolov5/data/VOCData/dataSet_path/train.txt |
聚类获得先验框
因为什么提供的yolo版本很新所以一定在yolov5/utils下有 autoanchor.py文件(不用运行)
在model的文件夹中选择一个模型配置文件我选择的是yolov5s.yaml
官方的表格:
打开yolov5s.yaml
把nc的值改成标注的种类个数就行了
开始训练
有很多的数据
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:单类别的训练集
运行文件:
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 |
用gpu训练
查看cuda版本
首先看看自己的gpu型号(a卡跑不了ai)
输入
1 | nvidia-smi |
选择高于他的版本的pytorch
安装pytorch
打开pytorch官网
把这个117改成你要安装的版本11.6就改成116
训练
最后开始训练
其实就是把–device的值改一下
打开任务管理器——性能
0号gpu就写–device 0
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 |
问题
如果出现 (页面太小,无法完成操作)的相关问题
降低线程 --workes (默认是8) 。最后再试试调小 --batch-size,降低 --epoch
然后把刚刚运行的命令改一下参数我把worker改成1才可以跑