从不平凡Image文件夹,自定义读取img和label,构造dataset

问题描述

torchvision.datasets.ImageFolder 假定:子文件名=子文件夹的图像的标签
但在KDEF文件夹中,子文件夹下有所有的类,不宜用ImageFolder读取path来得到dataset

在这里插入图片描述

My 实现:

# how to build dataset?
from torch.utils import data
from torchvision import transforms, utils
import os
from PIL import Imageto_exp={'SU':0, 'AF':1, 'DI':2, 'HA':3, 'SA':4, 'AN':5, 'NE':6
}mytransform = transforms.Compose([transforms.Resize((224,224)),transforms.ToTensor()
])class PoseDataset(data.Dataset):def __init__(self, path):super(PoseDataset,self).__init__()root_dir = os.path.join(os.getcwd(),path)dir_list = os.listdir(root_dir)self.data = []for dir_name in dir_list:tmp_dir = os.path.join(os.path.join(root_dir,dir_name))img_list = os.listdir(tmp_dir)for img_name in img_list:t_img = mytransform(Image.open(os.path.join(tmp_dir,img_name)).convert("RGB"))print('\r{},{},{}'.format(img_name,type(t_img),t_img.shape),end='')# import pdb; pdb.set_trace()id_label1 = to_exp[img_name[4:6]]id_label2 = int(img_name[2:4])self.data.append((t_img,id_label1,id_label2))def __getitem__(self,index):return self.data[index]def __len__(self):return len(self.data)mydataset = PoseDataset('data\\KDEF\\AF')

在这里插入图片描述

  • 其中print('\r{},{},{}'.format(img_name,type(t_img),t_img.shape),end='')在一行连续更新,
  • 用PIL.Image.open()打开image file,并convert为RGB格式

之后就可用torch.util.data.DataLoader成批读取img tensor和label用于训练了

train_loader = data.DataLoader(mydataset,batch_size=16,drop_last=True,shuffle=True)
for image,label1,label2 in train_loader:print(image.shape)print(label1)print(label2)

在这里插入图片描述

  • torch.util.data.DataLoader自动转label list为label tensor~🙂😊

划分dataset with data.random_split

trainset,validset=torch.utils.data.random_split(dataset1,[train_size,valid_size])

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

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

相关文章

AI-数学-高中-47导数与几何意义

原作者视频:【导数】【考点精华】7导数与几何意义考点解析(基础)_哔哩哔哩_bilibili 该点处切点的斜率 该点处导函数的值 示例1: 导数问题解决最常用方法:参数分离,在左边函数有解的值域范围内。 示例2&…

Netty 网络编程深入学习【一】:ByteBuffer 源码解析

ByteBuffer源码阅读 ByteBuffer是一个用于处理字节数据的缓冲区类。它是Java NIO 包的一部分,提供了一种高效的方式来处理原始字节数据。 ByteBuffer 可以用来读取、写入、修改和操作字节数据,它是一种直接操作字节的方式,比起传统的 InputSt…

基于Spring Boot的在线BLOG网设计与实现

基于Spring Boot的在线BLOG网设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 前台首页管理界面,用户经过登录前台首页查看通…

【UnityRPG游戏制作】Unity_RPG项目_玩家逻辑相关

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:就业…

HSDB使用教程

HSDB:Hostspot Debugger,JVM内置的工具,用于深入分析JVM运行时的内部状态 启动HSDB java -cp D:/tools/jdk-1.8/lib/sa-jdi.jar sun.jvm.hotspot.HSDB 获取进程id jps 连接到指定进程 查找类 通过查询查找对象 输入查询语句 select d from …

100/篇论文修改?提高营收从拒绝客户开始

进入4月份以来新进询盘客户可谓惨淡,为了完成业绩突破我接了一个并不擅长的订单,最终失败赔钱收场,痛定思痛我决定拒掉不可靠的项目: 不熟悉的领域 超出团队承载范围的 低价绝对低价的项目 今天收到客户询盘我非常的开心&#…

【Java EE】多线程(二)Thread 类与常用方法

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…

直播素材安卓情侣飞行棋v2.22 仿dofm 支持自定义模式—可用直播素材

