pytorch中的transforms模块实例详解

(编辑:jimmy 日期: 2025/10/2 浏览:2)

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模块实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

一句话新闻

高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。