目标检测图像数据集,训练集测试集随机划分代码实现

目标检测图像数据集,训练集测试集随机划分代码实现

今天用到随机划分数据集,懒得找之前的代码了csdn搜到一个跑不通,略加修改后代码如下,只需改路径即可。

这是原文链接,可以参考https://blog.csdn.net/Leon1997726/article/details/122011172

修改后的代码为

# 将数据集随机划分为训练集和验证集,测试集
import os
import random
import shutil

from tqdm import tqdm

image_path = r'D:\CCTSDB-2021-2W\image\\'  # 源图片文件夹路径
mask_path = r'D:\CCTSDB-2021-2W\mask\\'  # 标签文件夹路径

train_images = r'D:\CCTSDB-2021-2W\train\images'  # 划分后训练集图片的保存路径
train_labels = r'D:\CCTSDB-2021-2W\train\labels'
val_images = r'D:\CCTSDB-2021-2W\val\images'
val_labels = r'D:\CCTSDB-2021-2W\val\labels'
# test_images = r'E:\DCI(first)_3\DCI_Split2\test\images'
# test_labels = r'E:\DCI(first)_3\DCI_Split2\test\labels'

if not os.path.exists(train_images):
    os.makedirs(train_images)
if not os.path.exists(train_labels):
    os.makedirs(train_labels)
if not os.path.exists(val_images):
    os.makedirs(val_images)
if not os.path.exists(val_labels):
    os.makedirs(val_labels)
# if not os.path.exists(test_images):
#     os.makedirs(test_images)
# if not os.path.exists(test_labels):
#     os.makedirs(test_labels)
train_rate = 0.8  # 自定义抽取图片的比例,比方说100张抽10张,那就是0.1
val_rate = 0.2
#test_rate = 0.15
# 求训练集
pathDir = os.listdir(image_path)  # 取图片的原始路径
print('数据集总共有图片:', len(pathDir))
print(
    '划分比例如下:训练集:{},验证集:{}'.format(int(len(pathDir) * train_rate), int(len(pathDir) * val_rate),
                                         )) #,测试集:{}   int(len(pathDir) * test_rate)
picknumber = int(len(pathDir) * train_rate)  # 按照rate比例从文件夹中取一定数量图片
train_sample = random.sample(pathDir, picknumber)  # 随机选取picknumber数量的样本图片
print('训练集的大小为:', len(train_sample))

# 复制为训练集
for name in tqdm(train_sample):
    shutil.copy(image_path + name, train_images + "\\" + name)
    shutil.copy(mask_path + name[:-3] + "txt", train_labels + "\\" + name[:-3] + "txt")

# 求出原数据集不含训练集
all_images = os.listdir(image_path)
remaining_image = []
for file in all_images:
    if file not in train_sample:
        remaining_image.append(file)
# 求验证集
picknumber2 = int(len(remaining_image) * val_rate / (val_rate ))  # 按照rate比例从文件夹中取一定数量图片 + test_rate
val_sample = random.sample(remaining_image, picknumber2)  # 随机选取picknumber数量的样本图片
print('验证集的大小为:', len(val_sample))
# 复制为验证集
for file in tqdm(val_sample):
    shutil.copy(image_path + file, val_images + "\\" + file)
    shutil.copy(mask_path + file[:-3] + "txt", val_labels + "\\" + file[:-3] + "txt")

# test_sample = []
# for file in remaining_image:
#     if file not in val_sample:
#         test_sample.append(file)
# print('测试集的大小为:', len(test_sample))
# # 复制为测试集
# for file in tqdm(test_sample):
#     shutil.copy(image_path + file, test_images + "\\" + file)
#     shutil.copy(mask_path + file, test_labels + "\\" + file)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值