TT100k数据集重新划分数据集

这是下载的TT100k数据集(2021)文件夹的构成,train文件夹包含6105张图片,test文件夹包含3071张图片,other文件夹包含7641张图片。

 由于该数据集很多类别数量很少,样本不太平衡,需要重新划分数据集,只保留图片数超过100的类别,首先需要统计每个类别的数量,过滤掉一些图片重新划分数据集,划分后只有45类

做法可以参考http://TT100K数据集转换成coco格式,并重新划分

然后将coco格式的数据集转成yolo的txt格式,重新划分数据集,train6793,val1949,test996 ,总共9738张 。具体操作可以参考https://blog.csdn.net/qq_37346140/article/details/127122818?spm=1001.2014.3001.5502

 最后根据得到的txt文件将TT100K数据集的图片重新放到不同的文件夹(tarin\test\val)

import os
import shutil
def divide_TrainValTest(source, target):
    '''
    创建文件路径
    :param source: 源文件位置  即标注的yolo_txt文件的目录
    :param target: 目标文件位置  即你想放置图片的文件目录
    '''
    for i in ['train', 'val', 'test']:
        path = target + '/' + i
        if not os.path.exists(path):
            os.makedirs(path)

    # 遍历目录下的文件名,复制对应的图片到指定目录
    for root, dirs, files in os.walk(source):
        for file in files:
            file_name = os.path.splitext(file)[0]
            image_path = os.path.join(file_name + '.jpg')
            # print(files)
            if 'train' in source:
                if(os.path.exists('F:\sign_data/tt100k_2021/train/' + image_path)):
                    shutil.copyfile('F:\sign_data/tt100k_2021/train/'
                                    + image_path, target + '/train/' + image_path)
                elif(os.path.exists('F:\sign_data/tt100k_2021/test/' + image_path)) :
                    shutil.copyfile('F:\sign_data/tt100k_2021/test/'
                                    + image_path, target + '/train/' + image_path)
                elif(os.path.exists('F:\sign_data/tt100k_2021/other/' + image_path)):
                    shutil.copyfile('F:\sign_data/tt100k_2021/other/'
                                    + image_path, target + '/train/' + image_path)
                else:
                    print(image_path)
                    pass
            elif 'val' in source:
                if (os.path.exists('F:\sign_data/tt100k_2021/train/' + image_path)):
                    shutil.copyfile('F:\sign_data/tt100k_2021/train/'
                                    + image_path, target + '/val/' + image_path)
                elif (os.path.exists('F:\sign_data/tt100k_2021/test/' + image_path)):
                    shutil.copyfile('F:\sign_data/tt100k_2021/test/'
                                    + image_path, target + '/val/' + image_path)
                elif (os.path.exists('F:\sign_data/tt100k_2021/other/' + image_path)):
                    shutil.copyfile('F:\sign_data/tt100k_2021/other/'
                                    + image_path, target + '/val/' + image_path)
                else:
                    print(image_path)
                    pass
            elif 'test' in source:
                if (os.path.exists('F:\sign_data/tt100k_2021/train/' + image_path)):
                    shutil.copyfile('F:\sign_data/tt100k_2021/train/'
                                    + image_path, target + '/test/' + image_path)
                elif (os.path.exists('F:\sign_data/tt100k_2021/test/' + image_path)):
                    shutil.copyfile('F:\sign_data/tt100k_2021/test/'
                                    + image_path, target + '/test/' + image_path)
                elif (os.path.exists('F:\sign_data/tt100k_2021/other/' + image_path)):
                    shutil.copyfile('F:\sign_data/tt100k_2021/other/'
                                    + image_path, target + '/test/' + image_path)
                else:
                    print(image_path)
                    pass

# divide_TrainValTest("F:\sign_data/tt100k_2021/train", "F:\sign_data/tt100k_2021/imgs")
divide_TrainValTest("F:/sign_data/tt100k_2021/annotations/train", "F:/sign_data/tt100k_2021/imgs")

divide_TrainValTest("F:/sign_data/tt100k_2021/annotations/val", "F:/sign_data/tt100k_2021/imgs")
divide_TrainValTest("F:/sign_data/tt100k_2021/annotations/test", "F:/sign_data/tt100k_2021/imgs")

猜你喜欢

转载自blog.csdn.net/weixin_43227262/article/details/130199509