数据格式转化,PyTorch就是救星!

磐创AI
关注

介绍

Pytorch是一个深度学习框架,广泛用于图像分类、分割、目标识别等各种任务。在这种情况下,我们必须处理各种类型的数据。很可能在大多数情况下,数据可能不是我们所需要的格式。PyTorch转换就是救星。

torchvision.transforms模块提供了可以使用的各种图像转换。我们使用变换对数据进行一些操作,使其适合于训练torchvision模块,PyTorch为常见的图像变换提供变换有关的函数。这些变换可以使用Compose链接在一起。

让我们在本文中看看其中的几个!准备好了吗?

1. ToTensor

这是一个非常常用的转换。在PyTorch中,我们主要处理张量形式的数据。如果输入数据是NumPy数组或PIL图像的形式,我们可以使用ToTensor将其转换为张量格式。

最后一个张量的形式是(C * H * W)。同时,还执行从0–255到0–1的范围内的缩放操作。

让我们用一个例子来更好地理解它。在这个博客中,我将使用Ragnar(我最喜欢的虚构角色)的图像来执行转换。

2.  Normalize

此操作将获取张量图像,并使用平均值和标准差对其进行归一化。它有3个参数:mean, std, inplace。我们需要为3个通道提供一系列平均值,作为参数“mean”,“std”类似。如果将“inplace”设为True,则将计算得到的值覆盖之前的值。

torchvision.transforms.Normalize([meanOfChannel1, meanOfChannel2, meanOfChannel3], [stdOfChannel1, stdOfChannel2, stdOfChannel3])
#Example:
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))

3. CenterCrop

这将在中心裁剪给定的张量图像。你可以以(高度、宽度)的形式向transforms.CenterCrop()提供要裁剪的大小作为输入。让我们在图像上实现这个并进行检查。

transform = transforms.Compose([transforms.ToTensor(),transforms.CenterCrop((200,100))])
tensor_img = transform(image)
tensor_img.shape
Output: torch.Size([3, 200, 100])

如果只提供一个尺寸标注而不是两个尺寸标注,会发生什么情况?

它将假设它是一个正方形,并且将生成一个(size, size))的裁剪。

如果给定的尺寸比原来的尺寸大呢?

沿着这些边,图像将填充0!

4. RandomHorizontalFlip

此变换将以给定的概率水平(随机)翻转图像。你可以通过参数“p”来设置这个概率。p的默认值为0.5。

检查我下面的例子来理解。

transform = transforms.Compose([transforms.RandomHorizontalFlip(p=0.9)])
tensor_img = transform(image)
tensor_img

查看原始图像和翻转的图像!

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存