YOLO数据集划分

这段代码用于将YOLO数据集按照指定的比例划分为训练集和验证集,并分别保存图像和对应的标签文件。通过随机种子确保每次划分一致,设置训练集比例为0.9,最终打印出图片总数、训练集数量和验证集数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os
import cv2
import random
from PIL import Image
# os.makedirs('labels_train')
# os.makedirs('labels_val')

img_train_path ='.//images/train/'  #图片训练集保存路径,需要自己新建
img_val_path = './/images/val/'     #图片验证集保存路径   需要自己新建
labels_train_path = './custom/labels/train/'       #标签训练集保存路径   需要自己新建
labels_val_path = './custom/labels/val/'           #标签验证集保存路径   需要自己新建
dir_images = './img/'                       #数据集路径
dir_labels  = './ann/'                  #标签路径

images = os.listdir(dir_images)             #把所有的图片名放入一个列表中
labels = os.listdir(dir_labels)            #labels的顺序和images的顺序不一定是一致的

random.seed(2021)                           #设置一个随机种子,确保每次运行都按照既定的随机形式
random.shuffle(images)                      #洗牌操作,打乱列表顺序

train_spilt_rate =0.9       #数据集划分比例,数据集较小

### YOLO 数据集划分方法 对于YOLO模型的数据集划分,存在多种策略来确保模型的有效性和泛化能力。一种常见的方式是将数据按照一定比例随机分成训练集、验证集和测试集[^1]。 当处理不同规模的数据集时,推荐的比例有所不同: - 对于较小规模的数据集(数万级别),建议采用60%用于训练,20%用于验证,剩余的20%作为最终评估模型性能的测试集[^2]。 - 大型数据集(百万条记录以上)则更加灵活,在这种情况下,重点在于保证验证集和测试集中有足够的样本数量以代表整体分布情况。 除了简单的按比例分割外,还可以考虑使用更复杂的采样技术如分层抽样(Stratified Sampling),它有助于保持各子集合之间的类间平衡性,使得每一部分都能反映整个数据集的特点。 另外,为了进一步提高实验结果可靠性,可应用K折交叉验证(K-Fold Cross Validation)方案。该方式通过多次迭代过程让每一份资料都有机会成为独立评测对象的同时参与其他轮次的学习任务中去。 ```python from sklearn.model_selection import train_test_split, StratifiedKFold # 基础划分示例 train_val_data, test_data = train_test_split(all_data, test_size=0.15, random_state=42) # 使用StratifiedKFold进行多折验证准备 skf = StratifiedKFold(n_splits=5) for fold_idx, (train_index, val_index) in enumerate(skf.split(train_val_data['images'], train_val_data['labels'])): X_train_fold, X_val_fold = train_val_data[train_index], train_val_data[val_index] ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值