pytorch torchvision.ImageFolder的用法介绍

  

<强> torchvision.datasets

  

数据集拥有以下API:

  

__getitem__   

__len__   

数据集都是torch.utils.data.Dataset的子类,所以,他们也可以通过torch.utils.data.DataLoader使用多线程(python的多进程)。

  

举例说明:

  
  

torch.utils.data。DataLoader (coco_cap batch_size=参数。洗牌=True, batchSize num_workers=args.nThreads)

     

在构造函数中,不同的数据集直接的构造函数会有些许不同,但是他们共同拥有关键字参数。

  

变换:一个函数,原始图片作为输入,返回一个转换后的图片。

  

target_transform -一个函数、输入为目标,输出对其的转换。例子,输入的是图片标注的字符串,输出为词的索引。

  

<强> ImageFolder

  

一个通用的数据加载器,数据集中的数据以以下方式组织

        根/狗/xxx.png   根/狗/xxy.png   根/狗/xxz.png      根/猫/123. png   根/猫/nsdf3.png   根/猫/asd932_.png   之前      

既其默认你的数据集已经自觉按照要分配的类型分成了不同的文件夹,一种类型的文件夹下面只存放一种类型的图片

  

<>强运行命令为:

  

进口torchvision。数据集作为dset

  

dset。ImageFolder (root=案募新肪丁?[变换,target_transform])

  

根:指定图片存储的路径,在下面的例子中是”。/数据/dogcat_2 '

  

变换:一个函数,原始图片作为输入,返回一个转换后的图片。

  

target_transform -一个函数、输入为目标,输出对其的转换。例子,输入的是图片标注的字符串,输出为词的索引。

  

<强>有以下成员变量:

  

自我。类——用一个列表保存类名

  

自我。class_to_idx——类名对应的索引

  

自我。一个——保存(img-path类)元组的列表

  

即后面可以通过查看返回的数据集对象来查看相应的值,下面举例说明:

  

图片为:

  

 pytorch torchvision.ImageFolder的用法介绍

  

可见分成了猫和狗两类

        进口torchvision。数据集作为dset   数据集=dset.ImageFolder(。/数据/dogcat_2) #没有变换,先看看取得的原始图像数据   打印(dataset.classes) #根据分的文件夹的名字来确定的类别   打印(dataset.class_to_idx) #按顺序为这些类别定义索引为0,1…   打印(dataset.imgs) #返回从所有文件夹中得到的图片的路径以及其类别      

返回:         (“猫”,“狗”)   {“猫”:0,“狗”:1}   [(’。/数据/dogcat_2/猫/cat.12484.jpg ', 0)、(’。/数据/dogcat_2/猫/cat.12485.jpg ', 0)、(’。/数据/dogcat_2/猫/cat.12486.jpg ', 0)、(’。/数据/dogcat_2/猫/cat.12487.jpg ', 0)、(’。/数据/dogcat_2/狗/dog.12496.jpg ', 1),(’。/数据/dogcat_2/狗/dog.12497.jpg ', 1),(’。/数据/dogcat_2/狗/dog.12498.jpg ', 1),(’。/数据/dogcat_2/狗/dog.12499.jpg ', 1)]      

如果在数据下面又添加了一个类型的别人的,那么访问类型的时候返回的就是:

        [“猫”,“狗”,“别人的)   {“猫”:0,“狗”:1、“他人:2}      

查看得到的图片数据:

        #从返回结果可见得到的数据仍是公益诉讼的形象对象   打印(数据集[0])   print(数据集[0][0])   print(数据集[0][1])#得到的是类别0,即猫      

返回:         (& lt; PIL.Image。形象==RGB模式图片大小497 x500 0 x11d99a9b0>, 0)   & lt; PIL.Image。形象==RGB模式图片大小497 x500 0 x11dd24278>   0      

然后定义一个对数据进行处理的变换:

        #可以看出来此时得到的图片数据已经是处理过后的张量数据了   print(数据集[0][0])   print(数据集[0][0].size()) #大小也是经过设定后的大小224   print(数据集[0][1])#得到的是类别0,即猫      

返回:         张量([[[-0.7412,-0.7490,-0.7725,……,0.3176,0.3412,0.3725),   (-0.7333,-0.7412,-0.7882,……,0.3255,0.3647,0.4039),   (-0.7098,-0.7569,-0.8039,……,0.3255,0.3725,0.4039),   ...,   (0.3961,0.3961,0.4039,……,0.2627,0.2627,0.2549),   (0.4196,0.4039,0.4118,……,0.2549,0.2392,0.2314),   (0.4275,0.4275,0.4431,……,0.2314,0.2314,0.2235]],      [[-0.7412,-0.7490,-0.7725,……,0.3882,0.3725,0.3569),   (-0.7333,-0.7412,-0.7882,……,0.3961,0.3961,0.3882),   (-0.7098,-0.7569,-0.8039,……,0.3882,0.4039,0.3882),   ...,   (0.0431,0.0510,0.0667,……,-0.0824,-0.0824,-0.0902),   (0.0510,0.0431,0.0588,……,-0.0824,-0.1059,-0.1137),   (0.0353,0.0353,0.0510,……,-0.0902,-0.1059,-0.1216]],      [[-0.8353,-0.8431,-0.8667,……,0.3255,0.3255,0.3255),   (-0.8196,-0.8275,-0.8824,……,0.3333,0.3490,0.3569),   (-0.7804,-0.8353,-0.8667,……,0.3333,0.3569,0.3569),   ...,   (-0.2863,-0.2784,-0.2627,……,-0.3569,-0.3569,-0.3647),   (-0.2549,-0.2706,-0.2549,……,-0.3569,-0.3804,-0.3882),   (-0.2235,-0.2471,-0.2392,……,-0.3569,-0.3804,-0.4039]]])   火炬。大小([3、224、224])

pytorch torchvision.ImageFolder的用法介绍