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

【脚本工具库】随机抽取数据 - 图像和标签对应(附源码)

在数据处理和机器学习任务中,我们经常需要从大规模数据集中随机抽取一定数量的图像及其对应的标签文件,以便进行模型训练、验证或测试。手动操作不仅耗时,而且容易出错。为了解决这个问题,我们可以编写一个Python脚本,使用os、random和shutil库来自动化这个过程。本文将详细介绍如何编写一个随机抽取图像及其对应标签文件的脚本。

准备工作

在开始之前,请确保你的系统上已经安装了Python环境。os、random和shutil是Python标准库,自带无需安装。

脚本源码

以下是完整的Python脚本源码,该脚本可以从指定的源文件夹中随机抽取指定数量的图像文件及其对应的标签文件,并复制到目标文件夹中。

import os
import random
import shutil# 源文件夹路径
source_image_folder = r"D:\A_Data\VOCdevkit\VOC2007\JPEGImages"
source_label_folder = r"D:\A_Data\VOCdevkit\VOC2007\Annotations"
# 目标文件夹路径
destination_image_folder = r"D:\A_Data\VOCdevkit\VOC2007\JPEGImages1"
destination_label_folder = r"D:\A_Data\VOCdevkit\VOC2007\Annotations1"
# 抽取的图像数量
num_images_to_copy = 20# 检查目标文件夹是否存在,如果不存在,则创建它们
os.makedirs(destination_image_folder, exist_ok=True)
os.makedirs(destination_label_folder, exist_ok=True)# 获取源图像文件夹下所有图像文件的路径
image_files = [f for f in os.listdir(source_image_folder) if os.path.isfile(os.path.join(source_image_folder, f))]
# 获取源标签文件夹下所有标签文件的路径
label_files = [f for f in os.listdir(source_label_folder) if os.path.isfile(os.path.join(source_label_folder, f))]# 确保图像文件和标签文件命名相对应
image_files_set = set(os.path.splitext(f)[0] for f in image_files)
label_files_set = set(os.path.splitext(f)[0] for f in label_files)
common_files = list(image_files_set.intersection(label_files_set))# 随机选择要复制的图像文件和标签文件
selected_files = random.sample(common_files, min(num_images_to_copy, len(common_files)))# 复制图像文件和标签文件到目标文件夹
for file in selected_files:# 源图像文件路径和目标图像文件路径source_image_file = os.path.join(source_image_folder, file + os.path.splitext(image_files[0])[1])destination_image_file = os.path.join(destination_image_folder, os.path.basename(source_image_file))# 源标签文件路径和目标标签文件路径source_label_file = os.path.join(source_label_folder, file + os.path.splitext(label_files[0])[1])destination_label_file = os.path.join(destination_label_folder, os.path.basename(source_label_file))# 复制图像文件和标签文件shutil.copyfile(source_image_file, destination_image_file)shutil.copyfile(source_label_file, destination_label_file)print("复制完成!")
使用说明
  1. 修改source_image_foldersource_label_folder为源文件夹路径,destination_image_folderdestination_label_folder为目标文件夹路径。
  2. 运行脚本,程序会随机选择指定数量的图像文件及其对应的标签文件,并复制到目标文件夹中。
  3. 确保图像文件和标签文件命名相对应,否则程序无法正常运行。
总结

这个脚本可以帮助你轻松地随机抽取指定数量的图像及其对应的标签文件,节省了大量的时间和精力。希望这个教程对你有所帮助。如果你有任何问题或建议,欢迎在评论区留言讨论。

感谢阅读!

相关文章:

【脚本工具库】随机抽取数据 - 图像和标签对应(附源码)

在数据处理和机器学习任务中,我们经常需要从大规模数据集中随机抽取一定数量的图像及其对应的标签文件,以便进行模型训练、验证或测试。手动操作不仅耗时,而且容易出错。为了解决这个问题,我们可以编写一个Python脚本,…...

【python】eval函数

1.eval函数的语法及用法 (1)语法:eval(expression) 参数说明: expression:必须为字符串表达式,可为算法,也可为input函数等。 说明:表达式必需是字符串,否则会报错&a…...

实战|记一次java协同办公OA系统源码审计

前言 因为笔者也是代码审计初学者,写得不好的地方请见谅。该文章是以项目实战角度出发,希望能给大家带来启发。 审计过程 审计思路 1、拿到一个项目首先要看它使用了什么技术框架,是使用了ssh框架,还是使用了ssm框架&#xff…...

浅浅谈谈如何利用Javase+多线程+计算机网络的知识做一个爬CSDN阅读量总访问量的程序

目录 我们发现csdn的文章 首先为了印证我们的想法 我们用postman往csdn我们任意一篇文章发起post请求 发送请求 ​编辑获得响应结果 我们发现我们的阅读量上涨 PostRequestSender类 但是我们经过测试发现 定义一个字符串数组 把URL放进去 然后延迟启动 在线程池里面…...

Vscode 中launch.json与tasks.json文件

