YOLOV7训练自己的数据集

第一步:

文件格式照代码官网按如下分布,建议记录文件路径名字的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官方数据集

YOLOv7训练自己的数据集_氯化氢323的博客-CSDN博客_yolov 训练

YoloV7:训练自己得数据集详细教程_曲末寒的博客-CSDN博客_yolo 数据集

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值