使用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 第一步 hello world
Sep 25 Python
python写xml文件的操作实例
Oct 05 Python
Python的Flask框架中web表单的教程
Apr 20 Python
Django中反向生成models.py的实例讲解
May 30 Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
Python 多线程不加锁分块读取文件的方法
Dec 11 Python
python自动发微信监控报警
Sep 06 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
Python和Sublime整合过程图示
Dec 25 Python
jupyter 导入csv文件方式
Apr 21 Python
Python绘制分类图的方法
Apr 20 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 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
Zerg基本策略
2020/03/14 星际争霸
PHP中Session的概念
2006/10/09 PHP
php+mysql事务rollback&commit示例
2010/02/08 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
Python读写/追加excel文件Demo分享
2018/05/03 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
数据库测试通常都包括哪些方面
2015/11/30 面试题
车辆工程专业求职信
2014/04/28 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
优秀教师事迹材料
2014/12/15 职场文书
公司处罚决定书
2015/06/24 职场文书
2016年教代会开幕词
2016/03/04 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang