划分jaffe图片数据集的代码,划分为训练集、验证集和测试集
时间: 2023-09-27 15:08:53 浏览: 102
好的,以下是一种可以用 Python 实现的 JAFFE 图片数据集划分代码:
```
import os
import shutil
import random
# 定义数据集路径和输出路径
root_dir = '/path/to/jaffe_dataset/'
train_dir = '/path/to/train_dir/'
val_dir = '/path/to/val_dir/'
test_dir = '/path/to/test_dir/'
# 定义训练集、验证集、测试集的比例
train_ratio = 0.6
val_ratio = 0.2
test_ratio = 0.2
# 创建输出路径
os.makedirs(train_dir, exist_ok=True)
os.makedirs(val_dir, exist_ok=True)
os.makedirs(test_dir, exist_ok=True)
# 遍历 JAFFE 数据集,并随机分配到训练集、验证集、测试集中
for klass in os.listdir(root_dir):
klass_dir = os.path.join(root_dir, klass)
images = os.listdir(klass_dir)
num_images = len(images)
# 随机打乱图片顺序
random.shuffle(images)
# 划分训练集、验证集、测试集
train_cutoff = int(train_ratio * num_images)
val_cutoff = int((train_ratio + val_ratio) * num_images)
train_images = images[:train_cutoff]
val_images = images[train_cutoff:val_cutoff]
test_images = images[val_cutoff:]
# 把图片复制到相应目录中
for image in train_images:
src_path = os.path.join(klass_dir, image)
dst_path = os.path.join(train_dir, klass, image)
os.makedirs(os.path.dirname(dst_path), exist_ok=True)
shutil.copy(src_path, dst_path)
for image in val_images:
src_path = os.path.join(klass_dir, image)
dst_path = os.path.join(val_dir, klass, image)
os.makedirs(os.path.dirname(dst_path), exist_ok=True)
shutil.copy(src_path, dst_path)
for image in test_images:
src_path = os.path.join(klass_dir, image)
dst_path = os.path.join(test_dir, klass, image)
os.makedirs(os.path.dirname(dst_path), exist_ok=True)
shutil.copy(src_path, dst_path)
print('数据集划分完成!')
```
这个代码实现了在 `root_dir` 指定的 JAFFE 数据集中,将每个人的表情图片分配到训练集、验证集、测试集三个文件夹中,并按照不同的表情分类存放。其中,`train_ratio`、`val_ratio`、`test_ratio` 定义了训练集、验证集、测试集的比例,可以根据实际需求来设置。执行完此代码后,训练集、验证集、测试集三个文件夹中会存放相应的图片数据。
阅读全文