第一步:
文件格式照代码官网按如下分布,建议记录文件路径名字的txt文件(test_list.txt、train_list.txt)也放这个大文件下。划分的图片和标签数据集一定要按该目录形式存放,即images下为训练、测试、验证的图片,labels下为相对应的txt标签。存放后建议检查下数量是否一一对应。
第二步:
***_list.txt文件下保存的是images下对应图片的路径名,用在yaml文件中。
第三步:
修改/cfg/training/目录下所使用的预训练权重对应的yaml文件,这里使用的yolov7x,所以修改对应的yaml文件,只需改nc预测的数目即可。
第四步:
修改--weights、--cfg、--data为所需使用的文件或路径,给定--epochs和--batch-size。
就可以开始训练了,报错大概率是第一步文件不对或文件存放格式不对。
第一步用到的相关代码:
获取文件夹下文件和目录的路径名称并写入txt文件
import os
def listdir(path, list_name): # 传入存储的list
for file in os.listdir(path):
file_path = os.path.join(path, file)
if os.path.isdir(file_path):
listdir(file_path, list_name)
else:
list_name.append(file_path)
if __name__ == '__main__':
list_name = []
path = '/home/king/Projects/lwf/yolov7-main/apple/datasets/images/val/' # 文件夹路径
listdir(path, list_name)
# print(list_name)
with open('/home/king/Projects/lwf/yolov7-main/apple/datasets/val_list.txt', 'w') as f: # 要存入的txt
write = ''
for i in list_name:
write = write + str(i) + '\n'
f.write(write)
对数据集进行随机划分,训练验证:测试=9:1,并将划分后的路径写入对应txt文件下:
import os
import random
trainval_percent = 0.9
train_percent = 0.9
xmlfilepath = '/home/king/Projects/lwf/yolov7-main/apple/苹果数据集/txt'
txtsavepath = '/home/king/Projects/lwf/yolov7-main/apple/苹果数据集/JPEGImages'
total_xml = os.listdir(xmlfilepath)
total_img = os.listdir(txtsavepath)
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('/home/king/Projects/lwf/yolov7-main/apple/苹果数据集/trainval.txt', 'w')
ftest = open('/home/king/Projects/lwf/yolov7-main/apple/苹果数据集/test.txt', 'w')
ftrain = open('/home/king/Projects/lwf/yolov7-main/apple/苹果数据集/train.txt', 'w')
fval = open('/home/king/Projects/lwf/yolov7-main/apple/苹果数据集/val.txt', 'w')
for i in list:
name = txtsavepath + '/' + total_img[i] + '\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()
参考博文:
YOLOv7训练自己的数据集(超详细)_Mr Dinosaur的博客-CSDN博客_yolo官方数据集