【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)相关推荐

  1. YOLOv5数据集划分脚本(train、val、test)

    文章目录 输入 输出 Python脚本 输入 img_path : 图片文件夹路径 label_path : 标签文件夹路径 输出 脚本创建DataSet文件夹,下设images与labels文件夹, ...

  2. 1. 训练集、开发集、测试集(Train/Dev/Test sets)

    1.在以往的机器学习中 如上图所示,以往机器学习中,对训练集.开发集.测试集的划分比例为60/20/20,如此划分通常可以获得较好的效果. 训练集(training set):训练算法. 开发集(de ...

  3. imdb-wiki数据集划分及处理、训练

    人脸年龄与性别识别数据集处理 使用python批量复制系统文件到指定位置 借鉴程序: import os import shutil path_img='读取图片的路径' ls = os.listdi ...

  4. YOLOv5 数据集划分及生成labels

    0.本人文件夹存放格式 (因为要测试多个数据集和不同的yolov5版本和其他算法,所以数据集整体放到外面)                                               ...

  5. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集

    机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...

  6. 机器学习 数据集划分 训练集 验证集 测试集

    版权声明:本文为博主原创文章,转载请注明转自 Scofield's blog[http://blog.csdn.net/scotfield_msn] https://blog.csdn.net/Sco ...

  7. 机器学习 数据挖掘 数据集划分 训练集 验证集 测试集

    机器学习数据挖掘之数据集划分: 训练集 验证集 测试集 Q:将数据集划分为测试数据集和训练数据集的常用套路是什么呢? A:three ways shown as follow: 1.像sklearn一 ...

  8. 人工智能 数据集划分

    1.函数 sklearn.model_selection.train_test_split(数据集[test_size测试集大小,train_size训练集大小,random_state整数--随机数 ...

  9. YOLOv5将自己数据集划分为训练集、验证集和测试集

    在用自己数据集跑YOLOv5代码时候,需要将自己的VOC标签格式数据集转为yolo格式. 首先是要获取自己的数据集,然后再对数据集进行标注,保存为VOC(xml格式).然后再把标注完的数据集划分为训练 ...

最新文章

  1. 耕耘数据,融合发展——2018年度数据科学研究院RONG教授座谈会成功举办
  2. 基于头皮脑电的癫痫分类
  3. Guide: Solr performance tuning--转载
  4. Java的基础数据类型
  5. Maven报错找不到jre
  6. 如何实现一个楼中楼的评论系统
  7. 高中会考access数据库_高中信息技术ACCESS数据库上机操作复习课教案
  8. 多线程常见问题(面试)
  9. python——import日常学习记录
  10. LncRNADisease:IncRNA相关疾病数据库简介
  11. 【数电】数电基础知识
  12. 论文Re-ranking Person Re-identification with k-reciprocal Encoding(person re-id的re-ranking)
  13. 计算机职业资格证书如何在网上查询?
  14. 大数据技术之_13_Azkaban学习_Azkaban(阿兹卡班)介绍 + Azkaban 安装部署 + Azkaban 实战
  15. Python模拟银行管理系统(面向对象)# 谭子
  16. 浙江大学翁恺C++自学笔记
  17. 如何批量调整图片尺寸?
  18. Java开发实习经历01——寻找到入职(真实实习经历,希望对各位有帮助)
  19. 世界顶级黑客Kevin D.Mitnick教你如何在数字世界中真正隐形
  20. 数字电路实验环境 (Quartus II 9.0)

热门文章

  1. FreeRTOS学习-队列管理
  2. 计算机视觉 深度学习 slam 三维重建 机器学习学习资料整理
  3. 为什么打开CAD显示驱动该文件(.hdi)缺少或已损坏?
  4. ASCII码对照表【2022年汇总】
  5. 基于Android的家校互动系统app
  6. SSM在线学习网站的设计与实现毕业设计源码011451
  7. 视频拼接软件哪个好用?这些软件媒体人都喜欢
  8. 05- 防火墙用户管理
  9. Python软件编程等级考试二级——20220618
  10. yv12、I420、nv12、nv21相互转换