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

深度相机识别物体——实现数据集准备与数据集分割

一、数据集准备——Labelimg进行标定

1.安装labelimg——pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

2.建立相应的数据集存放文件夹

3.打开labelimg,直接在命令行输入labelimg即可,并初始化

4.开始标注,设置标注好后自动保存view——Auto Save mode

详细可参考博文:目标检测---利用labelimg制作自己的深度学习目标检测数据集-CSDN博客

二、完成数据集分割,为实现模型训练做准备

1.数据分割:训练集占比70%,测试集占比30%

2.数据分割的详细步骤

        1)确认是否已经建立测试集文件夹,如果没有,则通过python指令建立相应的测试集文件夹

# 训练集的路径
train_p = r"C:\Users\82370\.conda\envs\Ayolo8\Lib\site-packages\ultralytics\dataset\train"
# 验证集的路径
val_p = r"C:\Users\82370\.conda\envs\Ayolo8\Lib\site-packages\ultralytics\dataset\val"
# 图像数据的路径
imgs_p = "images"
# 标签数据的路径
labels_p = "labels"# 创建训练集
# 首先判断训练集的地址是否存在,不存在就创建路径
if not os.path.exists(train_p):  # 指定要创建的目录os.mkdir(train_p)
# 在训练集的地址下添加两个文件夹:images和labels
tp1 = os.path.join(train_p, imgs_p)
tp2 = os.path.join(train_p, labels_p)
# 打印images和labels的存放地址tp1和tp2
print(tp1, tp2)
# 如果没有这两个文件夹,就创建相应文件夹
if not os.path.exists(tp1):  # 指定要创建的目录os.mkdir(tp1)
if not os.path.exists(tp2):  # 指定要创建的目录os.mkdir(tp2)# 创建测试集文件夹与上述训练集文件夹创建方法已知
if not os.path.exists(val_p):os.mkdir(val_p)
vp1 = os.path.join(val_p, imgs_p)
vp2 = os.path.join(val_p, labels_p)
print(vp1, vp2)
if not os.path.exists(vp1):os.mkdir(vp1)
if not os.path.exists(vp2):os.mkdir(vp2)

        2)划分数据集:

        确认训练集占比——将list列表随机排序,并按照比例及逆行分割——判断i是在哪个list里面,并对其图片和标签进行分类复制存储。

        将list列表随机排序并分割的代码

# 此函数用于将full_list按照ratio比例进行切割
def data_split(full_list, ratio):n_total = len(full_list)  # list的长度offset = int(n_total * ratio)  # 总长度乘以相应的比例# 如果按照比例得到的offest小于1,则表明没有训练集,返回空if n_total == 0 or offset < 1:return [], full_list# 对列表进行随机排序random.shuffle(full_list)# 对列表按照offset进行分割,得到两个子列表sublist_1 = full_list[:offset]  # 这里不包括offsetsublist_2 = full_list[offset:]# 返回分割后的两个列表return sublist_1, sublist_2

        判断i在哪个list里面,并实现复制存储        

# 数据集源文件放置的路径
images_dir = "C:/Users/82370/.conda/envs/Ayolo8/Lib/site-packages/ultralytics/dataset/images"
labels_dir = "C:/Users/82370/.conda/envs/Ayolo8/Lib/site-packages/ultralytics/dataset/labels"# 划分数据集,设置数据集数量占比
proportion_ = 0.7 # 训练集占比
# 使用python的os模块来获取指定目录下的所有文件名,并赋值给total_file
total_file = os.listdir(images_dir)
print(total_file)
# 统计所有的已标注文件数量
num = len(total_file)
# 初始化一个空列表
list_ = []
# 将0,num-1的整数添加到list_列表中
for i in range(0, num):list_.append(i)
# 将list随机排序后再分割成两个列表
list1, list2 = data_split(list_, proportion_)for i in range(0, num):# 遍历total_file列表的每一个文件file = total_file[i]# 打印出文件的索引和文件名,即每一个编号对应的图片文件名称print(i, ' - ', total_file[i])# 将文件名进行分割“1.txt”则name的值=1name = file.split('.')[0]# 如果i再列表1中表明该对应的图片需要放到训练集中if i in list1:# 以下两个语句用于获取相应的第i个图片的地址# 将images_dir,file合并成一个路径,并存储到jpg_1这个变量中# 将train_p,images_p,file合并成一个路径,并存储到jpg_2这个变量中jpg_1 = os.path.join(images_dir, file)jpg_2 = os.path.join(train_p, imgs_p, file)# 得到相应的label文件的两个地址txt_1 = os.path.join(labels_dir, name + '.txt')txt_2 = os.path.join(train_p, labels_p, name + '.txt')# 如果有待复制的文件和标签,则进行相应的复制工作if os.path.exists(txt_1) and os.path.exists(jpg_1):shutil.copyfile(jpg_1, jpg_2)  # 将1复制到2中shutil.copyfile(txt_1, txt_2)  # 将1复制到2中# elif==>表示else if的意思# 如果只有txt_1存在,则打印相应的标签地址,否则打印图片的地址elif os.path.exists(txt_1):print(txt_1)  # txt_1存在else:print(jpg_1)  # txt_1不存在# 如果i在列表2中执行以下程序段elif i in list2:jpg_1 = os.path.join(images_dir, file)jpg_2 = os.path.join(val_p, imgs_p, file)txt_1 = os.path.join(labels_dir, name + '.txt')txt_2 = os.path.join(val_p, labels_p, name + '.txt')shutil.copyfile(jpg_1, jpg_2)shutil.copyfile(txt_1, txt_2)

