数据格式转化,PyTorch就是救星!
介绍
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.shapeOutput: 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
查看原始图像和翻转的图像!