torchvision.datasets.folder.ImageFolder函数

ImageFolder是一个通用的数据加载器,数据集应当按照指定的格式进行存储。

参数

1. root

root指定的路径下寻找图片

2. transform

PIL Image进行的转换操作,transform的输入是使用loader读取图片的返回对象

3.target_transform

label的转换。

4.  loader

给定路径后如何读取图片,默认读取为RGB格式的PIL Image对象

成员变量

可以通过成员变量查看ImageFolder返回的内容。这里不是一个具体的函数去操作哦,而是imagefolder的成员变量

(1)classes

根据分的文件夹的名字来确定的类别,如['cat', 'dog']。

2class_to_idx

        按顺序为这些类别定义索引为0,1...,如{'cat': 0, 'dog': 1}

3imgs

        返回从所有文件夹中得到的图片的路径以及其类别,一个列表,列表中的每个元素都是一个(img-path, class_index)的元组,如

[('./data/dogcat_2/cat/cat.12484.jpg', 0), ('./data/dogcat_2/cat/cat.12485.jpg', 0), ('./data/dogcat_2/cat/cat.12486.jpg', 0), ('./data/dogcat_2/cat/cat.12487.jpg', 0), ('./data/dogcat_2/dog/dog.12496.jpg', 1), ('./data/dogcat_2/dog/dog.12497.jpg', 1), ('./data/dogcat_2/dog/dog.12498.jpg', 1), ('./data/dogcat_2/dog/dog.12499.jpg', 1)]

如果不进行transform,返回PIL Image对象

dataset = ImageFolder('data/dogcat_2/') #这里是在dog和cat等分类文件夹之上的dogcat_2文件夹

# cat文件夹的图片对应label 0,dog对应1

print(dataset.class_to_idx)

{'cat': 0, 'dog': 1}

# 所有图片的路径和对应的label

print(dataset.imgs)

[('./data/dogcat_2/cat/cat.12484.jpg', 0), ('./data/dogcat_2/cat/cat.12485.jpg', 0), ('./data/dogcat_2/cat/cat.12486.jpg', 0), ('./data/dogcat_2/cat/cat.12487.jpg', 0), ('./data/dogcat_2/dog/dog.12496.jpg', 1), ('./data/dogcat_2/dog/dog.12497.jpg', 1), ('./data/dogcat_2/dog/dog.12498.jpg', 1), ('./data/dogcat_2/dog/dog.12499.jpg', 1)]
#所有图片的类别

print(dataset.classes)

['cat', 'dog']



#print(dataset[0][1])# 第一维[]表示是第几张图,第二维[]表示为1返回label

#print(dataset[0][0]) # 第二维表示为0返回图片数据

plt.imshow(dataset[0][0])

进行transform,返回tensor

normalize = T.Normalize(mean=[0.4, 0.4, 0.4], std=[0.2, 0.2, 0.2])

transform  = T.Compose([

         T.RandomResizedCrop(224),

         T.RandomHorizontalFlip(),

         T.ToTensor(),

         normalize,

])

dataset = ImageFolder('data1/dogcat_2/', transform=transform)



# 深度学习中图片数据一般保存成CxHxW,即通道数x图片高x图片宽

#print(dataset[0][0].size())





再转化为图片

to_img = T.ToPILImage()

# 0.2和0.4是标准差和均值的近似

a=to_img(dataset[0][0]*0.2+0.4)

plt.imshow(a)

plt.axis('off')

plt.show()

           

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

one-over

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值