相应的运行结果

相关文章:

深度相机识别物体——实现数据集准备与数据集分割

一、数据集准备——Labelimg进行标定 1.安装labelimg——pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple 2.建立相应的数据集存放文件夹 3.打开labelimg&#xff0c;直接在命令行输入labelimg即可&#xff0c;并初始化 4.开始标注&#xff0c;设置标注好…...

STM32第十一课:ADC采集光照

文章目录 需求一、ADC概要二、实现流程1.开时钟&#xff0c;分频&#xff0c;配IO2.配置ADC工作模式3.配置通道4.复位校准5.数值的获取 三、需求的实现总结 需求 通过ADC转换实现光照亮度的数字化测量&#xff0c;最后将实时测量的结果打印在串口上。 一、ADC概要 ADC全称是A…...

python查找支撑数 青少年编程电子学会python编程等级考试三级真题解析2022年3月

目录 python查找支撑数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python查找支撑数 2022年3月 python编程等级考试级编程题 一、题目要求…...

创建一个快速、高效的网络爬虫:PHP和Selenium示例

随着互联网的不断发展&#xff0c;数据爬取已经成为了许多人的必备技能。而网络爬虫则是实现数据爬取的重要工具之一。 网络爬虫可以自动化地访问网站、获取内容、分析页面并提取所需数据。其中&#xff0c;Selenium是一款非常优秀的网络自动化测试工具&#xff0c;能够模拟真…...

两张图片怎样拼在一起?将两张图片拼在一起的几种方法介绍

两张图片怎样拼在一起&#xff1f;拼接两张图片是一种常见的编辑技巧&#xff0c;能够将不同的视觉元素融合成一个整体&#xff0c;从而创造出更加生动和丰富的图像效果。无论是为了设计创意作品、制作社交媒体内容&#xff0c;还是简单地为个人相册增添趣味&#xff0c;掌握如…...

百日筑基第五天-关于maven

百日筑基第五天-关于maven Maven 是什么 Maven 是一个项目管理工具&#xff0c;它包含了一个项目对象模型&#xff08;Project Object Model&#xff09;&#xff0c;反映在配置中&#xff0c;就是一个 pom.xml 文件。是一组标准集合&#xff0c;一个项目的生命周期、一个依赖…...

【CSS in Depth 2 精译】2.2 em 和 rem + 2.2.1 使用 em 定义字号

当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力 2.1.1 响应式设计的兴起 2.2 em 与 rem ✔️ 2.2.1 使用 em 定义字号 ✔️2.2.2 使用 rem 设置字号 2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 2.…...

C++Primer Plus 第十四章代码重用:14.4.4 数组模板示例和非类型参数

系列文章目录 14.4.4 数组模板示例和非类型参数 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录14.4.4 数组模板示例和非类型参数 14.4.4 数组模板示例和非类型参数 模板常用作容器类&#xff0c;这…...

短视频哪个软件好用?成都柏煜文化传媒有限公司

短视频哪个软件好用&#xff1f;一文带你了解各大平台特色 随着移动互联网的飞速发展&#xff0c;短视频已经成为现代人生活中不可或缺的一部分。市面上涌现出众多短视频平台&#xff0c;它们各具特色&#xff0c;满足了不同用户的需求。那么&#xff0c;短视频哪个软件好用呢…...

