使用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 MD5加密实例详解
Aug 02 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
Feb 13 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
Python编程flask使用页面模版的方法
Dec 28 Python
python实现AES加密和解密
Mar 27 Python
Python实现12306火车票抢票系统
Jul 04 Python
Python正则表达式匹配日期与时间的方法
Jul 07 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 Python
pycharm + django跨域无提示的解决方法
Dec 06 Python
python爬取youtube视频的示例代码
Mar 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设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
eclipse php wamp配置教程
2016/06/30 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
javascript Keycode对照表
2009/10/24 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
Python实现提取文章摘要的方法
2015/04/21 Python
在Python中使用元类的教程
2015/04/28 Python
使用Python对SQLite数据库操作
2017/04/06 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
python 文件转成16进制数组的实例
2018/07/09 Python
Python整数对象实现原理详解
2019/07/01 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
python实现移动木板小游戏
2020/10/09 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
水电站项目建议书
2014/05/12 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书