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

YOLO数据集分割训练集、测试集和验证集

记录一下自己的分割代码。

注意:

  1. 这是在windows环境,请Linux的同学们注意。
  2. 标签为txt,图像为jpg,其他的我没试过喔。

训练集、验证集、测试集(7:2:1)

import os
import shutil
import random
from tqdm import tqdm"""
标注文件是yolo格式(txt文件)
训练集:验证集:测试集 (7:2:1) 
"""def split_img(img_path, label_path, split_list):try:Data = './ImageSets'# 创建文件夹结构train_img_dir = os.path.join(Data, 'images/train')val_img_dir = os.path.join(Data, 'images/val')test_img_dir = os.path.join(Data, 'images/test')train_label_dir = os.path.join(Data, 'labels/train')val_label_dir = os.path.join(Data, 'labels/val')test_label_dir = os.path.join(Data, 'labels/test')# 创建所有目录os.makedirs(train_img_dir, exist_ok=True)os.makedirs(val_img_dir, exist_ok=True)os.makedirs(test_img_dir, exist_ok=True)os.makedirs(train_label_dir, exist_ok=True)os.makedirs(val_label_dir, exist_ok=True)os.makedirs(test_label_dir, exist_ok=True)except Exception as e:print(f'创建目录时出错: {e}')train, val, test = split_list# 仅处理存在对应标签文件的图像all_img_path = []for img in os.listdir(img_path):img_full = os.path.join(img_path, img)label_full = toLabelPath(img_full, label_path)if os.path.isfile(label_full):all_img_path.append(img_full)else:print(f"跳过无标签的图像: {img_full}")# 随机打乱所有图像路径random.shuffle(all_img_path)total = len(all_img_path)train_num = int(total * train)val_num = int(total * val)test_num = total - train_num - val_num# 划分数据集train_img = all_img_path[:train_num]val_img = all_img_path[train_num:train_num + val_num]test_img = all_img_path[train_num + val_num:]# 复制训练集for img in tqdm(train_img, desc='训练集', unit='img'):label = toLabelPath(img, label_path)_copy(img, train_img_dir)_copy(label, train_label_dir)# 复制验证集for img in tqdm(val_img, desc='验证集', unit='img'):label = toLabelPath(img, label_path)_copy(img, val_img_dir)_copy(label, val_label_dir)# 复制测试集for img in tqdm(test_img, desc='测试集', unit='img'):label = toLabelPath(img, label_path)_copy(img, test_img_dir)_copy(label, test_label_dir)def _copy(from_path, to_dir):"""复制文件到目标目录,并确保目标目录存在"""try:os.makedirs(to_dir, exist_ok=True)shutil.copy(from_path, to_dir)except Exception as e:print(f"复制 {from_path} 到 {to_dir} 失败: {e}")def toLabelPath(img_path, label_path):"""根据图片路径生成对应的标签路径"""img_filename = os.path.basename(img_path)base = os.path.splitext(img_filename)[0]  # 去除扩展名label_filename = base + '.txt'return os.path.join(label_path, label_filename)if __name__ == '__main__':# 使用原始字符串避免转义问题img_path = r'D:\文件\PlantVillage_for_object_detection\Dataset\images'    #自己的图片文件地址label_path = r'D:\文件\PlantVillage_for_object_detection\Dataset\labels'    #自己的标签文件地址split_list = [0.7, 0.2, 0.1]  # 训练集:验证集:测试集split_img(img_path, label_path, split_list)

over

相关文章:

YOLO数据集分割训练集、测试集和验证集

记录一下自己的分割代码。 注意: 这是在windows环境,请Linux的同学们注意。标签为txt,图像为jpg,其他的我没试过喔。 训练集、验证集、测试集(7:2:1) import os import shutil import random from tqdm…...

Debug-037-table列表勾选回显方案

效果展示: 图1 图2 最近实现一个支持勾选的el-table可以回显之前勾选项的功能。实现了一个“编辑”的功能: 在图1中的列表中有三行数据,当点击“更换设备”按钮时,打开抽屉显示el-table组件如图2所示,可以直接回显勾选…...

使用 libevent 构建高性能网络应用

使用 libevent 构建高性能网络应用 在现代网络编程中,高性能和可扩展性是开发者追求的核心目标。为了实现这一目标,许多开发者选择使用事件驱动库来管理 I/O 操作和事件处理。libevent 是一个轻量级、高性能的事件通知库,广泛应用于网络服务…...

人脸表情识别系统分享(基于深度学习+OpenCV+PyQt5)

最近终于把毕业大论文忙完了,众所周知硕士大论文需要有三个工作点,表情识别领域的第三个工作点一般是做一个表情识别系统出来,如下图所示。 这里分享一下这个表情识别系统: 采用 深度学习OpenCVPyQt5 构建,主要功能包…...

AtCoder - arc086_d Shift and Decrement分析与实现

分析与思路 可以把操作流程表示成下图 以进行四次除法操作为例&#xff1a; 这里有一个关键点&#xff1a;对于每个p_i (0< i <x-1) &#xff0c;x是除法操作的次数&#xff0c;如果p_i>2&#xff0c;可以将2个p_i的减法操作去掉&#xff0c;在p_(i1)中增加一个减法…...

