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之for循环语句
Oct 02 Python
python3读取MySQL-Front的MYSQL密码
May 03 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
python获取多线程及子线程的返回值
Nov 15 Python
Tensorflow环境搭建的方法步骤
Feb 07 Python
python去除扩展名的实例讲解
Apr 23 Python
Falsk 与 Django 过滤器的使用与区别详解
Jun 04 Python
python 内置函数汇总详解
Sep 16 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
Python用Jira库来操作Jira
Dec 28 Python
Python自然语言处理之切分算法详解
Apr 25 Python
pytorch 实现变分自动编码器的操作
May 24 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实现过滤UBB代码的类
2015/03/12 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
Python print不能立即打印的解决方式
2020/02/19 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
我们的节日清明节活动方案
2014/03/05 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
办理收楼委托书范本
2014/10/09 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
世界红十字日活动总结
2015/02/10 职场文书
销售辞职信范文
2015/03/02 职场文书
法律意见书范本
2015/06/04 职场文书
超强台风观后感
2015/06/09 职场文书
导游词之潮音寺
2019/09/26 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
Redis如何实现分布式锁
2021/08/23 Redis
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js
解决Oracle数据库用户密码过期
2022/05/11 Oracle
css3 选择器
2022/05/11 HTML / CSS