欢迎访问宙启技术站
智能推送

使用torchvision.transformsRandomSizedCrop()在Python中进行随机尺寸裁剪的方法与示例

发布时间:2024-01-12 05:52:17

在PyTorch中,使用torchvision.transforms.RandomSizedCrop()可以进行随机尺寸裁剪。该函数可以在图像的随机位置裁剪一个子图像,并调整子图像的尺寸到给定的大小。

torchvision.transforms.RandomSizedCrop()有以下参数:

- size:输出图像的目标尺寸。

- scale:控制裁剪尺寸的范围。随机尺寸将在scale[0] * 面积scale[1] * 面积之间选择,其中面积是原始图像的面积。

- ratio:控制裁剪尺寸的宽高比。随机尺寸将在ratio[0]ratio[1]之间选择,其中1表示一个正方形图像。

以下是使用torchvision.transforms.RandomSizedCrop()进行随机尺寸裁剪的示例代码:

import torch
import torchvision.transforms as transforms
from PIL import Image

# 读取图像
image = Image.open('image.jpg')

# 定义裁剪尺寸范围和目标尺寸
scale_range = (0.08, 1.0)
ratio_range = (0.75, 1.33)
target_size = 224

# 创建随机尺寸裁剪的transforms
transform = transforms.Compose([
    transforms.RandomSizedCrop(target_size, scale=scale_range, ratio=ratio_range),
    transforms.ToTensor(),
])

# 进行随机尺寸裁剪
cropped_image = transform(image)

# 查看裁剪后的图像
cropped_image = cropped_image.numpy().transpose(1, 2, 0)
cropped_image = (cropped_image * 255).astype('uint8')
Image.fromarray(cropped_image)

在本例中,我们首先使用Image.open()函数加载图像,并定义了裁剪尺寸范围和目标尺寸。然后,我们创建一个transforms.Compose()实例来组合多个变换,并将transforms.RandomSizedCrop()作为 个变换添加到transforms中。然后,我们将图像转换为Tensor对象,并进行随机尺寸裁剪。最后,我们将裁剪后的图像转换为NumPy数组,并将其保存为图像。