使用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 相关文章推荐
zbar解码二维码和条形码示例
Feb 07 Python
Python函数嵌套实例
Sep 23 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
python实现对一个完整url进行分割的方法
Apr 29 Python
Python使用functools模块中的partial函数生成偏函数
Jul 02 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
python 中xpath爬虫实例详解
Aug 26 Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
Python代码需要缩进吗
Jul 01 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 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 date函数常用时间处理方法
2015/05/11 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
JavaScript 学习历程和心得分享
2010/12/12 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
jQuery预加载图片常用方法
2015/06/15 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
利用Python读取文件的四种不同方法比对
2017/05/18 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
Python入门之后再看点什么好?
2018/03/05 Python
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
pandas数据集的端到端处理
2019/02/18 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
Python发送邮件实现基础解析
2020/08/14 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
HTML5 Canvas实现360度全景图的示例代码
2018/01/29 HTML / CSS
银行学习十八大感想
2014/01/11 职场文书
致铅球运动员加油稿
2014/02/13 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
一年级评语大全
2014/04/23 职场文书
买房子个人收入证明
2014/10/12 职场文书
丧事答谢词
2015/01/05 职场文书
单位接收函范文
2015/01/30 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python
使用JS实现简易计算器
2021/06/14 Javascript