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单链表的简单实现方法
Sep 23 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
在服务器端实现无间断部署Python应用的教程
Apr 16 Python
Python如何快速实现分布式任务
Jul 06 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
python实现简易内存监控
Jun 21 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
使用Python检测文章抄袭及去重算法原理解析
Jun 14 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
django和flask哪个值得研究学习
Jul 31 Python
pytorch实现手写数字图片识别
May 20 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缓存技术的使用说明
2011/08/06 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
php笔记之:AOP的应用
2013/04/24 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
平面设计的岗位职责
2013/11/08 职场文书
职业女性的职业规划
2014/03/04 职场文书
服务质量承诺书
2014/03/27 职场文书
中央空调节能方案
2014/06/15 职场文书
论文答辩开场白大全
2015/05/27 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript