【YOLOv5 数据集划分】训练和验证、训练验证和测试(train、val)(train、val、test)
【YOLOv5 数据集划分】训练和验证、训练验证和测试(train、val),(train、val、test)
①在已有测试集的情况下划分训练集和验证集
# 将图片和标注数据按比例切分为 训练集和测试集
import shutil
import random
import os# 数据集路径
image_original_path = './mydatasets/source_images/'
label_original_path = './mydatasets/train_labels/'
# 训练集路径
train_image_path = './mydatasets/train/'
train_label_path = './mydatasets/train_txt/'
# 验证集路径
val_image_path = './mydatasets/val/'
val_label_path = './mydatasets/val_txt/'# 数据集划分比例,训练集80%,验证集20%,按需修改
train_percent = 0.8
val_percent = 0.2# 检查文件夹是否存在
def mkdir():if not os.path.exists(train_image_path):os.makedirs(train_image_path)if not os.path.exists(train_label_path):os.makedirs(train_label_path)if not os.path.exists(val_image_path):os.makedirs(val_image_path)if not os.path.exists(val_label_path):os.makedirs(val_label_path)def main():mkdir()total_txt = os.listdir(label_original_path)num_txt = len(total_txt)list_all_txt = range(num_txt) # 范围 range(0, num)num_train = int(num_txt * train_percent)num_val = num_txt - num_traintrain = random.sample(list_all_txt, num_train)val = [i for i in list_all_txt if not i in train]print("训练集数目:{}, 验证集数目:{}".format(len(train), len(val), ))for i in list_all_txt:name = total_txt[i][:-4]srcImage = image_original_path + name + '.jpg'srcLabel = label_original_path + name + '.txt'if i in train:dst_train_Image = train_image_path + name + '.jpg'dst_train_Label = train_label_path + name + '.txt'shutil.copyfile(srcImage, dst_train_Image)shutil.copyfile(srcLabel, dst_train_Label)elif i in val:dst_val_Image = val_image_path + name + '.jpg'dst_val_Label = val_label_path + name + '.txt'shutil.copyfile(srcImage, dst_val_Image)shutil.copyfile(srcLabel, dst_val_Label)if __name__ == '__main__':main()
② 在完整数据集上划分train、val、test
# 将图片和标注数据按比例切分为 训练集和测试集
import shutil
import random
import os
# 数据集路径
image_original_path = './mydatasets/source_images/'
label_original_path = './mydatasets/train_labels/'
# 训练集路径
train_image_path = './mydatasets/train/'
train_label_path = './mydatasets/train_txt/'
# 验证集路径
val_image_path = './mydatasets/val/'
val_label_path = './mydatasets/val_txt/'
# 测试集路径
test_image_path = './mydatasets/test/'
test_label_path = './mydatasets/test_txt/'# 数据集划分比例,训练集75%,验证集15%,测试集15%,按需修改
train_percent = 0.7
val_percent = 0.15
test_percent = 0.1# 检查文件夹是否存在
def mkdir():if not os.path.exists(train_image_path):os.makedirs(train_image_path)if not os.path.exists(train_label_path):os.makedirs(train_label_path)if not os.path.exists(val_image_path):os.makedirs(val_image_path)if not os.path.exists(val_label_path):os.makedirs(val_label_path)if not os.path.exists(test_image_path):os.makedirs(test_image_path)if not os.path.exists(test_label_path):os.makedirs(test_label_path)def main():mkdir()total_txt = os.listdir(label_original_path)num_txt = len(total_txt)list_all_txt = range(num_txt) # 范围 range(0, num)num_train = int(num_txt * train_percent)num_val = int(num_txt * val_percent)num_test = num_txt - num_train - num_valtrain = random.sample(list_all_txt, num_train)# 在全部数据集中取出trainval_test = [i for i in list_all_txt if not i in train]# 再从val_test取出num_val个元素,val_test剩下的元素就是testval = random.sample(val_test, num_val)print("训练集数目:{}, 验证集数目:{},测试集数目:{}".format(len(train), len(val), len(val_test) - len(val)))for i in list_all_txt:name = total_txt[i][:-4]srcImage = image_original_path + name + '.jpg'srcLabel = label_original_path + name + '.txt'if i in train:dst_train_Image = train_image_path + name + '.jpg'dst_train_Label = train_label_path + name + '.txt'shutil.copyfile(srcImage, dst_train_Image)shutil.copyfile(srcLabel, dst_train_Label)elif i in val:dst_val_Image = val_image_path + name + '.jpg'dst_val_Label = val_label_path + name + '.txt'shutil.copyfile(srcImage, dst_val_Image)shutil.copyfile(srcLabel, dst_val_Label)else:dst_test_Image = test_image_path + name + '.jpg'dst_test_Label = test_label_path + name + '.txt'shutil.copyfile(srcImage, dst_test_Image)shutil.copyfile(srcLabel, dst_test_Label)if __name__ == '__main__':main()
【YOLOv5 数据集划分】训练和验证、训练验证和测试(train、val)(train、val、test)相关推荐
- YOLOv5数据集划分脚本(train、val、test)
文章目录 输入 输出 Python脚本 输入 img_path : 图片文件夹路径 label_path : 标签文件夹路径 输出 脚本创建DataSet文件夹,下设images与labels文件夹, ...
- 1. 训练集、开发集、测试集(Train/Dev/Test sets)
1.在以往的机器学习中 如上图所示,以往机器学习中,对训练集.开发集.测试集的划分比例为60/20/20,如此划分通常可以获得较好的效果. 训练集(training set):训练算法. 开发集(de ...
- imdb-wiki数据集划分及处理、训练
人脸年龄与性别识别数据集处理 使用python批量复制系统文件到指定位置 借鉴程序: import os import shutil path_img='读取图片的路径' ls = os.listdi ...
- YOLOv5 数据集划分及生成labels
0.本人文件夹存放格式 (因为要测试多个数据集和不同的yolov5版本和其他算法,所以数据集整体放到外面) ...
- 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集
机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...
- 机器学习 数据集划分 训练集 验证集 测试集
版权声明:本文为博主原创文章,转载请注明转自 Scofield's blog[http://blog.csdn.net/scotfield_msn] https://blog.csdn.net/Sco ...
- 机器学习 数据挖掘 数据集划分 训练集 验证集 测试集
机器学习数据挖掘之数据集划分: 训练集 验证集 测试集 Q:将数据集划分为测试数据集和训练数据集的常用套路是什么呢? A:three ways shown as follow: 1.像sklearn一 ...
- 人工智能 数据集划分
1.函数 sklearn.model_selection.train_test_split(数据集[test_size测试集大小,train_size训练集大小,random_state整数--随机数 ...
- YOLOv5将自己数据集划分为训练集、验证集和测试集
在用自己数据集跑YOLOv5代码时候,需要将自己的VOC标签格式数据集转为yolo格式. 首先是要获取自己的数据集,然后再对数据集进行标注,保存为VOC(xml格式).然后再把标注完的数据集划分为训练 ...
最新文章
- 耕耘数据,融合发展——2018年度数据科学研究院RONG教授座谈会成功举办
- 基于头皮脑电的癫痫分类
- Guide: Solr performance tuning--转载
- Java的基础数据类型
- Maven报错找不到jre
- 如何实现一个楼中楼的评论系统
- 高中会考access数据库_高中信息技术ACCESS数据库上机操作复习课教案
- 多线程常见问题(面试)
- python——import日常学习记录
- LncRNADisease:IncRNA相关疾病数据库简介
- 【数电】数电基础知识
- 论文Re-ranking Person Re-identification with k-reciprocal Encoding(person re-id的re-ranking)
- 计算机职业资格证书如何在网上查询?
- 大数据技术之_13_Azkaban学习_Azkaban(阿兹卡班)介绍 + Azkaban 安装部署 + Azkaban 实战
- Python模拟银行管理系统(面向对象)# 谭子
- 浙江大学翁恺C++自学笔记
- 如何批量调整图片尺寸?
- Java开发实习经历01——寻找到入职(真实实习经历,希望对各位有帮助)
- 世界顶级黑客Kevin D.Mitnick教你如何在数字世界中真正隐形
- 数字电路实验环境 (Quartus II 9.0)