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 02 Python
python实现基于两张图片生成圆角图标效果的方法
Mar 26 Python
Python语法快速入门指南
Oct 12 Python
不可错过的十本Python好书
Jul 06 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
Python3实现的画图及加载图片动画效果示例
Jan 19 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
python从Oracle读取数据生成图表
Oct 14 Python
如何使用Pytorch搭建模型
Oct 26 Python
Python Pygame实现俄罗斯方块
Feb 19 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 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数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
Thinkphp中的curd应用实用要点
2015/01/04 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
fastclick插件导致日期(input[type="date"])控件无法被触发该如何解决
2015/11/09 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
Python3.7中安装openCV库的方法
2018/07/11 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
Python闭包函数定义与用法分析
2018/07/20 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
在keras中实现查看其训练loss值
2020/06/16 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
意大利领先的奢侈品在线时装零售商:MCLABELS
2020/10/13 全球购物
活动策划求职信模板
2014/04/21 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
污水处理保证书
2015/05/09 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android