使用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编写检测数据库SA用户的方法
Jul 11 Python
Python类的专用方法实例分析
Jan 09 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
Python中将字典转换为列表的方法
Sep 21 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
python机器学习理论与实战(五)支持向量机
Jan 19 Python
Python可迭代对象操作示例
May 07 Python
Django中信号signals的简单使用方法
Jul 04 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
python如何获得list或numpy数组中最大元素对应的索引
Nov 16 Python
Django缓存Cache使用详解
Nov 30 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 文件缓存的性能测试
2010/04/25 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
Mootools 1.2教程 函数
2009/09/15 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
Vue computed计算属性的使用方法
2017/07/14 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
python检测远程端口是否打开的方法
2015/03/14 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
乌鸦喝水教学反思
2014/02/07 职场文书
《长征》教学反思
2014/04/27 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL