pytorch中的transforms模块实例详解


Posted in Python onDecember 31, 2019

pytorch中的transforms模块中包含了很多种对图像数据进行变换的函数,这些都是在我们进行图像数据读入步骤中必不可少的,下面我们讲解几种最常用的函数,详细的内容还请参考pytorch官方文档(放在文末)。

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_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]

最后需要强调一点的是,这几个变换的先后顺序有一定的讲究,因为不同的方法所处理的对象不一样,前两种变换是对PILImage进行的,而Normalize则是对tensor进行的,所以处理PILImage的变换方法(大多数方法)都需要放在ToTensor方法之前,而处理tensor的方法(比如Normalize方法)就要放在ToTensor方法之后。

附上pytorch官方参考:https://pytorch.org/docs/stable/torchvision/transforms.html?highlight=torchvision%20transforms

以上这篇pytorch中的transforms模块实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础入门学习笔记(Python环境搭建)
Jan 13 Python
Windows和Linux下Python输出彩色文字的方法教程
May 02 Python
python中的字典操作及字典函数
Jan 03 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 Python
python实现多进程通信实例分析
Sep 01 Python
Python中实现输入超时及如何通过变量获取变量名
Jan 18 Python
pycharm 更改创建文件默认路径的操作
Feb 15 Python
python Django 反向访问器的外键冲突解决
May 20 Python
python 调整图片亮度的示例
Dec 03 Python
python实现层次聚类的方法
Nov 01 Python
Pytorch 实现权重初始化
Dec 31 #Python
pytorch 归一化与反归一化实例
Dec 31 #Python
Pytorch 数据加载与数据预处理方式
Dec 31 #Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 #Python
pytorch: Parameter 的数据结构实例
Dec 31 #Python
Python测试线程应用程序过程解析
Dec 31 #Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 #Python
You might like
第五节--克隆
2006/11/16 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
php防止用户重复提交表单
2015/11/02 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
区分JS中的undefined,null,"",0和false
2007/03/08 Javascript
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
详解js中==与===的区别
2017/01/08 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
高中家长寄语
2014/04/02 职场文书
土地转让协议书范本
2014/04/15 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL