Pytorch关于Dataset 的数据处理

 更新时间:2022年01月25日 12:55:47   作者:游客26024  
这篇文章主要介绍了Pytorch关于Dataset 的数据处理,学习如何对卷积神经网络编程;首先,需要了解Pytorch对数据的使用,也是在我们模型流程中对数据的预处理部分,下面我们就一起进入文章查看具体处理过程吧

Pytorch系列是了解与使用Pytorch编程来实现卷积神经网络。

学习如何对卷积神经网络编程;首先,需要了解Pytorch对数据的使用(也是在我们模型流程中对数据的预处理部分),其中有两个包Dataset,DataLoaderDatasetPytorch对于单个数据的处理类似于给一堆数据进行编号,(在有标签的图像处理中)对其有序地提取图像与标签,
DataLoader则是一坨一坨的数据进行批次的处理。

此实验运用的数据是北邮邓伟洪老师的人脸表情包的数据集

当然大家也可以自己手动做个二分类数据集之类的就将一幅幅的图片放图标签命名的文件夹中即可。

将邓伟洪老师的RAF-DB简单来刨析,假设其只有Image,没有真正的Annotation等,
则其根路径(整个data的大体位置)设为 root_dir = "D:\data\basic"
(由于以下考虑了Annotation,"Image"放入label)标签路径(data下的label位置)设为label_dir="Image\aligned(original)"

可参考下图理解:

假设alignedoriginal是标签,但是它是真正的图片的路径

 现在开始编程:

因为使用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

 

相关文章

  • Python实现中文数字转换为阿拉伯数字的方法示例

    Python实现中文数字转换为阿拉伯数字的方法示例

    这篇文章主要介绍了Python实现中文数字转换为阿拉伯数字的方法,涉及Python字符串遍历、转换相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • python深度学习tensorflow1.0参数和特征提取

    python深度学习tensorflow1.0参数和特征提取

    这篇文章主要为大家介绍了python深度学习tensorflow1.0参数和特征提取,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • django 中的聚合函数,分组函数,F 查询,Q查询

    django 中的聚合函数,分组函数,F 查询,Q查询

    这篇文章主要介绍了django 中的聚合函数,分组函数,F 查询,Q查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • pycharm sciview的图片另存为操作

    pycharm sciview的图片另存为操作

    这篇文章主要介绍了pycharm sciview的图片另存为操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 用Python将GIF动图分解成多张静态图片

    用Python将GIF动图分解成多张静态图片

    今天给大家带来的是关于Python的相关知识,文章围绕着如何用Python将GIF动图分解成多张静态图片展开,文中有非常详细的介绍,需要的朋友可以参考下
    2021-06-06
  • Python基础之hashlib模块subprocess模块logging模块

    Python基础之hashlib模块subprocess模块logging模块

    这篇文章主要为大家介绍了Python基础之hashlib模块subprocess模块logging模块示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • python之pyinstaller组件打包命令和异常解析实战

    python之pyinstaller组件打包命令和异常解析实战

    前段时间在制作小工具的时候,直接在命令行用pyinstaller工具打包成功后,启动exe可执行文件的时候各种报错, 今天,我们就分享一下踩坑经过,需要的朋友可以参考下
    2021-09-09
  • python实现修改xml文件内容

    python实现修改xml文件内容

    这篇文章主要介绍了python实现修改xml文件内容,XML 指可扩展标记语言,是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的
    2022-07-07
  • Python实现统计图像连通域的示例详解

    Python实现统计图像连通域的示例详解

    这篇文章主要为大家详细介绍了如何利用Python实现统计图像连通域的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-04-04
  • python多进程共享变量

    python多进程共享变量

    这篇文章主要为大家详细介绍了python多进程共享变量的相关资料,感兴趣的小伙伴们可以参考一下
    2016-04-04

最新评论