学习111

项目名称项目简介主要功能技术原理GitHub地址browser-use智能浏览器工具&#xff0c;让AI像人类一样操作浏览器&#xff0c;实现网页自动化网页浏览与操作、多标签页管理、视觉识别与内容提取、操作记录与重复执行、自定义动作支持、主流LLM模型支持为大语言模型服务的创新Pyth…...

Android Jetpack Compose介绍

Android Jetpack Compose Android Jetpack Compose 是 Google 推出的现代 UI 工具包&#xff0c;用于以声明式的方式构建 Android 应用的 UI。它摒弃了传统的 XML 布局方式&#xff0c;完全基于 Kotlin 编写&#xff0c;提供了更简洁、更强大的 UI 开发体验。以下是 Compose 的…...

tcping 命令的使用,ping IP 和端口

1. ‌Windows系统安装‌ ‌下载tcping工具‌&#xff1a;根据系统位数&#xff08;32位或64位&#xff09;下载对应的tcping.exe文件。‌安装步骤‌&#xff1a; 将下载的tcping.exe文件复制到C:\Windows\System32目录下。如果下载的是64位版本&#xff0c;需将文件名改为tcpi…...

天地图InfoWindow插入React自定义组件

截至2025年03月21日天地图的Marker不支持添加Label; 同时Label和Icon是不支持自定义HTMLElement只支持String&#xff1b;目前只有InfoWindow支持自定义HTMLElement; 效果图 React核心api import ReactDOM from react-dom/client const content document.createElement(div);…...

003-掌控命令行-CLI11-C++开源库108杰

首选的现代C风格命令行参数解析器! &#xff08;本课程包含两段教学视频。&#xff09; 以文件对象监控程序为实例&#xff0c;五分钟实现从命令行读入多个监控目标路径&#xff1b;区分两大时机&#xff0c;学习 CLI11 构建与解析参数两大场景下的异常处理&#xff1b;区分三…...

