深度学习数据集制作:Python合并文件夹教程
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)
```
通过上述步骤,我们可以将原始数据集整理成符合深度学习框架需求的结构,便于训练和验证模型。对于实际应用,这个过程可能会更复杂,例如添加数据增强、标签处理等步骤,但这个示例提供了一个基本的框架,可以根据具体需求进行扩展。
2020-09-16 上传
2020-12-21 上传
2023-12-10 上传
184 浏览量
2021-10-16 上传
weixin_38747566
- 粉丝: 12
- 资源: 931
最新资源
- Java毕业设计项目:校园二手交易网站开发指南
- Blaseball Plus插件开发与构建教程
- Deno Express:模仿Node.js Express的Deno Web服务器解决方案
- coc-snippets: 强化coc.nvim代码片段体验
- Java面向对象编程语言特性解析与学生信息管理系统开发
- 掌握Java实现硬盘链接技术:LinkDisks深度解析
- 基于Springboot和Vue的Java网盘系统开发
- jMonkeyEngine3 SDK:Netbeans集成的3D应用开发利器
- Python家庭作业指南与实践技巧
- Java企业级Web项目实践指南
- Eureka注册中心与Go客户端使用指南
- TsinghuaNet客户端:跨平台校园网联网解决方案
- 掌握lazycsv:C++中高效解析CSV文件的单头库
- FSDAF遥感影像时空融合python实现教程
- Envato Markets分析工具扩展:监控销售与评论
- Kotlin实现NumPy绑定:提升数组数据处理性能