yolov8制作数据集 我已经有了yolo的标签文件 有了对应的图片 我现在你给我一个脚本 帮我把图片数据集和标签数据集 一一对应起来 自动按照训练 测试 按照8:2的比例随机分
时间: 2024-10-18 12:18:56 浏览: 32
YOLO猫狗目标检测数据集(含1000张图片)+对应voc、coco和yolo三种格式标签+划分脚本+训练教程.rar
5星 · 资源好评率100%
YOLOv8的数据集准备通常涉及将图像文件和标签文件组织在一起,并将其划分为训练、验证(测试)集合。以下是一个Python脚本示例,使用YOLOv8常用的`imgaug`库来进行数据增强并划分数据。请注意,这个脚本假设你已经安装了必要的库,如`os`, `random`, `pandas`, 和 `imgaug`。如果尚未安装,可以使用`pip install imgaug pandas`命令。
```python
import os
import random
import pandas as pd
def split_dataset(input_folder, label_file, output_train, output_test, train_ratio=0.8):
# 读取标签文件
labels_df = pd.read_csv(label_file)
# 获取所有图片文件名
image_files = [f for f in os.listdir(input_folder) if f.endswith(".jpg") or f.endswith(".png")]
# 验证输入文件是否一致
assert len(labels_df) == len(image_files), "标签文件和图片数量不匹配"
# 打乱数据顺序
shuffled_indices = list(range(len(image_files)))
random.shuffle(shuffled_indices)
# 划分训练集和测试集
n_train = int(len(image_files) * train_ratio)
train_files, test_files = image_files[shuffled_indices[:n_train]], image_files[shuffled_indices[n_train:]]
# 创建输出文件夹
os.makedirs(output_train, exist_ok=True)
os.makedirs(output_test, exist_ok=True)
# 将数据写入新的csv文件
for i, (train_img, test_img) in enumerate(zip(train_files, test_files)):
train_label_path = os.path.join(output_train, train_img.split('.')[0] + '.txt')
test_label_path = os.path.join(output_test, test_img.split('.')[0] + '.txt')
# 可能需要处理一下标签路径,这里只是一个基本的示例
train_labels_df = labels_df[labels_df['filename'] == train_img].reset_index(drop=True)
test_labels_df = labels_df[labels_df['filename'] == test_img].reset_index(drop=True)
train_labels_df.to_csv(train_label_path, index=False, header=None)
test_labels_df.to_csv(test_label_path, index=False, header=None)
print(f"数据集已按 {train_ratio*100}% 的比例划分为训练({output_train})和测试({output_test})")
# 使用脚本
input_folder = 'path_to_your_image_folder'
label_file = 'path_to_your_labels.csv'
output_train = 'path_to_output_train_dataset'
output_test = 'path_to_output_test_dataset'
split_dataset(input_folder, label_file, output_train, output_test)
```
阅读全文