使用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 + openpyxl处理excel2007文档思路以及心得
Jul 14 Python
Python与Redis的连接教程
Apr 22 Python
Python3 socket同步通信简单示例
Jun 07 Python
python使用pycharm环境调用opencv库
Feb 11 Python
查看django版本的方法分享
May 14 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
Feb 27 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
Mar 01 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
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
js静态作用域的功能。
2006/12/25 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
react-native 封装选择弹出框示例(试用ios&android)
2017/07/11 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
python执行等待程序直到第二天零点的方法
2015/04/23 Python
Python标准库之Sys模块使用详解
2015/05/23 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
python实现AdaBoost算法的示例
2020/10/03 Python
Python 使用office365邮箱的示例
2020/10/29 Python
python eventlet绿化和patch原理
2020/11/21 Python
介绍下WebSphere的安全性
2013/01/31 面试题
法学院毕业生求职信
2014/06/25 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
上甘岭观后感
2015/06/10 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang