目标检测划分数据集python代码
时间: 2023-09-15 08:17:39 浏览: 96
基于Yolo v5目标检测代码+数据集
5星 · 资源好评率100%
下面是一个示例的Python代码,用于将目标检测数据集划分为训练集和验证集:
```python
import os
import random
import shutil
def split_dataset(dataset_dir, train_ratio=0.8, seed=42):
# 创建目标文件夹
train_dir = os.path.join(dataset_dir, 'train')
val_dir = os.path.join(dataset_dir, 'val')
os.makedirs(train_dir, exist_ok=True)
os.makedirs(val_dir, exist_ok=True)
random.seed(seed)
# 获取数据集图片列表
image_files = []
for filename in os.listdir(dataset_dir):
if filename.endswith('.jpg') or filename.endswith('.png'):
image_files.append(filename)
# 随机打乱图片列表
random.shuffle(image_files)
# 计算划分点
split_index = int(len(image_files) * train_ratio)
# 将图片拷贝到训练集文件夹
for filename in image_files[:split_index]:
src = os.path.join(dataset_dir, filename)
dst = os.path.join(train_dir, filename)
shutil.copyfile(src, dst)
# 将图片拷贝到验证集文件夹
for filename in image_files[split_index:]:
src = os.path.join(dataset_dir, filename)
dst = os.path.join(val_dir, filename)
shutil.copyfile(src, dst)
# 使用示例
dataset_dir = '/path/to/dataset'
split_dataset(dataset_dir, train_ratio=0.8, seed=42)
```
请将代码中的`/path/to/dataset`替换为你的目标检测数据集所在的路径。`train_ratio`参数表示训练集所占比例,默认为0.8。`seed`参数用于设置随机种子,确保可重复性,默认为42。
该代码会在给定的数据集路径下创建`train`和`val`两个文件夹,并将按照指定比例随机划分的图片拷贝到对应的文件夹中。你可以根据需要修改文件夹名称和拷贝方式等细节。
阅读全文