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中为feedparser设置超时时间避免堵塞
Sep 28 Python
python轻松实现代码编码格式转换
Mar 26 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
机器学习10大经典算法详解
Dec 07 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
Python hashlib模块实例使用详解
Dec 24 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
Python操作Excel把数据分给sheet
May 20 Python
如何使用Python调整图像大小
Sep 26 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 Python
python 判断文件或文件夹是否存在
Mar 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 图像函数大举例(非原创)
2009/06/20 PHP
认识并使用PHP超级全局变量
2010/01/26 PHP
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
Python格式化css文件的方法
2015/03/10 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
python要安装在哪个盘
2020/06/15 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
Python实现壁纸下载与轮换
2020/10/19 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
自我鉴定书范文
2013/10/02 职场文书
政法大学毕业生自荐信范文
2014/01/01 职场文书
运动会方阵解说词
2014/02/12 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
社区服务活动报告
2015/02/05 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android