pytorch中的transforms模块实例详解

作者:gaishi_hero 时间:2022-04-25 19:50:58 

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

来源:https://blog.csdn.net/gaishi_hero/article/details/81153926

标签:pytorch,transforms
0
投稿

猜你喜欢

  • javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)

    2023-08-18 20:01:36
  • pycharm激活方法到2099年(激活流程)

    2022-11-17 05:45:35
  • 利用Python实现Windows下的鼠标键盘模拟的实例代码

    2023-06-22 04:37:31
  • 详解python3中的真值测试

    2022-03-10 13:56:59
  • 利用Python实现sqlite3增删改查的封装

    2021-06-19 14:57:05
  • MySQL Order By语法

    2011-01-04 19:58:00
  • 利用SQL语句对不同数据库进行高效果分页

    2008-11-28 14:44:00
  • 前淘宝前端开发工程师阿当的PPT中有JS技术理念问题

    2024-05-25 15:17:53
  • Python字符串类型及格式化问题

    2023-12-30 21:49:46
  • Python调用Prometheus监控数据并计算

    2023-12-01 02:18:39
  • Python利用雪花算法实现生成唯一ID

    2022-10-18 14:49:06
  • php面象对象数据库操作类实例

    2023-10-13 22:33:05
  • Python基础第三方模块requests openpyxl

    2023-09-24 04:31:32
  • 实例详解mysql子查询

    2024-01-26 22:22:29
  • 手把手带你走进Go语言之常量解析

    2024-05-08 10:44:38
  • JavaScript实现网页跨年倒计时

    2024-06-14 18:24:43
  • Python subprocess库六个实例快速掌握

    2021-02-22 05:53:56
  • 详谈Python基础之内置函数和递归

    2021-12-19 21:55:40
  • CentOS6.9+Mysql5.7.18源码安装详细教程

    2024-01-19 02:42:14
  • 使用Python3制作TCP端口扫描器

    2023-06-10 17:25:22
  • asp之家 网络编程 m.aspxhome.com