使用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函数参数*args**kwargs用法实例
Dec 04 Python
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
使用python在本地电脑上快速处理数据
Jun 22 Python
Python排序搜索基本算法之归并排序实例分析
Dec 08 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 Python
使用python+whoosh实现全文检索
Dec 09 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
在django项目中导出数据到excel文件并实现下载的功能
Mar 13 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
Python基于smtplib模块发送邮件代码实例
May 29 Python
Python数据可视化图实现过程详解
Jun 12 Python
如何用python清洗文件中的数据
Jun 18 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
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
Django 返回json数据的实现示例
2020/03/05 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
法学专业毕业生求职信
2014/06/12 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
投资合作意向书范本
2015/05/08 职场文书
员工福利申请报告
2015/05/15 职场文书
小英雄雨来观后感
2015/06/09 职场文书
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电