一个情侣间增进友谊的小游戏非常好玩,适合男孩女孩之间增进感情!快和你暗恋的女孩一块玩吧,极速升温 永久免费!解锁激活码内容全部畅玩!全网最强超级给力!真人说书音频 网盘自动获取 链接:http…

重要综述!全文翻译!宫鹏教授、陈镜明教授、梁顺林教授等《Nature Climate Change》!

2013年,由宫鹏教授、陈镜明教授和梁顺林教授等联合发表了一篇《Nature Climate Change》综述文章,其主题是卫星遥感在全球变化中的作用研究。(已被引510次,来源谷歌学术)。 卫星遥感方式对于气象问题、大气、陆地和海洋…

【机器学习】集成方法---Boosting之AdaBoost

一、Boosting的介绍 1.1 集成学习的概念 1.1.1集成学习的定义 集成学习是一种通过组合多个学习器来完成学习任务的机器学习方法。它通过将多个单一模型(也称为“基学习器”或“弱学习器”)的输出结果进行集成,以获得比单一模型更好的泛化性…

【中断】【ARM64】学习总结

optee中的异常向量表解读–中断处理解读 https://mp.weixin.qq.com/s/gBsy4YDYTHGRsy2zcVr6Vg

windows ubuntu sed,awk,grep篇:13.其他 awk 命令

目录 85. 使用 printf 格式化输出 86. awk 内置数值函数 87. 随机数生成器 88. 常用字符串函数 89. GAWK/NAWK 的字符串函数 90. GAWK 字符串函数 91.处理参数(ARGC,ARGV,ARGIND) 92. OFMT 93. GAWK 内置的环境变量 94. pgawk – awk 运行分析器 95. 位操作 96.用户…

Linux搭建sqlilabs靶场

提前准备: 文章中所使用到的Linux系统:Ubantu20.4sqlilabs靶场下载地址:GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based. 一. 安装phpstudy phpstudy安装命令:wget -O install.sh h…

托普利兹矩阵(T矩阵)及其应用(Matlab demo测试)

托普利兹矩阵(T矩阵)及其应用(Matlab demo测试) 1. 概念2. Matlab简单测试2.1 生成测试2.2 基本性质及原理2.3 性质验证 3. 其他应用总结3.1 其他性质3.2 文献阅读看到的 参考资料 1. 概念 托普利兹矩阵,简称为T型矩阵…

H3C MSTP 实验

H3C MSTP 实验 实验拓扑 ​​ 实验需求 所有交换机上创建 Vlan10,Vlan20,Vlan30 和 Vlan40所有交换机之间的端口配置为 Trunk,并放行相关 VLAN按照图示分区域配置 MSTP,并配置主备根网桥 实验步骤 VLAN基础配置(…

力扣面试150 简化路径 栈 模拟

Problem: 71. 简化路径 思路 &#x1f469;‍&#x1f3eb; 三叶题解 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public String simplifyPath(String path){ArrayDeque<String> d new ArrayDeque<>();…

2022 亚马逊云科技中国峰会,对话开发者论坛

目录 前言 最近整理资料发现还有一些前 2 年的内容没发出来&#xff0c;故补发记录&#xff0c;每年都有新的感悟。 开发者论坛 1. 你认为什么是开发者社区&#xff0c;如何定义一个成功的开发者社区&#xff1f; 我认为可以把开发者社区看成一个 “产品” 来对待&#xff…

【RAG 论文】GenRead:“generate-read“ 可能比 “retrieve-read“ 更有效

论文&#xff1a;Generate rather than Retrieve: Large Language Models are Strong Context Generators ⭐⭐⭐⭐ ICLR 2023 Code: github.com/wyu97/GenRead 一、论文速读 该工作发现&#xff1a;由 LLM 生成的文档中&#xff0c;往往比 retrieved documents 更可能包含正确…

C++校招八股

c类的访问权限与继承方式 公有成员在任何地方都可以被访问&#xff0c;包括类的外部和派生类。受保护成员在类的内部和派生类中可以被访问&#xff0c;但在类的外部不可访问。 私有成员只能在类的内部访问&#xff0c;包括类的成员函数和友元函数&#xff0c;不允许在类的外部…