【Pytorch使用自制数据集,Dataloader】

数据集结构
在这里插入图片描述

话不多说,直接上核心代码

myDataset.py

from collections import Counter
from torch.utils.data import Dataset
import os
from PIL import Imageclass MyDataset(Dataset):"""读取自制的数据集args:- image_dir: 图片的地址- label_dir: 标签的地址- name: 数据集的名称- transform: 数据集的预处理"""def __init__(self, image_dir:str,  label_dir:str, name:str, transform=None):self.img_dir = os.path.join(image_dir, name)self.label_dir = os.path.join(label_dir, name)self.name = nameself.image_path = os.listdir(self.img_dir)self.label_path = os.listdir(self.label_dir)self.transform = transform"""读取数据集args:- index: 数据集的索引return:- image: 图片- label: 图片的标签"""def __getitem__(self, index:int)->tuple:# 获取图片的地址image = self.image_path[index]image = os.path.join(self.img_dir, image)# 获取图像image = Image.open(image)# 如果不是彩色图像,将下面的注释解开可以转换成彩色图像,不过图片的模样改变很大# if image.mode!= 'RGB':#     image = image.convert('RGB')# 获取label的地址index_path = self.label_path[index]index_path = os.path.join(self.label_dir, index_path)label = self.parseTxt(index_path)if self.transform is not None:image = self.transform(image)return image, label"""将txt文件解析成数字description:> 这里每个txt文件下可能有多个label,选出现最多的,如果你的txt里面只有一个label的话,想办法读取出来返回就行args:- label: txt文件的地址return:- label: 图片的标签"""def parseTxt(self, label:str)->int:first_column = []with open(label, 'r') as f:for line in f.readlines():first_column.append(int(line.split()[0]))counter = Counter(first_column)return counter.most_common(1)[0][0]"""获取数据集的长度"""def __len__(self)->int:return len(self.image_path)

demo

train.py

import torch
from torch.utils.data import DataLoader
from torchvision import transforms
# 导入加载数据集的类
from dataset import MyDataset
import osroot = os.path.join(os.getcwd(),'courseHomework','datasets')
transform = transforms.Compose([transforms.Resize((448, 448)),transforms.RandomHorizontalFlip(),transforms.ToTensor(),# transforms.Normalize((0.5), (0.5,))
])train_dataset = MyDataset(root + '/images', root +'/labels', 'train', transform)
train_loader = DataLoader(train_dataset, batch_size=4, shuffle=False)for step, data in enumerate(train_loader):imgs, labels = dataprint(imgs[0].shape)transforms.ToPILImage()(imgs[0]).show()break

大家结构和我不一样可以自由发挥

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

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

相关文章

Runway联合Getty打造AI视频模型RGM,引领广告新革命

近日,纽约市的视频AI创业公司Runway ML宣布,将与全球最大付费图库及编辑图片库之一的Getty Images进行合作,共同开发一种全新的生成性AI视频模型:Runway Getty Images Model(RGM)。这一消息在科技领域引起了…

假设二叉树采用二叉链表存储结构,设计一个算法,求非空二叉树b的宽度(即具有结点数最多的那一层的结点个数)。

题目描述:假设二叉树采用二叉链表存储结构,设计一个算法,求非空二叉树b的宽度(即具有结点数最多的那一层的结点个数)。 分析: 每次递归时,如果当前结点不为空,就将当前层数的宽度1,并更新最大宽…

【ETL】Kettle清洗任务异常提醒,Spoon作业异常通知

清洗作业如果挂在第三方任务平台或比较多的任务,执行失败无法跟踪,需要给任务添加异常提醒,这里用钉钉的群消息机器人。 钉钉机器人文档 自定义机器人接入 - 钉钉开放平台 作业示例 通过请求触发告警消息

谈一谈C++的类对象的存储方式

在C的类中,有成员变量和成员函数。当类经过实例化后,便有了类对象,C示例对象中的成员变量和成员函数是分开存储的。 成员变量 : 普通成员变量 : 在 对象 指针指向的内存中存储 , 存储方式与 C 语言中的 struct 结构体 存储变量的 内存结布局 …

Python图像处理利器解密:Pillow库使用指南

更多资料获取 📚 个人网站:ipengtao.com 引言 Pillow库是Python编程中用于图像处理的重要工具。作为Python Imaging Library(PIL)的一个分支,Pillow库提供了丰富的功能和易用的API,用于处理图像的各种操作…

