机器学习复习(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)  # 打印样本的标签

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/754936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

续上篇 qiankun 微前端配置

上篇文章地址:微前端框架 qiankun 配置使用【基于 vue/react脚手架创建项目 】-CSDN博客 主应用: src/main.js 配置: import Vue from vue import App from ./App.vue import router from ./router import { registerMicroApps, start } …

【小程序开发】蓝牙设备API——单点蓝牙应用程序编程接口整理(二)

ty.device.getBLEDeviceRSSI 获取 BLE 外设的信号 需引入DeviceKit,且在>1.2.6版本才可使用 参数 Object object 属性类型默认值必填说明deviceIdstring是设备模型 deviceId 设备 Idcompletefunction否接口调用结束的回调函数(调用成功、失败都会执…

jar读取目录配置、打包jar后无法获取目录下的配置

jar读取目录配置、打包jar后无法获取目录下的配置 jar读取目录配置、打包jar后无法获取目录下的配置。java打成jar包后获取不到配置文件路径。解决项目打成jar包上线无法读取配置文件。打包jar后无法读取resource下的配置文件 场景 需要读取 src/main/resources/mapper下的所…

大机中的汇编语言该怎么学

提起程序开发,就不得不说合久必分,分久必合,反成各个程序段之间都有这个关系,而多个程序又组成一个功能组,可以完成一项业务,ASM比JCL难很多,因为它涉及到地址和业务。 一 ASM 的难度如何 比方…

UGUI界面性能优化3-合理规划界面层级结构

在Unity中,UGUI(Unity GUI)是一种用于创建用户界面的工具。合理规划界面层级结构对于开发一个可维护和易于使用的界面非常重要。以下是一种合理的UGUI界面层级结构规划方式: Canvas(画布):Canva…

【python】flask框架的生命周期,多种查询参数的获取方式

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

python图形化编程pygame游戏模块

文章目录: 一:语句使用模板 基本框架 1.安装Pygame 2.创建一个主窗口display 3.图像渲染与动画 4.鼠标事件mouse 5.声音和音乐sound 6.设置屏幕背景颜色fill 7.添加文字font 8.绘制图形draw 8.1 绘制多边形polygon 8.2 绘制直线line 8.3 绘…

探索编程迷宫:选择你的职业赛道

在现代科技的浪潮中,程序员的职业赛道就像是一座迷宫,充满着前端的美丽花园,后端的黑暗洞穴,以及数据科学的神秘密室。这个迷宫中,每一条通道都充满了挑战和机遇,而每一个行走其中的人都在寻找着属于自己的…

LM studio使用gemmar聊天小试

通过LM studio可以方便的使用各种模型,使用LM提供的chat界面或者是使用python代码。 试试代码 在windows下使用python简单一试,例子直接复制LM界面上的代码: 用pip安装 openai包在LM界面 Start Server 需要安装 openai包。 本地电脑是I7…

C++ GUI库FLTK的基本使用

文章目录 1. Ubuntu下FLTK编译和使用2. Windows下FLTK编译使用 1. Ubuntu下FLTK编译和使用 编译源码 安装依赖 sudo apt install libx11-dev sudo apt install cmake make编译 # 进入源码目录fltk-1.3.9 mkdir build cd build cmake .. make库文件位于build/lib中 准备头文件#…

【如何关闭Windows自动更新的6种方法】

关闭Windows自动更新的6种方法 1. 前言2. 方法1:使用本地组策略编辑器(适用于Windows 10 Pro和Enterprise版本)3. 方法2:使用注册表编辑器4. 方法3:服务管理5. 方法4:使用控制面板(仅适用于Wind…

【Golang星辰图】Go语言驾驭物联网:探索MQTT、CoAP、GPIO、串口、TLS和UDP的实现

打通物联网通信路:Go语言实现MQTT、CoAP、GPIO、串口、TLS和UDP协议详解 前言 物联网(IoT)的快速发展给设备间的通信提出了新的需求。本文将介绍使用Go语言实现物联网常用通信协议的相关库,包括MQTT、CoAP、GPIO、串口、TLS和UD…

服务器时间不准确的风险

1.误导系统记录:服务器时间不准确会误导系统记录文件的创建时间,导致文件的顺序发生变化。这对于需要按照时间顺序处理文件的系统来说,可能会引发严重的问题。 2.影响任务执行:对于有时间依赖的任务,服务器时间不准确会…

[c++]内存管理

1. C/C内存分布 我们先来看下面的一段代码和相关问题 int globalVar 1; static int staticGlobalVar 1; void Test() { static int staticVar 1; int localVar 1; int num1[10] { 1, 2, 3, 4 }; char char2[] "abcd"; const char* pChar3 "abcd"; …

C++11 新特性:常量表达式 constexpr(上)

C11 引入了constexpr关键字,用于定义常量表达式,从而使变量获得在编译阶段即可计算出结果的能力,提高运行时的效率。 constexpr 的使用分两篇文章介绍,今天这篇文章主要讲解什么是常量表达式和 constexpr 典型使用场景的前三种用…

分布式事务的解决方案--Seata架构

一、Seata的XA模式 二、AT模式原理 三、TCC模式原理 四、MQ分布式事务 异步,非实时,实现最终的一致性。 四、分布式事务的解决方案

Stable Diffusion WebUI 生成参数:宽度/高度/生成批次/每批数量/提示词相关性/随机种子

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 大家好,我是水滴~~ 本文将继续了解 Stable Diffusion WebUI 的生成参数,主要内容有:宽度、高度、生成批次、每批数量、提示词相关性、随机种子。希望能对你…

Visual Studio 2022下配置 OpenMP 多线程编程环境与运行

目录 一创建项目时选择“创建新项目 -> 空项目 -> 下一步 -> 创建” 二右键“源文件 -> 添加 -> 新建项 -> 添加” 三配置 1. 测试程序: 最开始的时候错误很多: 2.将 “ include "stdafx.h" ” 删掉,添加 “…

电影院售票网站|基于SSM框架+ Mysql+Java+ B/S结构的电影院售票网站设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

linux安装mysql8.x

检查卸载mysql 1.查看当前安装mysql情况,查找以前是否装有mysql [rootmaster01 /]# rpm -qa|grep -i mysql mysql-libs-5.1.73-8.el6_8.x86_642.执行命令删除安装的MySQL [rootmaster01 /]# rpm -ev mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps3.查看之前安装的MySQ…