深度学习数据集制作:Python合并文件夹教程
61 浏览量
更新于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)
```
通过上述步骤,我们可以将原始数据集整理成符合深度学习框架需求的结构,便于训练和验证模型。对于实际应用,这个过程可能会更复杂,例如添加数据增强、标签处理等步骤,但这个示例提供了一个基本的框架,可以根据具体需求进行扩展。
2020-09-16 上传
2020-12-21 上传
2023-12-10 上传
182 浏览量
2021-10-16 上传
weixin_38747566
- 粉丝: 12
- 资源: 931
最新资源
- 全国江河水系图层shp文件包下载
- 点云二值化测试数据集的详细解读
- JDiskCat:跨平台开源磁盘目录工具
- 加密FS模块:实现动态文件加密的Node.js包
- 宠物小精灵记忆配对游戏:强化你的命名记忆
- React入门教程:创建React应用与脚本使用指南
- Linux和Unix文件标记解决方案:贝岭的matlab代码
- Unity射击游戏UI套件:支持C#与多种屏幕布局
- MapboxGL Draw自定义模式:高效切割多边形方法
- C语言课程设计:计算机程序编辑语言的应用与优势
- 吴恩达课程手写实现Python优化器和网络模型
- PFT_2019项目:ft_printf测试器的新版测试规范
- MySQL数据库备份Shell脚本使用指南
- Ohbug扩展实现屏幕录像功能
- Ember CLI 插件:ember-cli-i18n-lazy-lookup 实现高效国际化
- Wireshark网络调试工具:中文支持的网口发包与分析