基于SpringBoot的校园互助网站

简介 本系统分为三个角色,分别是普通用户和管理员、以及超级管理员,主要的功能模块有注册、登录、物品代购、快递代取、话题管理、任务管理、反馈管理、投诉管理、订单管理等功能模块。 项目 数据库 首页 登录 新增反馈 发布话题 发布任务 接单 我要投诉…

【1day】用友 U8 Cloud系统upload.jsp接口任意文件上传漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现

Java绘图

JAVA绘图 原点在左上角 类似二维数组 单位是像素 像素是密度单位,不是长度单位,不是多少cm,没法比较 分辨率800*600,像素是480000个 定义: 定义一个Mypanel类,画纸 …

华为无线配置模板 一

华为无线配置模板 一 拓扑图1.配置SwitchA和AC,使AP与AC之间能够传输CAPWAP报文2.配置AC作为DHCP服务器,为STA和AP分配IP地址3.配置AP上线4.配置WLAN业务参数5.验证配置结果 拓扑图 采用如下的思路配置小型网络的WLAN基本业务:1.配置AP、AC、…

【1day】用友 U8 Cloud系统TaskTreeQuery接口SQL注入漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现

接口自动化测试过程中怎么处理接口依赖?

面试的时候经常会被问到在接口自动化测试过程中怎么处理接口依赖? 首先我们要搞清楚什么是接口依赖。 01. 什么是接口依赖 接口依赖指的是,在接口测试的过程中一个接口的测试经常需要依赖另一个或多个接口成功请求后的返回数据。 那怎么处理呢&#x…

2023年【A特种设备相关管理(锅炉压力容器压力管道)】考试内容及A特种设备相关管理(锅炉压力容器压力管道)复审考试

题库来源:安全生产模拟考试一点通公众号小程序 A特种设备相关管理(锅炉压力容器压力管道)考试内容根据新A特种设备相关管理(锅炉压力容器压力管道)考试大纲要求,安全生产模拟考试一点通将A特种设备相关管理…

Rust的From与Into Trait

Into的本质是调用了From Trait 的方法。 From是底层的方法,把From实现了,Into的实现,编译器会自动根据From Trait生成Into Trait的代码 编译器自动类型推导出Into Trait的U的类型,调用了U类型的From的方法,实现其他类…

copilot的使用

Copilot 是由 OpenAI 和 GitHub 共同开发的一款基于 GPT-3 的自动代码补全工具。它是一种先进的代码生成工具,旨在帮助开发人员更快速地编写代码。Copilot 能够通过分析代码上下文并提供代码片段的建议来提高编码效率。 以下是 Copilot 的一些主要特点和用法&#x…

【多线程】-- 12 线程协作之生产者消费者问题及解决办法

多线程 9 线程协作 “生产者消费者问题” ——并非二十三种设计模式之一 9.1 生产者消费者问题 “线程通信” 应用场景:生产者和消费者问题 假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费如果…

JDK8升级11常见问题

JDK8升级11常见问题 1. 使用rt.jar/jce.jar情况 原代码&#xff1a; <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><targe…

vue el-select多选封装及使用

使用了Element UI库中的el-select和el-option组件来构建多选下拉框。同时&#xff0c;也包含了一个el-input组件用于过滤搜索选择项&#xff0c;以及el-checkbox-group和el-checkbox组件用于显示多选项。 创建组件index.vue (src/common-ui/selectMultiple/index.vue) <tem…

生成式 AI 应用落地小结:高估的模型能力,低估的工程实施

虽然 ChatGPT 已经诞生了一周年&#xff0c;但是大量的人依旧对于生成式 AI 没有足够的认识。在研发领域&#xff0c;Thoughtworks 一直在与不同的大型企业合作&#xff0c;保持开放性的探索。 在我负责的 Thoughtworks 开源社区&#xff0c;我们与外部的几家大型企业一起探索和…

OpenCV-python:图像像素类型转换与归一化

目录 1.图像像素类型转换 2. 图像像素转换适用情形 3.图像归一化 4.归一化方法支持 5.归一化函数 6.知识笔记 1.图像像素类型转换 图像像素类型转换是指将图像的像素值从一种类型转换为另一种类型。常见的像素类型包括无符号整数类型&#xff08;如8位无符号整数、16位无符…

leetCode 37.解数独 + 回溯算法 + 图解

编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; 数独部分空…