若尚未部署 YOLOv8,则可参考这篇博客:
1 处理数据集
1.1 数据集格式介绍
由于不同数据集的目录结构可能不同,因此在这里对本文所使用的示例数据集进行说明。
如上图所示,示例数据集的目录结构为:
- 存放图片的目录:China_Drone/train/images
- 存放标签的目录:China_Drone/train/annotations/xmls
图片文件为 .png 文件,而标签文件为采用 pascalVOC 格式的 .xml 文件:
注意:由于在划分数据集的代码中需要填写各种路径,因此在这里了解数据集的目录结构是很有必要的。
1.2 划分数据集
在 China_Drone/train 目录中新建 split_dataset.py
文件,用于编写划分数据集的代码:
写入如下代码,用于将原始数据集划分为训练集、验证集、测试集:
import os
import random
import shutil
# 定义目录
# 采用的是相对目录
root_dir = '.' # 原始数据集目录
image_dir = 'images' # 原始数据集目录下的图片目录
label_dir = 'annotations/xmls' # 原始数据集目录下的标签目录
# 划分比例
# 训练集 : 验证集 : 测试集 = 8 : 1 : 1
train_ratio = 0.8
valid_ratio = 0.1
test_ratio = 0.1
# 设置随机种子
random.seed(42)
# 创建各种目录(用于存放拆分后的数据集)
split_dir = './road' # 拆分后数据集目录
os.makedirs(os.path.join(split_dir, 'train/images'), exist_ok=True)
os.makedirs(os.path.join(split_dir, 'train/labels'), exist_ok=True)
os.makedirs(os.path.join(split_dir, 'valid/images'), exist_ok=