理解 Node.js 中的 process`对象与常用操作

理解 Node.js 中的 process 对象与常用操作 在 Node.js 中&#xff0c;process 是一个全局对象&#xff0c;提供了与当前 Node.js 进程相关的信息和操作。无论是获取进程信息、处理信号、访问环境变量&#xff0c;还是控制进程行为&#xff0c;process 都是不可或缺的工具。 看…...

鸿蒙HarmonyOS NEXT应用崩溃分析及修复

鸿蒙HarmonyOS NEXT应用崩溃分析及修复 如何保证应用的健壮性&#xff0c;其中一个指标就是看崩溃率&#xff0c;如何降低崩溃率&#xff0c;就需要知道存在哪些崩溃&#xff0c;然后对症下药&#xff0c;解决崩溃。那么鸿蒙应用中存在哪些崩溃类型呢&#xff1f;又改如何解决…...

【conda activate无效】 conda: error: argument COMMAND: invalid choice: ‘activate‘

conda activate失效了 在使用conda activate时出现报错&#xff1a; usage: conda [-h] [-v] [--no-plugins] [-V] COMMAND ... conda: error: argument COMMAND: invalid choice: activate (choose from clean, compare, config, create, info, init, install, list, notice…...

Redis + 布隆过滤器解决缓存穿透问题

Redis 布隆过滤器解决缓存穿透问题 1. Redis 布隆过滤器解决缓存穿透问题 &#x1f4cc; 什么是缓存穿透&#xff1f; 缓存穿透指的是查询的数据既不在缓存&#xff0c;也不在数据库&#xff0c;导致每次查询都直接访问数据库&#xff0c;增加数据库压力。 例如&#xff1…...

机器学习——分类、回归、聚类、LASSO回归、Ridge回归(自用)

纠正自己的误区&#xff1a;机器学习是一个大范围&#xff0c;并不是一个小的方向&#xff0c;比如&#xff1a;线性回归预测、卷积神经网络和强化学都是机器学习算法在不同场景的应用。 机器学习最为关键的是要有数据&#xff0c;也就是数据集 名词解释&#xff1a;数据集中的…...

HarmonyOS鸿蒙开发 BuilderParam在父组件的Builder的点击事件报错:Error message:is not callable

HarmonyOS鸿蒙开发 BuilderParam在父组件的Builder的点击事件报错&#xff1a;Error message:is not callable 最近在鸿蒙开发过程中&#xff0c;UI做好了&#xff0c;根据列表item进行点击跳转&#xff0c;报错了 报错信息如下 Error message:is not callable Stacktrace:at…...

【canvas】一键自动布局:如何让流程图节点自动找到最佳位置

一键自动布局&#xff1a;如何让流程图节点自动找到最佳位置 引言 在流程图、拓扑图和系统架构图设计中&#xff0c;节点布局往往是最令人头疼的问题。如果手动调整每个节点位置&#xff0c;不仅耗时费力&#xff0c;还难以保证美观性和一致性。本文将深入解析如何实现自动布…...

[每周一更]-(第137期):Go + Gin 实战:Docker Compose + Apache 反向代理全流程

文章目录 **1. Go 代码示例&#xff08;main.go&#xff09;****2. Dockerfile 多段构建**3.构建 Docker 镜像**4. docker-compose.yml 直接拉取镜像****5. 运行容器****6. 测试 API**7、配置域名访问**DNS解析&#xff1a;将域名转换为IP地址****DNS寻址示例** 8.错误记录 访问…...

HTTPS 加密过程详解

HTTPS 详解及其加密过程流程框架 HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是一种基于 HTTP 协议的安全通信协议&#xff0c;通过 SSL/TLS 协议对传输数据进行加密和身份验证&#xff0c;解决了 HTTP 明文传输的安全隐患。以下是其核心原理和加密流程的…...

SpringCache小记

Spring Cache 小记 官方文档&#xff1a;https://springdoc.cn/spring-cache-tutorial/ 基础知识 常用注解 EnableCaching&#xff1a;开启缓存功能&#xff0c;一般放在启动类上。 Cacheable&#xff1a;表示该方法支持缓存。当调用被注解的方法时&#xff0c;如果对应的键已…...

Web-Machine-N7靶机通关攻略

获取靶机ip arp-scan -l 端口扫描 nmap xxxx 访问80端口发现没用 扫描目录 gobuster dir -u http:/192.168.117.160 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium,txt -x php,html,txt ,zip 打开exploit.html 点击F12&#xff0c;修改localhost为靶机ip&#…...

笔记本运行边缘计算

笔记本电脑可以用来运行PCDN&#xff08;Peer-to-Peer Content Delivery Network&#xff09;服务。实际上&#xff0c;如果你有闲置的笔记本电脑&#xff0c;并且它具备一定的硬件条件和网络环境&#xff0c;那么它可以成为一个不错的PCDN节点。 运行PCDN的基本要求 硬件需求…...

self Attention为何除以根号dk?(全新角度)

全网最独特解析&#xff1a;self Attention为何除根号dk&#xff1f; 一、假设条件&#xff1a;查询向量和键向量服从正态分布 假设查询向量 q i q_i qi​和键向量 k j k_j kj​的每个分量均为独立同分布的随机变量&#xff0c;且服从标准正态分布&#xff0c;即&#xff1a;…...

第十五次CCF-CSP认证(含C++源码)

第十五次CCF-CSP认证 小明上学满分思路 数据中心满分思路 小明放学满分题解 小明上学 题目链接 满分思路 其实题目看着长&#xff0c;但是做起来是非常好写的&#xff0c;其实主要原因在于&#xff0c;他的红绿灯的变化规律是一定的&#xff0c;而且小明路上的每次红绿灯情况…...

基于Azure Delta Lake与Databricks的医疗数据变更管理

设计Azure云架构方案实现Azure Delta Lake和Azure Databricks&#xff0c;在医疗场景下记录所有数据变更&#xff0c;满足合规性要求&#xff08;如 GDPR&#xff09;&#xff0c;并具备回滚能力&#xff0c;能快速恢复误删数据&#xff08;如 RESTORE TABLE table VERSION AS …...

简述Mybatis的插件运行原理,以及如何编写一个插件?

MyBatis 插件运行原理 MyBatis 插件的核心原理基于 Java 的动态代理和责任链模式。下面详细阐述其工作机制&#xff1a; 动态代理 MyBatis 允许你在四大核心对象&#xff08;Executor、StatementHandler、ParameterHandler 和 ResultSetHandler&#xff09;的方法执行前后进…...

Java-servlet(七)详细讲解Servlet注解

Java-servlet&#xff08;七&#xff09;详细讲解Servlet注解 前言一、注解的基本概念二、Override 注解2.1 作用与优势2.2 示例代码 三、Target 注解3.1 定义与用途3.2 示例代码 四、WebServlet 注解4.1 作用4.2 示例代码 五、反射与注解5.1 反射的概念5.2 注解与反射的结合使…...

SQLark 实战 | 如何通过对象名和 DDL 快速搜索数据库对象

在数据库运维管理、应用开发和问题定位时&#xff0c;常常需要搜索相关的数据库对象。本文将为你介绍如何使用 SQLark 的搜索功能&#xff0c;实现对数据库对象的快速查找与定位。 &#x1f449; 前往 SQLark 官网&#xff1a;www.sqlark.com 下载全功能免费版。 通过对象名称搜…...

C/S模型-TCP

下图是基于TCP协议的客户端/服务器程序的一般流程&#xff1a; TCP协议通讯流程 服务器调用socket()、bind()、listen()完成初始化后&#xff0c;调用accept()阻塞等待&#xff0c;处于监听端口的状态&#xff0c;客户端调用socket()初始化后&#xff0c;调用connect()发出SY…...

51c自动驾驶~合集24

我自己的原文哦~ https://blog.51cto.com/whaosoft/11926510 #DriveArena 上海AI Lab又放大招&#xff1a;首个高保真闭环生成仿真平台 仓库链接&#xff1a;https://github.com/PJLab-ADG/DriveArena 项目链接&#xff1a;https://pjlab-adg.github.io/DriveArena/ D…...