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和文件夹名的映射关系。

图片结构如下所示:

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使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: pytorch之ImageFolder使用详解

本文地址: http://www.cppcns.com/jiaoben/python/297453.html

python transform(img)_pytorch之ImageFolder使用详解相关推荐

  1. torchvision.datasets.ImageFolder使用详解

    一.数据集组织方式 ImageFolder是一个通用的数据加载器,它要求我们以下面这种格式来组织数据集的训练.验证或者测试图片. root/dog/xxx.png root/dog/xxy.png r ...

  2. python labelencoder参数_对python 数据处理中的LabelEncoder 和 OneHotEncoder详解

    python 怎么读取 Label 里面的值 #简单来说 LabelEncoder 是对不连续的数字或者文本进行编号 from sklearn.preprocessing import LabelEn ...

  3. 【python教程入门学习】Python函数定义及传参方式详解(4种)

    这篇文章主要介绍了Python函数定义及传参方式详解(4种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.函数初识 1.定 ...

  4. python argv 详解_对python中的argv和argc使用详解

    主要问题 为什么argv中第一个,即index=0的内容就是文件名? python中argc是用什么实现的? 概念解释 argc:argument counter,命令行参数个数 argv:argum ...

  5. Python中的__name__和__main__含义详解

    背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main():     ...... if __name__ == "__ma ...

  6. 对python 数据处理中的LabelEncoder 和 OneHotEncoder详解

    对python 数据处理中的LabelEncoder 和 OneHotEncoder详解_起飞的木木的博客-CSDN博客_labelencoder原理

  7. python协程详解_对Python协程之异步同步的区别详解

    一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...

  8. python的raw_ input是什么意思-对python中raw_input()和input()的用法详解

    最近用到raw_input()和input()来实现即时输入,就顺便找了些资料来看,加上自己所用到的一些内容,整理如下: 1.raw_input() raw_input([prompt]) -> ...

  9. python中str和input_对python中raw_input()和input()的用法详解

    最近用到raw_input()和input()来实现即时输入,就顺便找了些资料来看,加上自己所用到的一些内容,整理如下: 1.raw_input() raw_input([prompt]) -> ...

最新文章

  1. Swagger 生成 PHP restful API 接口文档
  2. 隐马尔可夫模型维特比算法与前向算法区别
  3. SAP零售行业解决方案初阶 4 – 维护品类
  4. quartus中pin planner中分配引脚的对话框不见了,怎么找回(附方法)
  5. Boost:构造一个流对象,任何发送到此流将标准输出
  6. 【 D3.js 入门系列 --- 9 】 常见可视化图形
  7. OpenCV 中的绘制功能
  8. LiveVideoStack线上分享第四季(十):图像视频降噪的现在与未来——从经典方法到深度学习...
  9. monkey测试_安卓测试之monkey
  10. Python Demo 06 金庸武侠写作风格分析
  11. EditText图文混排
  12. [PHP] MIME邮件协议的multipart类型
  13. android获取操作系统版本号,Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类...
  14. mybatis 依赖于jdbc_使用基础mybatis代替原始jdbc
  15. 六步搞定RHEL5下的mysql镜像数据库配置
  16. Debian 7 Gitlab `GLIBC_2.14 not found`
  17. Atitit v2 工作计划与工作日志推荐格式markdown 与模板 attilax 总结
  18. C语言课设贪吃蛇说明书,c语言课设贪吃蛇.doc
  19. HTML学生个人网站作业设计:班级网站设计——上海学校 4页
  20. Android版添加phonegap--融云即时通讯插件教程

热门文章

  1. JavaScript事件流--事件冒泡、目标与事件捕获
  2. 查询数据表中重复记录
  3. db2建库、建表空间基本流程
  4. ORACLE 两个表或两个结果集的数据对比常用的函数
  5. Python sysos模块
  6. DropDownList如何绑定DataTable,如何绑定DataSet
  7. 工厂方法模式的一种特例——简单工厂模式
  8. Hive Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
  9. FreeWheel业务系统微服务化过程经验分享
  10. 操作argc, argv的经典写法