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 相关文章推荐
在Django的上下文中设置变量的方法
Jul 20 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
windows下ipython的安装与使用详解
Oct 20 Python
pycharm安装图文教程
May 02 Python
python 环境变量和import模块导入方法(详解)
Jul 11 Python
python2.7实现FTP文件下载功能
Apr 15 Python
python导入坐标点的具体操作
May 10 Python
Python Gitlab Api 使用方法
Aug 28 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
Dec 26 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 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中的实现trim函数代码
2007/03/19 PHP
PHP实现多条件查询实例代码
2010/07/17 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
bootstrap table实例详解
2017/01/06 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
详解js类型判断
2018/05/22 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
英文自荐信
2013/12/19 职场文书
家长学校培训材料
2014/08/20 职场文书
人与自然观后感
2015/06/16 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
Jsonp劫持学习
2021/04/01 PHP
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android
Flink 侧流输出源码示例解析
2022/09/23 Servers