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常用正则表达式符号浅析
Aug 13 Python
python time模块用法实例详解
Sep 11 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
详解python中list的使用
Mar 15 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
Jupyter Notebook远程登录及密码设置操作
Apr 10 Python
Python如何绘制日历图和热力图
Aug 07 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 Python
python 对图片进行简单的处理
Jun 23 Python
Python中rapidjson参数校验实现
Jul 25 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 mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
python实现归并排序算法
2018/11/22 Python
Django后台admin的使用详解
2019/07/08 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
党员培训思想汇报
2014/01/07 职场文书
静心口服夜广告词
2014/03/20 职场文书
个人合伙协议书范本
2014/10/14 职场文书
计算机实训报告范文
2014/11/05 职场文书
计划生育汇报材料
2014/12/26 职场文书
法人代表证明书范本
2015/06/18 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang
Python内置数据结构列表与元组示例详解
2021/08/04 Python
python中if和elif的区别介绍
2021/11/07 Python