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 相关文章推荐
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
Python实现删除文件但保留指定文件
Jun 21 Python
使用python实现rsa算法代码
Feb 17 Python
python结合shell查询google关键词排名的实现代码
Feb 27 Python
python爬取淘宝商品详情页数据
Feb 23 Python
Python函数式编程实例详解
Jan 17 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
Django多个app urls配置代码实例
Nov 26 Python
Python实现PS滤镜中的USM锐化效果
Dec 04 Python
python文件目录操作之os模块
May 08 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 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 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
asp批量修改记录的代码
2008/06/25 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
pyv8学习python和javascript变量进行交互
2013/12/04 Python
python多线程之事件Event的使用详解
2018/04/27 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
django框架auth模块用法实例详解
2019/12/10 Python
Python with标签使用方法解析
2020/01/17 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
高中生毕业自我鉴定范文
2013/12/22 职场文书
大家检讨书5000字
2014/02/03 职场文书
表扬稿范文
2015/01/17 职场文书
法律讲堂观后感
2015/06/11 职场文书
小马王观后感
2015/06/11 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