使用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 的内置字符串方法小结
Mar 15 Python
python下调用pytesseract识别某网站验证码的实现方法
Jun 06 Python
Python中字符串的常见操作技巧总结
Jul 28 Python
详解python开发环境搭建
Dec 16 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
python批量修改文件编码格式的方法
May 31 Python
python实现按行分割文件
Jul 22 Python
sklearn+python:线性回归案例
Feb 24 Python
Django使用rest_framework写出API
May 21 Python
python 如何在测试中使用 Mock
Mar 01 Python
Django展示可视化图表的多种方式
Apr 08 Python
Python开发五子棋小游戏
Apr 28 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
深入PHP FTP类的详解
2013/06/13 PHP
PHP实现懒加载的方法
2015/03/07 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
js压缩利器
2007/02/20 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
Python MySQLdb Linux下安装笔记
2015/05/09 Python
Python实现删除文件但保留指定文件
2015/06/21 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
Python远程linux执行命令实现
2020/11/11 Python
美国老牌主机服务商:iPage
2016/07/22 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
中间件的定义
2016/08/09 面试题
给分销商的致歉信
2014/01/14 职场文书
班组长竞聘书
2014/03/31 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
小班上学期个人总结
2015/02/12 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
2015年度物流工作总结
2015/04/30 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers