目标检测算法---将数据集为划分训练集和验证集

        在做深度学习目标检测模型训练的时候,首先是要获取数据集,然后再对数据集进行标注。然后再把标注完的数据集划分为训练集和验证集,这样更加方便模型的训练和测试。首先上划分数据集的代码。

import os, random, shutil


def moveimg(fileDir, tarDir):
    pathDir = os.listdir(fileDir)  # 取图片的原始路径
    filenumber = len(pathDir)
    rate = 0.1  # 自定义抽取图片的比例,比方说100张抽10张,那就是0.1
    picknumber = int(filenumber * rate)  # 按照rate比例从文件夹中取一定数量图片
    sample = random.sample(pathDir, picknumber)  # 随机选取picknumber数量的样本图片
    print(sample)
    for name in sample:
        shutil.move(fileDir + name, tarDir + "\\" + name)
    return

def movelabel(file_list, file_label_train, file_label_val):
    for i in file_list:
        if i.endswith('.jpg'):
            # filename = file_label_train + "\\" + i[:-4] + '.xml'  # 可以改成xml文件将’.txt‘改成'.xml'就可以了
            filename = file_label_train + "\\" + i[:-4] + '.txt'  # 可以改成xml文件将’.txt‘改成'.xml'就可以了
            if os.path.exists(filename):
                shutil.move(filename, file_label_val)
                print(i + "处理成功!")



if __name__ == '__main__':
    fileDir = r"C:\Users\86159\Desktop\hat\JPEGImages" + "\\"  # 源图片文件夹路径
    tarDir = r'C:\Users\86159\Desktop\hat\JPEGImages_val'  # 图片移动到新的文件夹路径
    moveimg(fileDir, tarDir)
    file_list = os.listdir(tarDir)
    file_label_train = r"C:\Users\86159\Desktop\hat\Annotations_yolo"  # 源图片标签路径
    file_label_val = r"C:\Users\86159\Desktop\hat\Annotations_val"  # 标签
      # 移动到新的文件路径
    movelabel(file_list, file_label_train, file_label_val)

        如上的代码的原理是将一个文件夹里面的图片按一定的比例(可以自己设定,修改第7行中的rate的值就可以了)抽取照片放入到一个新的文件夹里面(需要自己新建一个文件夹)。这样源文件夹就变成了训练集,新建的为验证集。然后代码会将抽取照片对应的标签文件放入到一个新建的文件夹中(该文件夹需要新建)。这样我们就有图片的训练集和验证集,还有其对应的标签文件。使用同样的代码还可以将数据集多划分一个测试集出来,这样方便测试用。

猜你喜欢

转载自blog.csdn.net/didiaopao/article/details/119927280