当前位置: 首页 > backend >正文

按7:2:1比例随机划分yolo数据集

import os
import shutil
import random# 设置路径
base_dir = 'D:\ChromeDownload\***'
images_dir = os.path.join(base_dir, 'images')
labels_dir = os.path.join(base_dir, 'labels')# 输出路径
output_dir = 'D:\ChromeDownload\***'
splits = ['train', 'val', 'test']# 创建输出目录
for split in splits:os.makedirs(os.path.join(output_dir, split, 'images'), exist_ok=True)os.makedirs(os.path.join(output_dir, split, 'labels'), exist_ok=True)# 获取所有图片名(去掉扩展名)
image_files = sorted([f for f in os.listdir(images_dir) if f.endswith('.jpg') or f.endswith('.png')])
base_names = [os.path.splitext(f)[0] for f in image_files]# 打乱并划分
random.shuffle(base_names)
total = len(base_names)
train_end = int(0.7 * total)
val_end = int(0.9 * total)train_files = base_names[:train_end] #0-7
val_files = base_names[train_end:val_end] #7-9
test_files = base_names[val_end:] #9~endprint(f'Total: {total}, Train: {len(train_files)}, Val: {len(val_files)}, Test: {len(test_files)}')# 拷贝函数
def copy_files(file_list, split):for name in file_list:img_src = os.path.join(images_dir, name + '.jpg')  # 假设是.jpgif not os.path.exists(img_src):  # 或者是.pngimg_src = os.path.join(images_dir, name + '.png')label_src = os.path.join(labels_dir, name + '.txt')img_dst = os.path.join(output_dir, split, 'images', os.path.basename(img_src))label_dst = os.path.join(output_dir, split, 'labels', os.path.basename(label_src))shutil.copy(img_src, img_dst)if os.path.exists(label_src):shutil.copy(label_src, label_dst)# 执行复制
copy_files(train_files, 'train')
copy_files(val_files, 'val')
copy_files(test_files, 'test')
http://www.xdnf.cn/news/13801.html

相关文章:

  • 2025.uexp、.uasset文件、.ubulk如何打开
  • Flutter 命名路由与参数传递完全指南
  • 机器学习×第七卷:正则化与过拟合——她开始学会收敛,不再贴得太满
  • 【unitrix】 1.3 Cargo.toml 文件解析
  • 软考-计算机硬件组成
  • reactor模型
  • 支持 CHI 协议的 NOC的错误注入和边界条件测试
  • Kubernetes微服务发布治理与Java容器化终极实践指南
  • SM3算法Python实现(无第三方库)
  • 运行springboot
  • 本地内网搭建网址需要外部网络连接怎么办?无公网ip实现https/http站点外网访问
  • 动态多目标进化算法:TrRMMEDA求解CEC2018(DF1-DF14),提供完整MATLAB代码
  • SpringBoot集成ActiveMQ
  • 3D 展示崛起:科技赋能的新变革
  • 【力扣 简单 C】83. 删除排序链表中的重复元素
  • 英一真题阅读单词笔记 10年
  • c语言接口设计模式之抽象算法,以冒泡排序为例
  • @Validation 的使用 Spring
  • Matlab图像清晰度评价指标
  • 如何在网页里填写 PDF下拉框
  • STM32 开发 - 中断案例(中断概述、STM32 的中断、NVIC 嵌套向量中断控制器、外部中断配置寄存器组、EXTI 外部中断控制器、实例实操)
  • Spring Boot 项目中Http 请求如何对响应体进行压缩
  • [C++][设计模式] : 单例模式(饿汉和懒汉)
  • php列表头部增加批量操作按钮,多选订单数据批量微信退款(含微信支付SDK)
  • 洛谷-P3375 【模板】KMP
  • 前端导出PDF(适配ios Safari浏览器)
  • 常见的网络协议有哪些
  • 图像匹配算法 笔记2025
  • 【从零学习JVM|第七篇】快速了解直接内存
  • Qt QTcpSocket的write无法发送数据【已解决】