使用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开发微信支付的注意事项
Aug 19 Python
Python sqlite3事务处理方法实例分析
Jun 19 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
Django中间件工作流程及写法实例代码
Feb 06 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
Feb 22 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
python爬虫爬取幽默笑话网站
Oct 24 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
python解包用法详解
Feb 17 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操作JSON格式数据的实现代码
2011/12/24 PHP
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
PHP多文件上传实例
2015/07/09 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
vue之浏览器存储方法封装实例
2018/03/15 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
js实现转动骰子模型
2019/10/24 Javascript
python解析xml模块封装代码
2014/02/07 Python
跟老齐学Python之Python安装
2014/09/12 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
浅述python2与python3的简单区别
2018/09/19 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
给水工程专业毕业生自荐信
2014/01/28 职场文书
学生党员公开承诺书
2014/05/28 职场文书
运动会班级前导词
2015/07/20 职场文书
修辞手法有哪些?
2019/08/29 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
nginx搭建NFS网络文件系统
2022/04/14 Servers