资源经验分享使用Ptorch中的DataLoader加载自己的图片数据集以及简单的处理

使用Ptorch中的DataLoader加载自己的图片数据集以及简单的处理

2019-09-18 | |  121 |   0

原标题:使用Ptorch中的DataLoader加载自己的图片数据集以及简单的处理

原文来自:CSDN      原文链接:https://blog.csdn.net/weixin_44168899/article/details/100929727



文章目录


在图像处理中,我们得到的数据往往是一张张的图片数据而不是已经处理好的数据,现使用一种利用torch.utils中的DataLoader模块来加载图片数据,并且生成dataset来分批训练的方法。


原理介绍

pytorch包里提供了DataLoader与Dataset来对数据进行加载与分批,下面我们将定义一个类来进行数据集的加载:

//导入所需的库与函数from torch.utils.Data import DataLoader,Datasetimport torchvision.transforms as transforms   //转换图片的方法import pandas as pdimport cv2    //读取图片import os     //生成图片的路径123456

数据集类的创建

train_hd=pd.read_csv('E:360downloadsname.csv')//获取图片的名字我的csv文件储存在这里train_path='E:360downloadstrain'              //获取图片的路径(只需要读取到储存图片的文件夹就行了)class Mydataset(torch.utils.Data):
    def __init__(self,df_data,data_dir='./',transform=None):        super().__init__()
        self.df=df_data.values
        self.data_dir=data_dir
        self.transforms=transforms
    def __len__(self):        return len(self.df)
    def __getiem__(self,idex):
        img_name,label=self.df[idex]
        img_path=os.path.join(self.data_dir,img_name)
        image=cv2.imread(img_path)        if self.transform is not None:
            image=self.transform(image)        return image,label                   //返回数据的标签与加载的数据。123456789101112131415161718

__len__这样就可以len(dataset)返回数据集的大小。
__getitem__支持索引,以便dataset[i]可以用来获取i样本

数据的简单处理

此时的图片数据还没有进行标准化(便于梯度下降)以及增加噪声(增加噪声的目的是让训练出得模型鲁棒性更好),现利用transforms.Compose来整合处理图像数据的步骤:

transforms_train=transforms.Compose([
    transforms.ToPILImage(),             
    transforms.RandomHorizontalFlip(),   //水平翻转
    transforms.RandomRotation(10),       //随机旋转10度
    transforms.ToTensor(),               //将数据转换成Tensor型
    transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))])   //标准化123456

更多transforms函数
在机器学习中,我们经常将数据分批次训练,以节省内存,有时当数据数量巨大时,也需要分批次训练或者测试,DataLoader是torch中提供的一个便捷的生成批次数据的方法。

生成dataloader

train_data=MyDataset(train_hd,train_path,transform=transforms_train)BATCH_SIZE=64train_loader=DataLoader(train_data,batch_size=BATCH_SIZE,shuffer=True)123

更多DataLoader参数
有了DataLoader,我们便可以将自己的图片数据输入神经网络中训练模型,也可以借此生成自己的训练集与验证集。

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:数学建模之层次分析法

下一篇:照相机的成像变换

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...

  • 反向传播是什么?

    深度学习系统能够学习极其复杂的模式,它们通过调...