使用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实现RSA加密(解密)算法
Feb 17 Python
Python中常见的异常总结
Feb 20 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
pandas ix &iloc &loc的区别
Jan 10 Python
详解10个可以快速用Python进行数据分析的小技巧
Jun 24 Python
解决Python3 抓取微信账单信息问题
Jul 19 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
解决echarts中饼图标签重叠的问题
May 16 Python
pytorch 如何使用float64训练
May 24 Python
用Python selenium实现淘宝抢单机器人
Jun 18 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 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
PHPMyAdmin 快速配置方法
2009/05/11 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
浅谈JavaScript字符串拼接
2015/06/25 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
Django 拆分model和view的实现方法
2019/08/16 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
精彩的推荐信范文
2013/11/26 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
劲霸男装广告词
2014/03/21 职场文书
2014年教育工作总结
2014/11/26 职场文书
自主招生自荐信范文
2015/03/04 职场文书
个人党性锻炼总结
2015/03/05 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
圆明园纪录片观后感
2015/06/03 职场文书