yolo自己制作数据集:对已分好的数据集重新分配

本文的背景是:已经自己做了数据集,分了train和val,现在再分一个test

内容:1、路径与列表

            2、代码及需要改的地方

            3、打印的结果

1、列表:

这些是图片的,路径为 C:/Users/30877/Desktop/mydata/imagesyolo自己制作数据集:对已分好的数据集重新分配_第1张图片

这些是标签的,路径是一样的 C:/Users/30877/Desktop/mydata/labels

yolo自己制作数据集:对已分好的数据集重新分配_第2张图片

 2、详细代码

import os
import random
from shutil import copyfile, move

# 图片的路径
train_img_path = 'C:/Users/30877/Desktop/mydata/images/train/'
val_img_path = 'C:/Users/30877/Desktop/mydata/images/val/'
test_img_path = 'C:/Users/30877/Desktop/mydata/images/test/'
# 标签的路径
train_label_path = 'C:/Users/30877/Desktop/mydata/labels/train/'
val_label_path = 'C:/Users/30877/Desktop/mydata/labels/val/'
test_label_path = 'C:/Users/30877/Desktop/mydata/labels/test/'
# 图片内容的列表:.jpg
train_img_list = os.listdir(train_img_path)
val_img_list = os.listdir(val_img_path)
test_img_list = os.listdir(test_img_path)
# 标签内容的列表:.txt
train_label_list = os.listdir(train_label_path)
val_label_list = os.listdir(val_label_path)
test_label_list = os.listdir(test_label_path)

idex_list = []                                                      # 存放索引到的图片名字的索引值列表
for j in range(1000):                                               # 1000:总迭代次数;可以随便设置,但要保证比train等要索引的内容数量大
    idex = random.randint(1, 6600)                                  # 6600:train or val or test 内容的总数量, 是多少个就填多少
    if len(idex_list) < 100:                                        # 100:移动的img总量
        if idex in idex_list:
            print('已重复,重新读取')
        else:
            img = train_img_path + train_img_list[idex]             # 原图片路径+名字
            test_img = test_img_path + train_img_list[idex]         # 移动目标的路径+名字, 为test图片
            move(img, test_img)                                     # 移动照片
            label = train_label_path + train_label_list[idex]       # 原标签路径+名字
            test_label = test_label_path + train_label_list[idex]   # 移动目标的路径+名字, 为test标签
            move(label, test_label)                                 # 移动标签
            idex_list.append(idex)                                  # 存入索引值列表
            name, _ = train_label_list[idex].split('.')             # 获取转移图片的名字
            print('转移:%s 已成功, 第: %s 个'%(name, len(idex_list)))
print('end')

需要改的地方在:6-12行、23-25行。

3、打印的结果

yolo自己制作数据集:对已分好的数据集重新分配_第3张图片

你可能感兴趣的:(python,开发语言)