金融科技:重塑用户体验,驱动满意度飙升

随着科技的飞速发展&#xff0c;金融科技&#xff08;FinTech&#xff09;已经深入到我们生活的每一个角落&#xff0c;从日常支付到投资理财&#xff0c;再到跨境汇款&#xff0c;它都在悄无声息地改变着我们的金融行为。而在这背后一个不可忽视的驱动力就是金融科技对用户体验…...

JavaScript——算术运算符

目录 任务描述 相关知识 - * / %运算符 递增运算符和递减运算符 编程要求 任务描述 本关任务&#xff1a;给定两个字符串变量&#xff0c;把它们转为数字后相除&#xff0c;拼接被除数、除数和余数为一个新的字符串。 例如&#xff1a;a 为 "5"&#xff0c;b 为…...

备份SQL Server数据库并还原到另一台服务器

我可以将SQL Server数据库备份到另一台服务器吗&#xff1f; 有时您可能希望将 SQL数据库从一台服务器复制到另一台服务器&#xff0c;或者将计算机复制到计算机。可能的场景包括测试、检查一致性、从崩溃的机器恢复数据库、在不同的机器上处理同一个项目等。 是的&#xff0c…...

二刷算法训练营Day45 | 动态规划(7/17)

目录 详细布置&#xff1a; 1. 139. 单词拆分 2. 多重背包理论基础 3. 背包总结 3.1 背包递推公式 3.2 遍历顺序 01背包 完全背包 详细布置&#xff1a; 1. 139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单…...

大模型项目落地时,该如何估算模型所需GPU算力资源

近期公司有大模型项目落地。在前期沟通时,对于算力估算和采购方案许多小伙伴不太了解,在此对相关的算力估算和选择进行一些总结。 不喜欢过程的可以直接 跳到HF上提供的模型计算器 要估算大模型的所需的显卡算力,首先要了解大模型的参数基础知识。 大模型的规模、参数的理解…...

LLM应用开发-RAG系统评估与优化

前言 Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者&#xff0c;在上一篇文章中&#xff0c;我们学习了如何基于LangChain构建RAG应用&#xff0c;并且通过Streamlit将这个RAG应用部署到了阿里云服务器&#xff1b;&am…...

秋招突击——第七弹——Redis快速入门

文章目录 引言Redis是什么 正文对象String字符串面试重点 List面试考点 压缩列表ZipList面试题 Set面试题讲解 Hash面试重点 HASHTABLE底层面试考点 跳表面试重点 ZSET有序链表面试重点 总结 引言 在项目和redis之间&#xff0c;我犹豫了一下&#xff0c;觉得还是了解学习一下…...

软考初级网络管理员__操作系统单选题

1.在Windows资源管理器中&#xff0c;假设已经选定文件&#xff0c;以下关于“复制”操作的叙述中&#xff0c;正确的有()。 按住Ctr键&#xff0c;拖至不同驱动器的图标上 按住AIt键&#xff0c;拖至不同驱动器的图标上 直接拖至不同驱动器的图标上 按住Shift键&#xff0…...

从入门到精通:网络编程套接字(万字详解,小白友好,建议收藏)

一、预备知识 1.1 理解源IP地址和目的IP地址 在网络编程中&#xff0c;IP地址&#xff08;Internet Protocol Address&#xff09;是每个连接到互联网的设备的唯一标识符。IP地址可以分为IPv4和IPv6两种类型。IPv4地址是由32位二进制数表示&#xff0c;通常分为四个八位组&am…...

dledger原理源码分析系列(一)架构,核心组件和rpc组件

简介 dledger是openmessaging的一个组件&#xff0c; raft算法实现&#xff0c;用于分布式日志&#xff0c;本系列分析dledger如何实现raft概念&#xff0c;以及dledger在rocketmq的应用 本系列使用dledger v0.40 本文分析dledger的架构&#xff0c;核心组件&#xff1b;rpc组…...

第七节:如何浅显易懂地理解Spring Boot中的依赖注入(自学Spring boot 3.x的第二天)

大家好&#xff0c;我是网创有方&#xff0c;今天我开始学习spring boot的第一天&#xff0c;一口气写了这么多。 这节通过一个非常浅显易懂的列子来讲解依赖注入。 在Spring Boot 3.x中&#xff0c;依赖注入&#xff08;Dependency Injection, DI&#xff09;是一个核心概念…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...