使用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修改Excel数据的实例代码
Nov 01 Python
Python multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
python类和继承用法实例
Jul 07 Python
使用Python解析JSON数据的基本方法
Oct 15 Python
python实现简单socket通信的方法
Apr 19 Python
Python使用自带的ConfigParser模块读写ini配置文件
Jun 26 Python
python3中bytes和string之间的互相转换
Feb 09 Python
python pandas中对Series数据进行轴向连接的实例
Jun 08 Python
python 返回列表中某个值的索引方法
Nov 07 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
Python基于gevent实现高并发代码实例
May 15 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 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制作静态网站的模板框架
2006/10/09 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
dess中一个简单的多路委托的实现
2010/07/20 Javascript
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
Angularjs 基础入门
2014/12/26 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
Python中的ceil()方法使用教程
2015/05/14 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
python基础教程之while循环
2019/08/14 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
《莫高窟》教学反思
2014/02/25 职场文书
四年级学生评语大全
2014/04/21 职场文书
企业精神口号
2014/06/11 职场文书
离婚协议书标准格式
2014/10/04 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
防汛通知
2015/04/25 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python