使用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数组,并将其保存为图像。
