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中多线程thread与threading的实现方法
Aug 18 Python
Python读大数据txt
Mar 28 Python
python 全文检索引擎详解
Apr 25 Python
Django自定义认证方式用法示例
Jun 23 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
Python字符串中添加、插入特定字符的方法
Sep 10 Python
python3 pathlib库Path类方法总结
Dec 26 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
让Django的BooleanField支持字符串形式的输入方式
May 20 Python
Python使用Paramiko控制liunx第三方库
May 20 Python
举例讲解Python装饰器
Dec 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
配置支持SSI
2006/11/25 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
Jquery ui css framework
2010/06/28 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
使用cx_freeze把python打包exe示例
2014/01/24 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
Python中格式化字符串的四种实现
2020/05/26 Python
Spy++的使用方法及下载教程
2021/01/29 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
2015年毕业生自我鉴定模板
2014/09/19 职场文书
护士业务学习心得体会
2016/01/25 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android