机器学习复习(9)——自定义dataset
目录
第一种dataset(文件夹名即为标签)
用于将格式(1)转换为格式(2)
第二种dataset(标签在labels文件夹下的对应的txt文件里面)
第一种dataset(文件夹名即为标签)
数据组织格式(1)
--data
----train
------class1(文件夹名字即为标签)
--------image1.jpg
------class2
dataset
from torch.utils.data import Dataset
from PIL import Image
class Mydata(Dataset):def __init__(self,root_dir,label_dir):self.root_dir = root_dirself.label_dir = label_dirself.path = os.path.join(self.root_dir,self.label_dir)self.img_path= os.listdir(self.path)def __getitem__(self, idx):img_name = self.img_path[idx]img_item_path = os.path.join(self.path,img_name)img = Image.open(img_item_path)label =self.label_dirreturn img,labeldef __len__(self):return len(self.img_path)root_dir="../PATH/TO/train"
class1_label_dir="class1"
class2_label_dir="class2"class1_data =Mydata(root_dir,class1_label_dir)
class2_data =Mydata(root_dir,class2_label_dir) train_dataset= class1_data+class2_data
用于将格式(1)转换为格式(2)
数据集格式转换
import os
root_dir = 'root_path'
target_dir = 'target_image'
img_path = os.listdir(os.path.join(root_dir, target_dir))
label = target_dir.split('_')[0]
out_dir = 'ants_label'
for i in img_path:file_name = i.split('.jpg')[0]with open(os.path.join(root_dir, out_dir,"{}.txt".format(file_name)),'w') as f:f.write(label)
第二种dataset(标签在labels文件夹下的对应的txt文件里面)
数据组织格式(2)
--data
----train
------images
--------01.jpg
------labels
--------01.txt (txt里面的内容是label内容:目标检测,分类等)
# 导入PyTorch的数据集工具和其他必要的库
from torch.utils.data import Dataset
import os
from PIL import Image# 自定义的数据集类,继承自torch.utils.data.Dataset
class Mydate(Dataset):def __init__(self, dir_root, dir_image, dir_label):# 初始化函数,设置数据集的根目录、图像目录和标签目录self.root = dir_root # 数据集的根目录self.image_dir = dir_image # 存放图像的子目录self.image_path = os.path.join(self.root, self.image_dir) # 图像的完整路径self.label_dir = dir_label # 存放标签的子目录self.label_path = os.path.join(self.root, self.label_dir) # 标签的完整路径# 获取图像文件列表和标签文件列表self.image_list = os.listdir(os.path.join(dir_root, dir_image)) # 根据图像目录列出所有图像文件self.label_list = os.listdir(os.path.join(dir_root, dir_label)) # 根据标签目录列出所有标签文件def __getitem__(self, idx):# 通过索引获取数据集中的单个样本,包括图像和标签image_name = self.image_list[idx] # 根据索引获取图像文件名image_path = os.path.join(self.image_path, image_name) # 构造图像的完整路径label_name = self.label_list[idx] # 根据索引获取标签文件名label_path = os.path.join(self.label_path, label_name) # 构造标签的完整路径img = Image.open(image_path).convert('RGB') # 打开图像文件并转换为RGB格式# 读取标签文件with open(label_path, 'r') as f:label = f.read().strip() # 读取标签内容,并去除可能的空白字符return img, labeldef __len__(self):# 返回数据集中样本的总数return len(self.image_list) # 由于图像列表的长度代表了数据集大小,直接返回其长度##############测试代码################
if __name__ == "__main__":# 指定数据集的根目录、图像目录和标签目录dir_root = "root\\path\\train"dir_image = "images"dir_label = "labels"test_data = Mydate(dir_root, dir_image, dir_label) # 创建数据集实例idx = 0 # 指定要获取的样本索引img, label = test_data[idx] # 获取指定索引的样本print(label) # 打印样本的标签
相关文章:
机器学习复习(9)——自定义dataset
目录 第一种dataset(文件夹名即为标签) 用于将格式(1)转换为格式(2) 第二种dataset(标签在labels文件夹下的对应的txt文件里面) 第一种dataset(文件夹名即为标签) 数据组织格式(1) --data ----train …...
【Redis】缓存穿透
问题发生背景:客户端请求的数据再缓存中和数据库中都不存在。 导致的问题:缓存永远不会生效,这些请求都会去请求数据库—导致数据库压力增大。 解决方案: 1.缓存空对象 在Redis中缓存空对象,告诉客户端数据库中没有该值…...
编程出现bug?怎么用Python打印异常
在 Python 编程中,异常是指程序执行过程中出现的错误或异常情况。当程序遇到异常时,为了更好地调试和定位问题,我们需要打印异常信息。本文将详细介绍如何在 Python 中打印异常,并提供一些示例和注意事项。 一、try-except 语句捕…...
P1958 上学路线
题目传送门:P1958 上学路线 一个DFS求迷宫的的题。 详细在代码里: #include <bits/stdc.h>using namespace std; int n,m,a[20][20],t,x,y,ans0; int dx[4]{0,1}; int dy[4]{1,0}; int flag[105][105]{0}; inline void dfs(register int x,regis…...
Android14之HIDL报错:Invalid sparse file format at header magic(一百九十六)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
旭日x3派目标跟随小车
目标跟随小车(yolov5、安全帽识别) 前言最终结果接线实现 前言 上板运行的后处理使用cython封装了,由于每个版本的yolo输出的形状不一样,这里只能用yolov5-6.2这个版本。 ①训练自己的模型并部署于旭日x3派参考: http…...
金潮实业邀您参观2024长三角快递物流展览会
展会介绍 本届展会致力于全面展示快递物流上下游领域的创新解决方案,涵盖快递物流供应链、智能装备、AGV机器人与无人搬运、自动识别、智慧仓储、智慧物流、无人配送、新能物流车及商用车、绿色包装、冷链物流等各个环节,为促进行业合作共融,…...
【超细完整版】C# WebService 通过URL生成WSDL文件和DLL文件 【生成篇】
先学生成,再看调用哦 【超细完整版】C# 获取WebService所有方法并调用 【调用篇】 目的 支持通过web url (自适应“?wsdl”的有无) 生成.wsdl文件 和 .dll文件 实现 将通过一个类的三部分来实现这些功能 获取url中的ClassName (GetClassNameFromUrl&a…...
申请公派访问学者难不难?
申请公派访问学者,对许多人来说是一项具有挑战性的任务。这需要充分的准备和计划,以确保申请能够顺利进行并最终获得批准。下面将探讨一些关于申请公派访问学者的问题以及应对策略。 首先,申请公派访问学者需要有一个明确的研究计划或合作意向…...
关于汽车中网改装需要报备吗?(第二天)
车联网改造需要申报吗? 今天2022年10月20日,小编就给大家介绍一下车联网改装是否需要申报的相关知识。 让我们来看看。 汽车格栅改装无需申报。 这种年检可以直接通过。 您不必担心,因为汽车格栅对于实车的外观来说并不陌生,因此…...
面试官:对于 Java 中多态的理解是什么?
面试官:对于 Java 中多态的理解是什么? 题目 面试官:对于 Java 中多态的理解是什么? 推荐解析 1.父类的引用指向子类的对象 子类重写父类的方法:子类可以继承父类的方法,并对其进行重写。当通过父类的…...
JUC-1M/75±5°超小型密封温度继电器 体积小、重量轻、控温精度高 JOSEF约瑟
JUC系列温度继电器 JUC-1M型超小型密封温度继电器 JUC-2M型超小型密封温度继电器 继电器JUC-027M/2531H-III-G温度继电器 JUC-1M 10C常开温度继电器 JUC-1M 105C温度继电器 用途 小型温控开关系接触感应式密封温度继电器,具有体积小、重量轻、控温精度高等特点&…...
filebeat 配置
主要就是证书的配置 ca_trusted_fingerprint: 产生方式 openssl x509 -fingerprint -sha256 -in /etc/elasticsearch/certs/http_ca.crt 产生的结果 SHA256 Fingerprint 中的冒号 替换掉就是我们想要的结果 ssl: enabled: true ca_trusted_fingerprint: "…...
Qt教程 — 3.5 深入了解Qt 控件:Display Widgets部件(1)
目录 1 Display Widgets简介 2 如何使用Display Widgets部件 2.1 QLabel组件-显示图像或文本 2.2 QCalendarWidget组件-日历简单的使用 2.3 QLCDNumber组件-控件作时钟的显示 2.4 QProgressBar组件-模拟手机电池充电 2.5 QFrame组件-绘制水平/垂直线 Display Widgets将分…...
网络安全框架和云安全参考架构介绍
目录 一、网络安全框架 1.1 概述 1.2 IATF框架 1.2.1 框架来源 1.2.2 框架结构图 1.2.3 框架内容 1.2.3.1 人(People) 1.2.3.2 技术(Technology) 1.2.3.3 操作(Operation) 1.3 NIST网络安全框架 …...
360企业安全浏览器兼容模式显示异常某个内容不显示 偶发现象 本地无法复现情况js
360企业安全浏览器兼容模式显示异常 ,现象测试环境频发 ,本地连测试无法复现,线上反馈问题。 出现问题的电脑为windows且使用360企业安全浏览器打开兼容模式可复现 复现过程: 不直接点击超链接跳转页面 ,登录后直接通…...
JVM常见启动参数
目录 内存参数设置 垃圾收集 内存溢出 其他杂项 总结 java虚拟机(JVM)的启动参数可以用来调整其行为、性能和资源分配。以下是一些常见的JVM启动参数: 内存参数设置 初始化堆内存以满足应用程序需求是最常见的与性能相关的实践之一。 …...
单元测试、集成测试、系统测试区别
一、测方法不同 1、单元测试属于白盒测试范畴。 2、集成测试属于灰盒测试范畴。 3、系统测试属于黑盒测试范畴。 二、考察范围不同 1、单元测试主要测试单元内部的数据结构、逻辑控制、异常处理等。exception handling 2、集成测试主要测试模块之间的接口和接ロ数据传递关…...
NIVision-相机图像采集
应用场景 上位机与工业相机通讯,控制相机抓取图像。 工业相机的通讯接口大多为USB口或网口。 USB口则直接将通讯线缆插入上位机USB端口,打开MAX中设备与接口一栏可以看到电脑给相机分配的资源名称;网口则需要将网线连接相机和上位机…...
【vue-小知识】var、let 和 const之间的区别
文章目录 结论1、重复定义变量名var:允许重复定义变量名let和const:不可以重复定义变量名 2、修改值var:允许修改值let:允许修改值const:不允许修改值,会报错 3、变量提升var : 支持变量提升let和const&…...
Rydberg原子量子门实现原理与优化技术
1. Rydberg原子平台中的量子门实现基础1.1 Rydberg原子特性与量子计算优势Rydberg原子是指外层电子被激发到高主量子数能级的原子态,这类原子具有三个关键特性使其成为量子计算的理想平台:强偶极-偶极相互作用:当两个原子同时处于Rydberg态时…...
用数字逻辑门复刻柏林钟:从二进制编码到硬件实现
1. 项目概述:用数字电路复刻“柏林钟”作为一个在柏林长大的孩子,我从小就对库达姆大街上的那座“柏林钟”着迷。它不像传统时钟那样用指针或数字告诉你时间,而是通过几排不同颜色的发光方块,以一种近乎艺术的方式呈现时间。这种独…...
PlayAI语音合成质量到底如何?12款竞品横向对比+5项MOS/LSD/STOI硬指标揭榜
更多请点击: https://kaifayun.com 第一章:PlayAI语音合成质量评测报告 PlayAI 是一款面向开发者与内容创作者的实时语音合成(TTS)服务,支持多语种、多音色及情感可控输出。本报告基于客观可复现的评测流程࿰…...
FeHelper前端助手:30+开发工具集,让你的浏览器变身效率神器
FeHelper前端助手:30开发工具集,让你的浏览器变身效率神器 【免费下载链接】FeHelper 😍FeHelper--Web前端助手(Awesome!Chrome & Firefox & MS-Edge Extension, All in one Toolbox!) 项目地址:…...
中兴光猫终极管理指南:解锁工厂模式与Telnet权限的实战教程
中兴光猫终极管理指南:解锁工厂模式与Telnet权限的实战教程 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 掌握中兴光猫的设备管理和权限获取能力是网络管理员和技术爱好者…...
WarcraftHelper:魔兽争霸III现代兼容性问题的终极解决方案指南
WarcraftHelper:魔兽争霸III现代兼容性问题的终极解决方案指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸III作为经典即时战…...
Sora 2 MOV导出画质崩坏真相:HDR10元数据丢失、BT.2020色域截断、帧率标志位误写——3大隐性缺陷紧急修复方案
更多请点击: https://intelliparadigm.com 第一章:Sora 2 MOV导出画质崩坏的系统性认知 Sora 2 在生成高保真视频后,导出为 MOV 格式时频繁出现色度抽样失真、动态范围压缩、帧间伪影加剧等现象,其本质并非单一环节失效ÿ…...
谷氨酸发酵过程的软测量建模【附模型】
✨ 长期致力于软测量、谷氨酸发酵、动力学模型、支持向量机、高斯过程、变量选择、异常状态研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)多阶段高斯…...
如何快速掌握MoveIt2:面向ROS 2开发者的工业机器人运动规划完整指南
如何快速掌握MoveIt2:面向ROS 2开发者的工业机器人运动规划完整指南 【免费下载链接】moveit2 :robot: MoveIt for ROS 2 项目地址: https://gitcode.com/gh_mirrors/mo/moveit2 想要为你的机器人实现智能运动规划吗?MoveIt2作为ROS 2生态中最强大…...
CSharpVerbalExpressions常见问题解答:解决开发者遇到的10个典型挑战
CSharpVerbalExpressions常见问题解答:解决开发者遇到的10个典型挑战 【免费下载链接】CSharpVerbalExpressions 项目地址: https://gitcode.com/gh_mirrors/cs/CSharpVerbalExpressions CSharpVerbalExpressions是一个强大的C#库,它通过类自然语…...
