图像分类数据集划分(创建ImageNet格式的数据集)
原始数据文件夹如下:
├──data├── 0 类别1├── 1 类别2制作数据集格式如下所示:
├──datasets├── meta│ ├── test.txt # 测试数据集的标注文件│ ├── train.txt # 训练数据集的标注文件│ └── val.txt # 验证数据集的标注文件├── train│ ├── 0│ ├── 1│ ├── test│ ├── 0│ ├── 1│└── val│ ├── 0│ ├── 1划分数据集比例,训练集:验证集:测试集=0.6:0.2:0.2
划分数据集代码如下:
import os
import shutil
import random
from tqdm import tqdm# 定义原始数据文件夹和目标数据集文件夹
data_dir = 'data'
target_dir = 'datasets'# 定义数据集划分比例
train_split_ratio = 0.6
val_split_ratio = 0.2
test_split_ratio = 0.2# 创建目标数据集文件夹及其子目录结构
os.makedirs(target_dir, exist_ok=True)
os.makedirs(os.path.join(target_dir, 'meta'), exist_ok=True)
os.makedirs(os.path.join(target_dir, 'train'), exist_ok=True)
os.makedirs(os.path.join(target_dir, 'test'), exist_ok=True)
os.makedirs(os.path.join(target_dir, 'val'), exist_ok=True)# 获取原始数据文件夹下的子目录列表
categories = os.listdir(data_dir)# 遍历每个子目录
for category in categories:# 获取该类别下的所有文件files = os.listdir(os.path.join(data_dir, category))# 随机打乱文件顺序random.shuffle(files)# 计算划分数据集的索引total_files = len(files)train_split = int(train_split_ratio * total_files)val_split = int(val_split_ratio * total_files)# 划分数据集并复制到目标文件夹,使用tqdm添加进度条for file in tqdm(files[:train_split], desc=f'Copying train data for {category}'):src = os.path.join(data_dir, category, file)dst = os.path.join(target_dir, 'train', category)os.makedirs(dst, exist_ok=True)shutil.copy(src, os.path.join(dst, file))for file in tqdm(files[train_split:train_split + val_split], desc=f'Copying validation data for {category}'):src = os.path.join(data_dir, category, file)dst = os.path.join(target_dir, 'val', category)os.makedirs(dst, exist_ok=True)shutil.copy(src, os.path.join(dst, file))for file in tqdm(files[train_split + val_split:], desc=f'Copying test data for {category}'):src = os.path.join(data_dir, category, file)dst = os.path.join(target_dir, 'test', category)os.makedirs(dst, exist_ok=True)shutil.copy(src, os.path.join(dst, file))# 创建标注文件(train.txt、val.txt、test.txt)
with open(os.path.join(target_dir, 'meta', 'train.txt'), 'w') as train_txt:for category in categories:train_files = os.listdir(os.path.join(target_dir, 'train', category))for file in train_files:train_txt.write(f'{os.path.join("train", category, file)} {category}\n')with open(os.path.join(target_dir, 'meta', 'val.txt'), 'w') as val_txt:for category in categories:val_files = os.listdir(os.path.join(target_dir, 'val', category))for file in val_files:val_txt.write(f'{os.path.join("val", category, file)} {category}\n')with open(os.path.join(target_dir, 'meta', 'test.txt'), 'w') as test_txt:for category in categories:test_files = os.listdir(os.path.join(target_dir, 'test', category))for file in test_files:test_txt.write(f'{os.path.join("test", category, file)} {category}\n')print("数据集划分完成!")
相关文章:
图像分类数据集划分(创建ImageNet格式的数据集)
原始数据文件夹如下: ├──data├── 0 类别1├── 1 类别2制作数据集格式如下所示: ├──datasets├── meta│ ├── test.txt # 测试数据集的标注文件│ ├── train.txt # 训练数据集的标注文件│ └── val.txt # 验证…...
ArcGIS Engine:报错无法嵌入互操作类型“ESRI.ArcGIS.Geometry.EnvelopeClass”。请改用适用的接口。
此错误是由于尝试直接实例化ArcGIS COM组件的某些互操作类引起的。这在.NET Framework 4及更高版本中是不被推荐的。 为了解决此问题,你需要确保在工程的引用中将ArcGIS的互操作类型设置为“不嵌入”。 按照以下步骤操作: 在解决方案资源管理器中找到…...
核货宝:服装店收银系统如何选择?收银系统选购指南!
对于各行各业而言,收银系统都是必备的工具。特别是对于像服装店这样的零售门店来说,选择一套适合的收银系统尤为重要。在选择收银系统时,有一些关键的技巧需要注意,以达到软硬件合理搭配、节省开支的目的。下面将分享四个选购服装…...
GB/T 7134-2008 浇筑型工业有机玻璃板材检测
非改性浇筑PMMA板材是指甲基丙烯酸甲酯均聚物板材,或者甲基丙烯酸甲酯与丙烯酸酯类或甲基丙烯酸酯类单体的共聚物板材,通过适当的引发剂本体聚合生产。 GB/T 7134-2008浇筑型工业有机玻璃板材测试项目: 测试项目 测试方法 拉伸强度 GB/T …...
数据采集平台(二)
5. 安装Kafka 5.1 基础架构 为方便扩展,并提高吞吐量,一个topic分为多个partition配合分区的设计,提出消费者组的概念,组内每个消费者并行消费为提高可用性,为每个partition增加若干副本,类似NameNode HA…...
Nginx + PHP 异常排查,open_basedir 异常处理
新上一个网站,通过域名访问失败,排查方法如下: 开启异常日志 开启域名下,nginx的异常日志,并查看日志 tail -f /var/log/nginx/nginx.localhost.error.log开启php的异常日志,该配置位于php.ini文件下 …...
Linux免密登录
目标: 192.168.233.31 ton-pc-003 192.168.233.32 ton-pc-004 在ton-pc-004(以下简称004)免密登录ton-pc-003(以下简称003) 具体流程和说明: 1、在004(客户机)中生成秘钥对 ssh…...
迷宫 蓝桥杯
问题描述 这天, 小明在玩迷宫游戏。 迷宫为一个 nn 的网格图, 小明可以在格子中移动, 左上角为 (1,1), 右下角 (n, n)为终点。迷宫中除了可以向上下左右四个方向移动一格以外, 还有 m 个双向传送门可以使用, 传送门可以连接两个任意格子。 假如小明处在格子(x1,y1), 同时有…...
25 mysql like 是否使用索引
前言 这里主要是 探究一下 explain $sql 中各个 type 诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断 这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录 以及 相关的差异 此系列文章建议从 mysql const 查询 开始看 测试表结构…...
Android---Class 对象在执行引擎中的初始化过程
一个 class 文件被加载到内存中的步骤如下图所示: 装载 装载是指 Java 虚拟机查找 .class 文件并生成字节流,然后根据字节流创建 java.lang.Class 对象的过程。 1. ClassLoader 通过一个类的全限定名(包名类名)来查找 .class 文件…...
Altium Designer实用系列(二)----PCB绘图小技巧
一、技巧总结 1.1 丝印大小 在导入PCB之后,元器件的丝印一般都是strock font,个人感觉比较大,也不美观,但是一个个修改成true type又比较麻烦。简便方法是使用相似查找全部修改: 此时会选中所有stroke 类型的丝印ÿ…...
threejs-开发入门与调试设置
近年来web得到了快速的发展。随着HTML5的普及,网页的表现能力越来越强大。网页上已经可以做出很多复杂的动画,精美的效果。还能通过WebGL在网页中绘制高性能的3D图形。 学习资料来源:https://www.three3d.cn/threejs/01-%E5%BC%80%E5%8F%91%E…...
win11安装双系统Ubuntu的坎坷记录
之前一直装的都是在一个硬盘中,这是是两块盘。 我的电脑是惠普暗影精灵8Pro 一 安装前的准备工作 1.1 记得先关闭,Bitlocker 输入wins,搜索框输入:设备加密设置 1.2 BIOS设置 (惠普这电脑是开机时按 F10࿰…...
关于docker的xuexi
概念了解 1.镜像: 类似于类与实例关系中的类,也类似于系统镜像的概念,对于前端而言,镜像就是包含了代码运行所需要的一切产物、依赖、配置等。这样的话,可以保证每次程序运行的环境一致。构建镜像,一般都…...
Python接口自动化测试实战详解,你想要的全都有
前言 接口自动化测试是当前软件开发中最重要的环节之一,可以提高代码质量、加速开发周期、减少手工测试成本等优点。Python语言在接口自动化测试方面应用广泛,因为它具有简单易学、开发效率高、库丰富等特点。 一、接口自动化测试概述 接口自动化测试…...
SparkSQL 外部数据源
1.简介 1.1 多数据源支持 Spark 支持以下六个核心数据源,同时 Spark 社区还提供了多达上百种数据源的读取方式,能够满足绝大部分使用场景。 - CSV - JSON - Parquet - ORC - JDBC/ODBC connections - Plain-text files 1.2 读数据格式 所有读取 API 遵循以下调用格式: // …...
leetcode做题笔记167. 两数之和 II - 输入有序数组
给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 < index1 < index2 < numbers…...
[ZJCTF 2019]NiZhuanSiWei - 伪协议+文件包含+反序列化
[ZJCTF 2019]NiZhuanSiWei 1 解题流程1.1 分析1.2 解题 题目源码: <?php $text $_GET["text"]; $file $_GET["file"]; $password $_GET["password"]; if(isset($text)&&(file_get_contents($text,r)"welcome t…...
如何提升和扩展 PostgreSQL — 从共享缓冲区到内存数据网格
利用共享缓存和操作系统缓存利用 RAM Postgres 是一个基于磁盘的数据库,即使您的整个架构是围绕磁盘访问设计的,利用 RAM 也很重要。如果按照人类规模的延迟来判断,这可以将延迟从几天缩短到几分钟(图 1)。只需看一下…...
Elasticsearch:使用 huggingface 模型的 NLP 文本搜索
本博文使用由 Elastic 博客 title 组成的简单数据集在 Elasticsearch 中实现 NLP 文本搜索。你将为博客文档建立索引,并使用摄取管道生成文本嵌入。 通过使用 NLP 模型,你将使用自然语言在博客文档上查询文档。 安装 Elasticsearch 及 Kibana 如果你还没…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
