使用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实现的简单猜数字游戏
Apr 04 Python
使用SAE部署Python运行环境的教程
May 05 Python
带你了解python装饰器
Jun 15 Python
python使用fork实现守护进程的方法
Nov 16 Python
python实现对服务器脚本敏感信息的加密解密功能
Aug 13 Python
Python使用APScheduler实现定时任务过程解析
Sep 11 Python
详解python tkinter模块安装过程
Jan 06 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
Python pip install之SSL异常处理操作
Sep 03 Python
python如何调用百度识图api
Sep 29 Python
python 自动识别并连接串口的实现
Jan 19 Python
python实现Nao机器人的单目测距
Sep 04 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编写一个简单的路由类
2011/04/13 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
创建一般js对象的几种方式
2017/01/19 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
详解.vue文件解析的实现
2018/06/11 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
Python中生成器和迭代器的区别详解
2018/02/10 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
预备党员转正思想汇报
2014/09/26 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
中标通知书范本
2015/04/17 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python