变化检测数据集划分


文章目录


前言

记录将变化检测数据集进行划分,将训练数据计划分为训练集和验证集。代码主要使用了shutil.copy函数

import os
import json
import numpy as np
import shutil
 
# 数据集路径
dataset_root = r"D:\VScode\SSCD\Bi-SRNet\DATA_SCD\train"
output_root = "D:\VScode\SSCD\Bi-SRNet\DATA_SCD"
images_A= os.path.join(dataset_root, "A")
images_B= os.path.join(dataset_root, "B")
label= os.path.join(dataset_root, "label")

def get_all_files_in_dir(path):
    all_files = []
    for root, dirs, files in os.walk(path):
        for file in files:
            file_path = os.path.join(root, file)
            all_files.append(file_path)
    return files
A_list = get_all_files_in_dir(images_A)   
b = get_all_files_in_dir(images_B)  
# 输出路径
output_train = os.path.join(output_root, "train1")
output_val = os.path.join(output_root, "val1")
os.makedirs(output_root, exist_ok=True)
 


# 随机打乱数据
np.random.shuffle(A_list)
 
# 训练集,验证集,测试集比例
train_ratio, val_ratio = 0.8, 0.2
 
# 计算训练集,验证集,测试集的大小
num_images = len(A_list)
num_train = int(num_images * train_ratio)
num_val = int(num_images * val_ratio)
 
# 划分数据集
train_images = A_list[:num_train]
val_images = A_list[num_train:num_train + num_val]

 
# 分别为训练集、验证集和测试集创建子文件夹
train_A = os.path.join(output_train, "A")
val_A = os.path.join(output_val,"A")
train_B = os.path.join(output_train, "B")
val_B = os.path.join(output_val,"B")
train_label = os.path.join(output_train, "label")
val_label = os.path.join(output_val, "label")

os.makedirs(train_A, exist_ok=True)
os.makedirs(val_A, exist_ok=True)
os.makedirs(train_B, exist_ok=True)
os.makedirs(val_B, exist_ok=True)
os.makedirs(train_label, exist_ok=True)
os.makedirs(val_label, exist_ok=True)

 
#将图片文件复制到相应的子文件夹
for img in train_images:
    shutil.copy(os.path.join(images_A, img), os.path.join(train_A, img))
    shutil.copy(os.path.join(images_B, img), os.path.join(train_B, img))
    shutil.copy(os.path.join(label, img.replace("tif","png")), os.path.join(train_label, img.replace("tif","png")))
 
for img in val_images:
    shutil.copy(os.path.join(images_A, img), os.path.join(val_A, img))
    shutil.copy(os.path.join(images_B, img), os.path.join(val_B, img))
    shutil.copy(os.path.join(label, img.replace("tif","png")), os.path.join(val_label, img.replace("tif","png")))
 
 
print("数据集划分完成!")



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云朵不吃雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值