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中列表(list)操作方法汇总
Aug 18 Python
python字典的常用操作方法小结
May 16 Python
python模块之time模块(实例讲解)
Sep 13 Python
Python温度转换实例分析
Jan 17 Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 Python
Python开发网站目录扫描器的实现
Feb 21 Python
详解如何设置Python环境变量?
May 13 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
安装不同版本的tensorflow与models方法实现
Feb 20 Python
pandas map(),apply(),applymap()区别解析
Feb 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
Discuz 模板引擎的封装类代码
2008/07/18 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
原生js调用json方法总结
2018/02/22 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
wxPython实现带颜色的进度条
2019/11/19 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
python与idea的集成的实现
2020/11/20 Python
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
《可爱的动物》教学反思
2014/02/22 职场文书
校园演讲稿汇总
2014/05/21 职场文书
水电工岗位职责
2015/02/14 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android