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的PEAK来适配协议的教程
Apr 14 Python
python关键字and和or用法实例
May 28 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
python difflib模块示例讲解
Sep 13 Python
Python字符串格式化的方法(两种)
Sep 19 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
Django框架视图介绍与使用详解
Jul 18 Python
python3 pillow模块实现简单验证码
Oct 31 Python
python实现udp传输图片功能
Mar 20 Python
python 获取字典特定值对应的键的实现
Sep 29 Python
python boto和boto3操作bucket的示例
Oct 30 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中的时间处理
2006/10/09 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
javscript对象原型的一些看法
2010/09/19 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python多进程写入同一文件的方法
2019/01/14 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
python pandas 时间日期的处理实现
2019/07/30 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
教师自荐信范文
2013/12/09 职场文书
毕业生自荐书
2013/12/18 职场文书
学生爱国演讲稿
2014/01/14 职场文书
九年级物理教学反思
2014/01/29 职场文书
开会迟到检讨书
2014/02/03 职场文书
市场营销调查计划书
2014/05/02 职场文书
责任心演讲稿
2014/05/14 职场文书
初中同学会活动方案
2014/08/22 职场文书
个人整改方案范文
2014/10/25 职场文书
初一语文教学反思
2016/03/03 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
导游词之昭君岛
2020/01/17 职场文书
python单元测试之pytest的使用
2021/06/07 Python