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

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

内容:1、路径与列表

            2、代码及需要改的地方

            3、打印的结果

1、列表:

这些是图片的,路径为 C:/Users/30877/Desktop/mydata/images

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

 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/'
# 图片内容的列表:<name>.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)
# 标签内容的列表:<name>.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、打印的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值