pytorch之ImageFolder使用详解


Posted in Python onJanuary 06, 2020

pytorch之ImageFolder

torchvision已经预先实现了常用的Dataset,包括前面使用过的CIFAR-10,以及ImageNet、COCO、MNIST、LSUN等数据集,可通过诸如torchvision.datasets.CIFAR10来调用。在这里介绍一个会经常使用到的Dataset——ImageFolder。

ImageFolder假设所有的文件按文件夹保存,每个文件夹下存储同一个类别的图片,文件夹名为类名,其构造函数如下:

ImageFolder(root, transform=None, target_transform=None, loader=default_loader)

它主要有四个参数:

root:在root指定的路径下寻找图片

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

target_transform:对label的转换

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

label是按照文件夹名顺序排序后存成字典,即{类名:类序号(从0开始)},一般来说最好直接将文件夹命名为从0开始的数字,这样会和ImageFolder实际的label一致,如果不是这种命名规范,建议看看self.class_to_idx属性以了解label和文件夹名的映射关系。

图片结构如下所示:

pytorch之ImageFolder使用详解

from torchvision import transforms as T
import matplotlib.pyplot as plt
from torchvision.datasets import ImageFolder


dataset = ImageFolder('data/dogcat_2/')

# cat文件夹的图片对应label 0,dog对应1
print(dataset.class_to_idx)

# 所有图片的路径和对应的label
print(dataset.imgs)

# 没有任何的transform,所以返回的还是PIL Image对象
#print(dataset[0][1])# 第一维是第几张图,第二维为1返回label
#print(dataset[0][0]) # 为0返回图片数据
plt.imshow(dataset[0][0])
plt.axis('off')
plt.show()

加上transform

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()

以上这篇pytorch之ImageFolder使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python对数组进行反转的方法
May 20 Python
python一键升级所有pip package的方法
Jan 16 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
python爬虫正则表达式之处理换行符
Jun 08 Python
python用post访问restful服务接口的方法
Dec 07 Python
python多线程与多进程及其区别详解
Aug 08 Python
python for循环remove同一个list过程解析
Aug 14 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
Django Path转换器自定义及正则代码实例
May 29 Python
python与idea的集成的实现
Nov 20 Python
python字典与json转换的方法总结
Dec 28 Python
pytorch之inception_v3的实现案例
Jan 06 #Python
pytorch之添加BN的实现
Jan 06 #Python
PyTorch学习:动态图和静态图的例子
Jan 06 #Python
pytorch动态网络以及权重共享实例
Jan 06 #Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 #Python
pytorch中的自定义反向传播,求导实例
Jan 06 #Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 #Python
You might like
一篇入门的php Class 文章
2007/04/04 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
2017/01/21 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
python斐波那契数列的计算方法
2018/09/27 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
中国网上药店领导者:1药网
2017/02/16 全球购物
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
英语教师自荐信
2014/05/26 职场文书
党员评议个人总结
2014/10/20 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
地道战观后感400字
2015/06/04 职场文书
投诉信范文
2015/07/02 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
个人房屋租赁合同(标准范本)
2019/09/16 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript