Pytorch关于Dataset 的数据处理
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/121960
相关文章
pytorch nn.Conv2d()中的padding以及输出大小方式
今天小编就为大家分享一篇pytorch nn.Conv2d()中的padding以及输出大小方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27- 这篇文章主要介绍了PyTorch一小时掌握之迁移学习篇,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-08
Linux安装Pytorch1.8GPU(CUDA11.1)的实现
这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-25- 这篇文章主要介绍了Pytorch之扩充tensor的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-05
- 今天小编就为大家分享一篇pytorch 自定义卷积核进行卷积操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-06
- 这篇文章主要介绍了解决pytorch 交叉熵损失输出为负数的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-08
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
今天小编就为大家分享一篇pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-02- 这篇文章主要介绍了pytorch 实现冻结部分参数训练另一部分,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-27
C#从数据库读取数据到DataSet并保存到xml文件的方法
这篇文章主要介绍了C#从数据库读取数据到DataSet并保存到xml文件的方法,涉及C#操作DataSet保存到XML文件的技巧,需要的朋友可以参考下...2020-06-25从Pytorch模型pth文件中读取参数成numpy矩阵的操作
这篇文章主要介绍了从Pytorch模型pth文件中读取参数成numpy矩阵的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-04Pytorch 的损失函数Loss function使用详解
今天小编就为大家分享一篇Pytorch 的损失函数Loss function使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-02- 今天小编就为大家分享一篇pytorch中的上采样以及各种反操作,求逆操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-30
- 这篇文章主要介绍了基于Pytorch版yolov5的滑块验证码破解思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-25
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
今天小编就为大家分享一篇pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-02- 这篇文章主要介绍了pytorch深度学习中对softmax实现进行了详细解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步...2021-09-30
- 今天小编就为大家分享一篇Pytorch 计算误判率,计算准确率,计算召回率的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
C#实现读取DataSet数据并显示在ListView控件中的方法
这篇文章主要介绍了C#实现读取DataSet数据并显示在ListView控件中的方法,涉及C#操作DataSet及ListView控件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25- 今天小编就为大家分享一篇Pytorch实现LSTM和GRU示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
- 这篇文章主要介绍了Pytorch如何切换 cpu和gpu的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-01
- 今天小编就为大家分享一篇pytorch动态网络以及权重共享实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-29