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 30 Python
python获取mp3文件信息的方法
Jun 15 Python
python中解析json格式文件的方法示例
May 03 Python
Python动态导入模块的方法实例分析
Jun 28 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
python RabbitMQ 使用详细介绍(小结)
Nov 08 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
Python argparse模块应用实例解析
Nov 15 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
在Python 的线程中运行协程的方法
Feb 24 Python
浅谈Python中re.match()和re.search()的使用及区别
Apr 14 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 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中取得URL的根域名的代码
2011/03/23 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
2018/05/22 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
Python中Continue语句的用法的举例详解
2015/05/14 Python
Python3读取zip文件信息的方法
2015/05/22 Python
python避免死锁方法实例分析
2015/06/04 Python
python常用函数详解
2016/09/13 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
python批量赋值操作实例
2018/10/22 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
python小程序实现刷票功能详解
2019/07/17 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
借款担保书范文
2014/05/13 职场文书
维稳工作情况汇报
2014/10/27 职场文书
党建工作整改措施
2014/10/28 职场文书
交通安全月活动总结
2015/05/08 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
导游词之岳阳楼
2019/09/25 职场文书
德劲DE1102数字调谐收音机机评
2022/04/07 无线电