将图片划分为训练集、验证集和测试集三个文件,并生成txt标签
时间: 2024-02-03 07:04:14 浏览: 152
imagenet 2012训练集和验证集图片对应的标签文件
5星 · 资源好评率100%
对于图片划分为训练集、验证集和测试集,可以使用Python中的os和shutil库进行操作。具体步骤如下:
1. 创建用于存放训练集、验证集和测试集的文件夹。
```python
import os
os.makedirs("train")
os.makedirs("val")
os.makedirs("test")
```
2. 获取所有图片的路径,并打乱顺序。
```python
import glob
import random
# 获取所有图片的路径
img_paths = glob.glob("*.jpg")
# 随机打乱顺序
random.shuffle(img_paths)
```
3. 划分图片,并复制到对应的文件夹中。
```python
import shutil
# 训练集占比60%
train_ratio = 0.6
# 验证集占比20%
val_ratio = 0.2
# 计算划分后的数量
num_train = int(len(img_paths) * train_ratio)
num_val = int(len(img_paths) * val_ratio)
num_test = len(img_paths) - num_train - num_val
# 划分图片
train_paths = img_paths[:num_train]
val_paths = img_paths[num_train:num_train+num_val]
test_paths = img_paths[num_train+num_val:]
# 复制到对应文件夹中
for path in train_paths:
shutil.copy(path, "train")
for path in val_paths:
shutil.copy(path, "val")
for path in test_paths:
shutil.copy(path, "test")
```
4. 生成txt标签文件。txt文件中每一行表示对应图片的路径和标签,用空格分隔。
```python
# 生成训练集txt标签文件
with open("train.txt", "w") as f:
for path in train_paths:
label = path.split(".")[0][-1] # 假设文件名的最后一个字符是标签
f.write("{} {}\n".format(path, label))
# 生成验证集txt标签文件
with open("val.txt", "w") as f:
for path in val_paths:
label = path.split(".")[0][-1] # 假设文件名的最后一个字符是标签
f.write("{} {}\n".format(path, label))
# 生成测试集txt标签文件
with open("test.txt", "w") as f:
for path in test_paths:
label = path.split(".")[0][-1] # 假设文件名的最后一个字符是标签
f.write("{} {}\n".format(path, label))
```
注意:上面的代码只是一种示例,具体实现可能需要根据数据集的特点进行调整。例如,不同的数据集可能需要不同的划分比例、不同的标签格式等。
阅读全文