划分jaffe图片数据集的代码,划分为训练集、验证集和测试集
时间: 2023-09-27 09:08:58 浏览: 51
实现这个目标的常用方法是根据原始数据集的大小分配响应的比例,确保训练集、验证集和测试集的总和为 1。以下是 Python 代码:
```python
import os
import random
import shutil
# 原始数据集所在目录
src_dir = "/path/to/jaffe_dataset"
# 划分后数据集所在目录
output_dir = "/path/to/jaffe_split"
# 训练集、验证集和测试集所占比例
train_ratio = 0.7
val_ratio = 0.15
test_ratio = 0.15
assert train_ratio + val_ratio + test_ratio == 1.0, "The sum of train_ratio, val_ratio and test_ratio should be 1.0"
# 获取所有图片文件名
images = []
for filename in os.listdir(src_dir):
if filename.endswith(".tiff"):
images.append(filename)
# 打乱图片顺序
random.shuffle(images)
# 计算训练集、验证集和测试集大小
num_images = len(images)
num_train = int(num_images * train_ratio)
num_val = int(num_images * val_ratio)
num_test = num_images - num_train - num_val
# 创建目录
os.makedirs(output_dir, exist_ok=True)
os.makedirs(os.path.join(output_dir, "train"), exist_ok=True)
os.makedirs(os.path.join(output_dir, "val"), exist_ok=True)
os.makedirs(os.path.join(output_dir, "test"), exist_ok=True)
# 复制图片到对应目录
for i, image in enumerate(images):
if i < num_train:
dst_dir = os.path.join(output_dir, "train")
elif i < num_train + num_val:
dst_dir = os.path.join(output_dir, "val")
else:
dst_dir = os.path.join(output_dir, "test")
shutil.copy(os.path.join(src_dir, image), os.path.join(dst_dir, image))
```
请注意,以上代码仅供参考,具体实现可能因环境而异。
阅读全文