一、步骤
1.打开路径
2.打开此路径新建文件夹datasets,其下文件夹及文件如下图
3.修改标签数量及标签名字
(关于peizhi.yaml修改)
(关于yolov8s.yaml修改)
4.运行splitDataset.py生成txt
#按比例划分数据集
import os
import random
trainval_percent = 0.9
train_percent = 0.9
xmlfilepath = "G:\\BUTTERFLY\\ultralytics-main\\ultralytics-main\\ultralytics\\models\\yolo\\detect\\datasets\\labels"
txtsavepath = "G:\\BUTTERFLY\\ultralytics-main\\ultralytics-main\\ultralytics\\models\\yolo\\detect\\datasets\\ImageSets"
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)
ftrainval = open('datasets/ImageSets/trainval.txt', 'w')
ftest = open('datasets/ImageSets/test.txt', 'w')
ftrain = open('datasets/ImageSets/train.txt', 'w')
fval = open('datasets/ImageSets/val.txt', 'w')
for i in list:
name = total_xml[i][:-4] + '\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
(生成txt如下图)
6.运行3次tools文件夹中name.py,生成test.txt,train.txt,val.txt(此处的3个txt即第3步中peizhi.yaml中指向的txt)
with open("F:\\yolov8\\ultralytics-main\\ultralytics\\models\\yolo\\detect\\datasets\\ImageSets\\train.txt", 'r') as input_file, \
open("F:\\yolov8\\ultralytics-main\\ultralytics\\models\\yolo\\detect\\datasets\\train.txt", 'w') as output_file:
for line in input_file:
line = line.strip() # 去除行尾的换行符
new_line ='datasets/images/'+ line + '.bmp\n' # 在行尾添加额外的内容
output_file.write(new_line) # 将修改后的行写入目标文件
7.在此路径双击输入cmd打开命令行界面
8.进入yolov8环境:conda activate yolov8
9.训练命令:yolo task=detect mode=train model=yolov8s.yaml data=datasets/peizhi.yaml epochs=50 batch=1#batch越大,训练速度越快,对电脑配置要求越高,一般设置batch=4或batch=8即可,可根据电脑酌情修改
10.预测:yolo task=detect mode=predict model=runs/detect/train13/weights/best.pt source=datasets/images device=0#记得修改model的位置
11.验证:yolo task=detect mode=val model=runs/detect/train14/weights/best.pt data=peizhi.yaml batch=1 workers=2#记得修改model的位置
二、训练注意事项
注意labels中是0还是其他数字,或是有多种标签
注意文件路径的盘符,末尾是否需要加\\,前面是否需要加r
注意图片文件格式,jpg/bmp