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的安装图文教程(Windows)
Dec 28 Python
python spyder中读取txt为图片的方法
Apr 27 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
Python对excel文档的操作方法详解
Dec 10 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
Python+AutoIt实现界面工具开发过程详解
Aug 07 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
如何利用Python 进行边缘检测
Oct 14 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 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将向Java靠拢
2006/10/09 PHP
PHP跳转页面的几种实现方法详解
2013/06/08 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
php之可变变量的实例详解
2017/09/12 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
js实现继承的5种方式
2015/12/01 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
Django logging配置及使用详解
2019/07/23 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
python3实现弹弹球小游戏
2019/11/25 Python
python模拟实现斗地主发牌
2020/01/07 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
adidas泰国官网:adidas TH
2020/07/11 全球购物
客户代表自我评价范例
2013/09/24 职场文书
大学生创业计划书的格式要求
2013/12/29 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
10大幻兽系恶魔果实 蝙蝠果实上榜,第一自愈能力强
2022/03/18 日漫