Vscode 中launch.json与tasks.json文件 launch.json文件基本结构主要属性示例配置PythonCNode.js 常见配置项1. Python2. C3. Node.js 使用示例 tasks.json基本结构主要属性示例配置C 编译任务Python 运行任务Node.js 运行任务 常见配置项使用示例 tasks.json与launch.json文件…...

C#基于SkiaSharp实现印章管理(2)

上一篇文章最后提到基于System.Text.Json能够序列化SKColor对象,但是反序列化时却无法解析本地json数据。换成Newtonsoft.Json进行序列化和反序列化也是类似的问题。   通过百度及查看微软的帮助文档,上述情况下需自定义转换类以处理SKColor类型数据的…...

大二C++期末复习(自用)

一、类 1.定义成员函数 输入年份判断是否是闰年&#xff0c;若是输出年份&#xff1b;若不是&#xff0c;输出NO #include<iostream> #include<cstring> using namespace std; class TDate{private:int month;int day;int year;public:TDate(int y,int m,int d)…...

重大进展!微信支付收款码全场景接入银联网络

据中国银联6月19日消息&#xff0c;近日&#xff0c;银联网络迎来微信支付收款码场景的全面接入&#xff0c;推动条码支付互联互通取得新进展&#xff0c;为境内外广大消费者提供更多支付选择、更好支付体验。 2024年6月&#xff0c;伴随微信支付经营收款码的开放&#xff0c;微…...

msvcr110.dll丢失的解决方法,亲测有效的几种解决方法

最近&#xff0c;我在启动一个程序时&#xff0c;系统突然弹出一个错误提示&#xff0c;告诉我电脑缺失了一个名为msvcr110.dll的文件。这让我感到非常困惑&#xff0c;因为我之前从未遇到过这样的问题。经过一番搜索和尝试&#xff0c;我总结了5种靠谱的解决方法。下面分享给大…...

SUSE Linux 15 sp5上Nginx安装配置升级

1.安装SUSE linux 15 SP5 图形化界面安装很简单&#xff0c;选择最小安装&#xff0c;安装好后&#xff0c;使用vim编辑配置文件&#xff0c;结果提示"bash: vim: command not found"。 最简安装把一些常用命令都整没有了&#xff0c;于是又重新选择了Server Applica…...

突破Web3红海,DePIN如何构建创新生态系统?

撰文&#xff1a;TinTinLand 本文来源香港Web3媒体Techub News专栏作者TinTinLand 2023 年 DePIN 赛道的火热成为 Web3 行业的重点关注方向&#xff0c;当前如何以可扩展、去中心化、安全方式推动 DePIN 赛道赋能下的 AI 版图建设&#xff0c;寻找更多 Web3 行业创新机遇成为…...

裸机与操做系统区别(RTOS)

声明&#xff1a;该系列笔记是参考韦东山老师的视频&#xff0c;链接放在最后&#xff01;&#xff01;&#xff01; rtos&#xff1a;这种系统只实现了内核功能&#xff0c;比较简单&#xff0c;在嵌入式开发中&#xff0c;某些情况下我们只需要多任务&#xff0c;而不需要文件…...

详解 ClickHouse 的分片集群

一、简介 分片功能依赖于 Distributed 表引擎&#xff0c;Distributed 表引擎本身不存储数据&#xff0c;有点类似于 MyCat 之于 MySql&#xff0c;成为一种中间件&#xff0c;通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据 ClickHouse 进行分片集群的…...

AI问答-医疗:什么是“手术报台”

手术报台并不是传统意义上的医疗工具或设备&#xff0c;而是一个与手术耗材追溯管理相关的系统或工具。以下是对手术报台的详细解释&#xff1a; 一、定义与功能 手术报台系统&#xff0c;如医迈德手术报台系统&#xff0c;是一款面向医院跟台人员的微信小程序。 它通过手术耗…...

S-Clustr(影子集群)V3 高并发,去中心化,多节点控制

S-Clustr 项目地址:https://github.com/MartinxMax/S-Clustr/releases/tag/S-Clustr-V3.0 Maptnh Не ограничивайте свои действия виртуальным миром. GitHub: Maptnh Jay Steinberg Man kann die Menschen, die man hasst, in d…...

支持WebDav的网盘infiniCloud(静读天下,Zotero 等挂载)

前言 WebDav是一种基于HTTP的协议&#xff0c;允许用户在Web上直接编辑和管理文件&#xff0c;如复制、移动、删除等。 尽管有一些网盘支持WebDav&#xff0c;但其中大部分都有较多的使用限制。这些限制可能包括&#xff1a;上传文件的大小限制、存储空间的限制、下载速度的限…...

Linux命令行导出MySQL数据库备份并压缩

Linux命令行导出MySQL数据库备份并压缩 导出SQL&#xff1a; 如果使用的是 MySQL 或者 MariaDB 可以使用mysqldump工具进行数据备份的导出&#xff1b; 基本命令&#xff1a; mysqldump -u用户名 -p密码 数据库名称 > 要导出的文件名.sql替换掉你实际的数据库“用户名”…...

二叉树的广度优先搜索(层次遍历)

目录 定义 层序遍历的数据结构 实现过程简述 具体代码 定义 层序遍历就是从左到右一层一层地遍历二叉树。 层序遍历的数据结构 层序遍历需要借用一个辅助数据结构实现&#xff0c;由于队列具有先进先出的特性&#xff0c;符合一层一层遍历的逻辑&#xff0c;而栈先进后出…...

AU音频重新混合音频,在 Adobe Audition 中无缝延长背景音乐,无缝缩短BGM

导入音频&#xff0c;选中音频&#xff0c;并且点 New Multitrack Session 的图标 设计文件名和存储路径&#xff0c;然后点 OK 点 Essential Sound 面板点 Music &#xff08;如果没有这个面板 点菜单栏 Windows > Essential Sound 调出来&#xff09; 点 Duration 展…...

11-Django项目--Ajax请求二

目录 模版: demo_list.html perform_list.html 数据库操作: 路由: 视图函数: Ajax_data.py perform.py 模版: demo_list.html {% extends "index/index.html" %} {% load static %} # 未实现修改,删除操作{% block content %}<div class"container…...

2026年国内GEO优化服务商盘点:6家主流选择的实际情况

说明&#xff1a; 本文盘点基于各服务商官网、公开媒体报道、可查询的工商信息整理&#xff0c;所有"案例数据"均来自服务商自我披露。GEO行业整体处于早期阶段&#xff0c;市场上自我标榜"行业第一""全球最强"的说法普遍存在&#xff0c;本文尽…...

基于RK3568的边缘AIoT实战:多模态行为识别系统设计与优化

1. 项目概述&#xff1a;从赛题到全国一等奖的实战复盘去年&#xff0c;我们团队抱着“试试看”的心态参加了瑞芯微与飞凌嵌入式联合举办的全国大学生嵌入式设计大赛&#xff0c;最终捧回了全国一等奖的奖杯。现在比赛尘埃落定&#xff0c;我想把整个项目从破题、选型、开发到最…...

实在Agent如何破解成本分析报告编制耗时耗力与数据滞后?企业架构师的避坑指南

摘要&#xff1a;在2026年的今天&#xff0c;尽管AI技术已深度普及&#xff0c;但许多企业的财务与运营部门仍深陷“数据泥潭”。传统的成本分析报告编制依赖于大量的人工导数、Excel汇总及跨系统搬运&#xff0c;导致报告产出即滞后&#xff0c;严重误导决策。作为一名深耕行业…...

Adobe MAX 2024未公开彩蛋:Sora 2本地推理模块如何通过Premiere Ultra引擎实现离线实时预览(含CUDA核心绑定指南)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Adobe MAX 2024未公开彩蛋的发现与验证 在 Adobe MAX 2024 主会场演示视频的第 47 分 23 秒处&#xff0c;开发者无意间触发了隐藏的调试面板——该面板仅在启用特定环境变量且运行于 macOS Sonoma Ap…...

AI智能体信用评分系统:构建可评估、可管理的多智能体协作框架

1. 项目概述&#xff1a;一个为AI智能体设计的信用评分系统最近在折腾AI智能体&#xff08;Agent&#xff09;的落地应用时&#xff0c;我遇到了一个挺有意思的问题&#xff1a;当多个智能体协同工作&#xff0c;或者一个智能体需要调用外部工具、API时&#xff0c;如何评估和追…...

国产AI模型平台崛起:模力方舟如何破解HuggingFace的本土化困境

在中国AI产业加速落地的今天&#xff0c;模型平台的选择正成为开发者与企业面临的关键决策。全球知名的HuggingFace平台虽然在模型数量上占据优势&#xff0c;但在本土化适配、国产算力支持、工程化落地等方面正面临严峻挑战。与此同时&#xff0c;依托Gitee开源生态成长起来的…...

【工具分享】9款漏扫工具来了!(内附学习笔记)

【工具分享】9款漏扫工具来了&#xff01;&#xff08;内附学习笔记&#xff09; 以下所有这些工具都是捆绑在一起的Linux发行版&#xff0c;如Kali Linux或BackBox&#xff0c;所以我会建议您安装一个合适的Linux黑客系统&#xff0c;尤其是因为这些黑客工具可以&#xff08;自…...

2024年第二季度:10款必装的Hyper终端增强插件终极推荐

2024年第二季度&#xff1a;10款必装的Hyper终端增强插件终极推荐 【免费下载链接】awesome-hyper &#x1f5a5; Delightful Hyper plugins, themes, and resources 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-hyper Hyper终端作为一款基于Electron构建的现…...

3种方法解决Windows外接显示器亮度控制难题:Twinkle Tray技术深度解析

3种方法解决Windows外接显示器亮度控制难题&#xff1a;Twinkle Tray技术深度解析 【免费下载链接】twinkle-tray Easily manage the brightness of your monitors in Windows from the system tray 项目地址: https://gitcode.com/gh_mirrors/tw/twinkle-tray 对于Wind…...

ACID [Atomicity, Consistency, Isolation, Durability]

ACID [Atomicity, Consistency, Isolation, Durability] 原子性、一致性、隔离性、持久性package further.zwf.acid;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException;/*** MySQL 事务示例&am…...