使用pytorch进行图像的顺序读取方法


Posted in Python onJuly 27, 2018

产生此次实验的原因:当我使用pytorch进行神经网络的训练时,需要每次向CNN传入一组图像,并且这些图片的存放位置是在两个文件夹中:

A文件夹:图片1a,图片2a,图片3a……图片1000a

B文件夹:图片1b, 图片2b,图片3b……图片1000b

所以在每个循环里,我都希望能从A中取出图片Na,同时从B文件夹中取出对应的图片Nb。

测试一:通过pytorch官方文档中的dataloader搭配python中的迭代器iterator

dataset = dset.ImageFolder( 
 root='./folder1', 
 transform=transforms.Compose([ 
  transforms.ToTensor(), 
  transforms.Normalize((0.5,0.5,0.5), (0.5,0.5,0.5)), # bring images to (-1,1) 
 ]) 
) 
dataloader1 = torch.utils.data.DataLoader(dataset, batch_size=opt.batchSize, shuffle=True, num_workers=opt.workers) 
iterator1 = iter(dataloader1)
for i in range(1,1001):
data = iterator1.next() 
data2 = iterator2.next()

将两个dataloader当作数据集,然后分别调用迭代器iter(),然后在每次调用的时候使用next()来得到数据。

测试一下:将每次读入的图像输出,不对!发现图像并不是按照图像1,图像2,图像3......这样顺序读取的,而是很奇怪的顺序。所以为了要顺序读取数据,我们需要使用别的方法。

测试一的实验结果:此路不通!

from PIL import Image
pathDir = os.listdir('./folder') #获取文件夹内所有文件的名称,生成数组 
 pathDir.sort() #对所有文件名进行排序
 for allDir in pathDir: 
 child = os.path.join('%s/%s' % ('./folder', allDir))#合成文件名 
 fopen = Image.open(child).convert('RGB') #通过PIL读取文件
 transform_list = [transforms.ToTensor(), 
    transforms.Normalize((0.5, 0.5, 0.5), 
  (0.5, 0.5, 0.5))] 
 transform = transforms.Compose(transform_list)#将PIL格式的文件转换成 tensor
 image = transform(fopen) #转换

测试二:首先得到文件夹下的所有文件名,将文件名数组做sort()排序,然后每次通过文件名读取图像。

输出每次读入的图片,发现每次排序不正确,它的排序方法是图片1,图片10,图片100……

与我们的期望不一样,所以这种方法也不对(可以重写sort函数来进行自定义的排序,这里不做深入探究)

测试二的实验结果:此路或许可通!

测试三:通过自己构造每次访问的文件名来访问

for i in range(1,1001): 
 drain = irain.next() 
 dnorain = iground.next() 
 drain = os.path.join('%s/图像%s' % ('./rainy_img', i)) #跟上面一样,不过因为已经知道文件的取名顺序,所以拼出需要访问的文件名
 fopen = Image.open(drain).convert('RGB') 
 drain = transform(fopen) 
 print(drain)

测试三的实验结果:此路畅通无阻!

以上这篇使用pytorch进行图像的顺序读取方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从Python程序中访问Java类的简单示例
Apr 20 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
python+flask实现API的方法
Nov 21 Python
python中类的属性和方法介绍
Nov 27 Python
django使用LDAP验证的方法示例
Dec 10 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
Python数据类型之列表和元组的方法实例详解
Jul 08 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
Apr 19 Python
Python新手如何理解循环加载模块
May 29 Python
Python循环之while无限迭代
Apr 30 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
Jul 27 #Python
pytorch 数据集图片显示方法
Jul 26 #Python
mac安装pytorch及系统的numpy更新方法
Jul 26 #Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 #Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 #Python
pytorch中tensor的合并与截取方法
Jul 26 #Python
Python爬虫框架Scrapy常用命令总结
Jul 26 #Python
You might like
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
jquery自定义表格样式
2015/11/23 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
python简单实现旋转图片的方法
2015/05/30 Python
使用Python解析JSON数据的基本方法
2015/10/15 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
python2与python3共存问题的解决方法
2018/09/18 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
大学生自荐书范文
2013/12/10 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
党员民主评议总结
2014/10/20 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
python基础之停用词过滤详解
2021/04/21 Python
PHP RabbitMQ消息列队
2022/05/11 PHP