Pytorch关于Dataset 的数据处理
作者:游客26024 发布时间:2021-04-16 08:40:54
Pytorch系列是了解与使用Pytorch编程来实现卷积神经网络。
学习如何对卷积神经网络编程;首先,需要了解Pytorch对数据的使用(也是在我们模型流程中对数据的预处理部分),其中有两个包Dataset,DataLoader
。Dataset
是Pytorch
对于单个数据的处理类似于给一堆数据进行编号,(在有标签的图像处理中)对其有序地提取图像与标签,
而DataLoader
则是一坨一坨的数据进行批次的处理。
此实验运用的数据是北邮邓伟洪老师的人脸表情包的数据集,
当然大家也可以自己手动做个二分类数据集之类的就将一幅幅的图片放图标签命名的文件夹中即可。
将邓伟洪老师的RAF-DB
简单来刨析,假设其只有Image
,没有真正的Annotation
等,
则其根路径(整个data的大体位置)设为 root_dir = "D:\data\basic"
(由于以下考虑了Annotation
,"Image
"放入label)标签路径(data下的label位置)设为label_dir="Image\aligned(original)"
可参考下图理解:
假设aligned
与original
是标签,但是它是真正的图片的路径
现在开始编程:
因为使用Dataset
,即让新的类(MyData
)来继承Dataset
需要改写 def __getitem__(self,item):
与 def __len__(self):
其中, def __getitem__ (self,item):
输入一系列图像的path与图像的index(组合为一张图像的详细地址),输出图像与标签,代码中默认item
为序列号,但是为了方便将item改写为idx;def __len__(self):
输入一系列图像的路径,输出这些图像的个数。
其他的函数就可以创新加载自己定义的类里。
from torch.utils.data import Dataset #Dataset的包
import os #路径需要这个
import cv2 # 需要读取图片,最好用opencv-python,当然也可以用PIL只是我不顺手
class MyData(Dataset): #我定义的这个类
def __init__(self, root_dir, label_dir):
#下面需要使用的变量,在__init__定义好,
self.root_dir = root_dir # 根路径 data在电脑或者服务器大致的位置
self.label_dir = label_dir # label的位置(这里假设Image的名字就是label的位置)
self.path = os.path.join(self.root_dir, self.label_dir)# 将这个两个合在一起就能找到整体图片的大致路径
self.img_path = os.listdir(self.path) #得到整体图片的路径(可取其中的一张一张的图像的名字)
def __getitem__(self, idx):
# 改写__getitem__(self,item)函数,最后得到图像,标签
#获取具体的一幅图像的名字
img_name = self.img_path[idx]
#获取一幅图像的详细地址
img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)
#用opencv来读取图像
img = cv2.imread(img_item_path)
#获取标签(这里简单写了aligned与original)
label = self.label_dir
return img, label
def __len__(self):
#改写整体图像的大小
return len(self.img_path)
root_dir = "D://data//basic"
img_dir = "Image"
aligned_label_dir = "aligned"
# aligned_label_dir = "Image//aligned"
aligned_label_dir = os.path.join(img_dir, aligned_label_dir)
original_label_dir = "original"
#original_label_dir = "Image//original"
original_label_dir = os.path.join(img_dir, original_label_dir)
#aligned_data = "D://data//basic//Image//aligned"
aligned_data = MyData(root_dir, aligned_label_dir)
#original_data = "D://data//basic//Image//original"
original_data = MyData(root_dir, original_label_dir)
data = aligned_data + original_data
# 15339
print(len(aligned_data))
# 15339
print(len(original_data))
# 30678
print(len(data))
img_1, label_1 = data[15338]
img_2, label_2 = data[15339]
print(label_1) # Image\aligned
print(label_2) # Image\original
来源:https://blog.csdn.net/XiaoyYidiaodiao/article/details/121960837
猜你喜欢
- 因为外贸网站,禁止同行抄袭,所以防止中国ip访问访问,访问的时候有密码提示,这样的代码如何写.请给一个提示.或者有好的代码,请分享下。 &n
- 问题原因:我遇到的情况,装了.NET2.0+IIS升级后就出现以上问题;不确定其他原因也会不会产生类似错误。(如果有,希望大家能贴出更多的原
- [root@vm1 ~]# rpm -ivh groundwork-foundation-pro-1.6.1-67.noarch.rpm P
- 实例如下:# bytes object b = b"example" # str object s = "ex
- 概述PHP有着众多的内置函数,其中大多数函数都被开发者广发使用。但也有一些同样有用却被遗忘在角落,本文将介绍7个鲜为人知功能却非常酷的函数。
- 环境:python3 + unittest + requestsExcel管理测试用例,HTMLTestRunner生成测试报告测试完成后邮
- 以下的文章主要是介绍SQL Server数据库与其实际应用元数据,我前两天在相关网站看见SQL Server数据库与其实际应用元数据的资料,
- 数据概况Fashion-mnist经典的MNIST数据集包含了大量的手写数字。十几年来,来自机器学习、机器视觉、人工智能、深度学习领域的研究
- 什么是Inception ResnetV2Inception ResnetV2是Inception ResnetV1的一个加强版,两者的结构
- 引子Matlab中有一个函数叫做find,可以很方便地寻找数组内特定元素的下标,即:Find indices and values of n
- 一、写在前面作为一名测试,有时候经常会遇到需要录屏记录自己操作,方便后续开发同学定位。以前都是用ScreenToGif来录屏制作成动态图,偶
- python 字典操作提取key,value dictionaryName[key] = value1.为字典增加一项 2.访问字典中的值
- 今天偶尔在一个学习网站技术的地方看到一个教程,关于html代码的,刚看到咱常用到的视频播放器html标签Object,平时用到他的时候都是为
- Python中yaml文件的读写(使用PyYAML库)。最近在搭建自动化测试项目过程中经常遇到yaml文件的读写,为了方便后续使用,决定记下
- 写在之前我们都知道 Python 中内置了许多标准的数据结构,比如列表,元组,字典等。与此同时标准库还提供了一些额外的数据结构,我们可以基于
- match()方法用于从字符串中查找指定的值本方法类似于indexOf()和lastindexOf(),不同的是它返回的是指定的值,而不是指
- import os,pandas as pd,re#1.获取文件夹下要合并的文件名dirpath = '文件夹地址'#工作表
- 示意图:html:{# 用户管理 #} <div id="userManageDiv" style=&
- 在pycharm中设置python脚本的文件模板,让文件创建的时候就自动写上一些相关信息:1、进入pycharm的File->sett
- 什么是SQL 指令植入式攻击?在设计或者维护Web网站时,你也许担心它们会受到某些卑鄙用户的恶意攻击。的确,如今的Web网站开发者们针对其站