深度学习数据集制作:Python合并文件夹教程

4 下载量 145 浏览量 更新于2024-08-30 1 收藏 203KB PDF 举报
本文主要介绍了如何使用Python将两个文件夹合并到一个新的文件夹中,以创建自定义数据集,特别适用于深度学习中的数据预处理。这个案例是关于煤矿工人人脸识别的数据集,数据集中包含两类照片:矿下和矿上。在制作数据集的过程中,会将数据分为训练集和测试集,进一步细分为训练、验证和两个特定场景的测试子集。 首先,我们需要了解数据集的结构。在这个例子中,原始数据集由三个工人的照片组成,每个工人有矿下(A开头的文件夹)和矿上(B开头的文件夹)两种状态。首先,创建一个新文件夹,用于存放训练集(0.7的比例)和测试集(0.3的比例)。接下来,创建四个子文件夹,分别是`train`(训练集)、`val`(验证集)、`valb`(矿下测试集)和`vall`(矿上测试集)。 为了实现这一目标,我们需要使用Python的一些内置库,如`numpy`、`os`和`shutil`。`os.listdir()`函数用于读取原始数据集中的所有文件夹,`shutil`库则用于移动文件。首先,我们将所有以"A"开头的文件夹(矿下照片)放入`c`列表,以"B"开头的文件夹(矿上照片)放入`d`列表。然后,根据所需的训练集和测试集比例,将这些文件夹随机分配到对应的子文件夹中。 以下是一段可能的Python代码实现: ```python import numpy as np import os import shutil # 定义原始数据集路径 path = r'C:\Users\Administrator.SKY-20180518VHY\Desktop\rx\ore' # 获取数据集中的所有文件夹 data = os.listdir(path) # 创建存储矿下和矿上照片的列表 c = [folder for folder in data if folder.startswith('A')] d = [folder for folder in data if folder.startswith('B')] # 定义目标文件夹路径 train_root = 'C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\myself\\train' val_root = 'C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\myself\\test' # 创建子文件夹 os.makedirs(train_root, exist_ok=True) os.makedirs(os.path.join(val_root, 'val'), exist_ok=True) os.makedirs(os.path.join(val_root, 'valb'), exist_ok=True) os.makedirs(os.path.join(val_root, 'vall'), exist_ok=True) # 随机分配数据到训练和测试集 random.shuffle(data) split_index = int(len(data) * 0.7) train_data = data[:split_index] test_data = data[split_index:] # 将训练数据分配到train文件夹 for folder in train_data: src = os.path.join(path, folder) dst = os.path.join(train_root, folder) shutil.move(src, dst) # 将测试数据分配到val、valb和vall文件夹 for folder in test_data: src = os.path.join(path, folder) if folder.startswith('A'): # 矿下照片 dst = os.path.join(val_root, 'valb', folder) else: # 矿上照片 dst = os.path.join(val_root, 'vall', folder) shutil.move(src, dst) ``` 通过上述步骤,我们可以将原始数据集整理成符合深度学习框架需求的结构,便于训练和验证模型。对于实际应用,这个过程可能会更复杂,例如添加数据增强、标签处理等步骤,但这个示例提供了一个基本的框架,可以根据具体需求进行扩展。