pytorch中图像的数据格式实例


Posted in Python onFebruary 11, 2020

计算机视觉方面朋友都需要跟图像打交道,在pytorch中图像与我们平时在matlab中见到的图像数据格式有所不同。matlab中我们通常使用函数imread()来轻松地读入一张图像,我们在变量空间中可看到数据的存储方式是H x W x C的顺序(其中H、W、C分别表示图像的高、宽和通道数,通道数一般为RGB三通道),另外,其中的每一个数据都是[0,255]的整数。

在使用pytorch的时候,我们通常要使用pytorch中torchvision包下面的datasets模块和transforms模块。而通常情况下在我们使用了这两个模块之后,所处理的图像数据格式已经不是我们所熟知的格式了。

下面按照代码来进行讲解:

#导入需要的包和模块
import torch
from torchvision import datasets, transforms
import os
 
#transforms指明了需要对原始图像做何种变换
data_transforms = transforms.Compose([
    transforms.RandomResizedCrop(224),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),
    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
  ])
 
#指明了图像存放的位置;里面可能有好几个文件夹,分别存放不同种类的图像
data_dir = 'original_data'
image_dataset = datasets.ImageFolder(data_dir, data_transforms)
dataloader = torch.utils.data.DataLoader(image_dataset, batch_size=4, shuffle=True, num_workers=4)

代码中首先使用datasets模块读取图像数据,输出的图像类型为PILImage,并且图像中的每一个数据大小范围已经不再是[0,255],而是[0,1]。datasets模块下有好几个读取图像的类,比如CIFAR10、MNIST等能够直接获取标准数据库;而我们代码中所使用的类是ImageFolder,它能够读取本地存放的图像。其中需要指定图像所在文件路径和需要对数据进行的变换。

从上面的data_transforms变量中我们能够看出进行了多种变换,而Compose就是将多种变换组合起来的方法。data_transforms中一共包含了四个变换,前两个是对PILImage进行的,分别对其进行随机大小(默认原始图像大小的0.08-1.0)和随机宽高比(默认原始图像宽高比的3/4-4/3)的裁剪,之后resize到指定大小224;以及对原始图像进行随机(默认0.5概率)的水平翻转。

第三个transforms.ToTensor()的变换操作是关键一步,它将PILImage转变为torch.FloatTensor的数据形式,这种数据形式一定是C x H x W的图像格式加上[0,1]的大小范围。它将颜色通道这一维从第三维变换到了第一维。

后面的Normalize变换是对tensor这种数据格式进行的,它的操作是用给定的均值和标准差分别对每个通道的数据进行正则化。具体来说,给定均值(M1,...,Mn),给定标准差(S1,..,Sn),其中n是通道数(一般是3),对每个通道进行如下操作:

output[channel] = (input[channel] - mean[channel]) / std[channel]

经过上面一系列的转换之后,我们可以得出的结论是,图像的数据格式首先在维度的排序上发生了改变,其次数据的范围也发生了改变。

以上这篇pytorch中图像的数据格式实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
Python脚本实现12306火车票查询系统
Sep 30 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
解决pandas使用read_csv()读取文件遇到的问题
Jun 15 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
详解python多线程之间的同步(一)
Apr 03 Python
一篇文章了解Python中常见的序列化操作
Jun 20 Python
Python 实现日志同时输出到屏幕和文件
Feb 19 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 Python
python基于win32api实现键盘输入
Dec 09 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
Feb 11 #Python
python中文分词库jieba使用方法详解
Feb 11 #Python
Transpose 数组行列转置的限制方式
Feb 11 #Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 #Python
tensorflow多维张量计算实例
Feb 11 #Python
python误差棒图errorbar()函数实例解析
Feb 11 #Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 #Python
You might like
用来给图片加水印的PHP类
2008/04/09 PHP
php socket方式提交的post详解
2008/07/19 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Python对excel文档的操作方法详解
2018/12/10 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
机电专业大学生求职信
2013/10/04 职场文书
大学生学习党课思想汇报
2014/01/03 职场文书
批评与自我批评材料
2014/02/15 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
情况说明书怎么写
2015/10/08 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python