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 相关文章推荐
wxPython事件驱动实例详解
Sep 28 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
谈谈如何手动释放Python的内存
Dec 17 Python
详解django中自定义标签和过滤器
Jul 03 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
python可以用哪些数据库
Jun 22 Python
Tensorflow tensor 数学运算和逻辑运算方式
Jun 30 Python
python自动化发送邮件实例讲解
Jan 04 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 Python
详细介绍python操作RabbitMq
Apr 12 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
session 加入redis的实现代码
2016/07/15 PHP
AJAX的使用方法详解
2017/04/29 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
基于node.js实现微信支付退款功能
2017/12/19 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
编程输出如下图形
2013/11/24 面试题
学生个人的自我评价分享
2013/11/05 职场文书
新书吧创业计划书
2014/01/31 职场文书
客服部工作职责范本
2014/02/14 职场文书
会计系毕业生求职信
2014/05/28 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
公司租房协议书
2014/10/14 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
加薪申请报告范本
2015/05/15 职场文书
健康证明
2015/06/19 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP