了解torchvision.transformsRandomAffine()函数的随机仿射变换功能
torchvision.transforms.RandomAffine()函数是一个用于进行随机仿射变换的函数,其功能是对输入的PIL Image进行随机仿射变换操作。
该函数的参数包括:
- degrees:表示仿射变换的旋转角度的范围。可以是一个单独的数值,表示旋转角度的范围为(-degrees, degrees),也可以是一个表示范围的元组,表示旋转角度的范围为(degrees[0], degrees[1]);
- translate:表示仿射变换的平移范围。可以是一个单独的数值,表示平移范围的比例为(-translate, translate),也可以是一个表示范围的元组,表示平移范围的比例为(translate[0], translate[1]);
- scale:表示仿射变换的缩放范围。可以是一个单独的数值,表示缩放序列的范围为(1-scale, 1+scale),也可以是一个表示范围的元组,表示缩放范围的比例为(scale[0], scale[1]);
- shear:表示仿射变换的剪切范围(以弧度为单位)。可以是一个单独的数值,表示剪切范围的比例为(-shear, shear),也可以是一个表示范围的元组,表示剪切范围的比例为(shear[0], shear[1]);
- resample:表示对输入图像的插值方式。可以是PIL图像的插值模式,如'PIL.Image.NEAREST'、'PIL.Image.BILINEAR'等;
- fillcolor:表示图像的填充颜色。可以是一个整数,表示填充颜色的值,也可以是一个由三个整数组成的元组,表示RGB的填充颜色。
下面是一个使用示例:
import torchvision.transforms as transforms
from PIL import Image
# 读取输入图像
img = Image.open('input.jpg')
# 创建一个随机仿射变换的transform
transform = transforms.RandomAffine(degrees=(-30, 30), translate=(0.1, 0.1), scale=(0.8, 1.2), shear=(-10, 10), resample=Image.BILINEAR, fillcolor=(255, 255, 255))
# 对输入图像进行随机仿射变换
img_transformed = transform(img)
# 显示变换后的图像
img_transformed.show()
上述示例中,我们首先使用PIL库的Image.open()函数读取输入图像,然后创建一个RandomAffine()函数的实例,将所需的参数传递给该函数,即设置旋转角度范围为-30到30度,平移范围为图像宽度和高度的10%,缩放范围为0.8到1.2倍,剪切范围为-10到10度,插值方式为双线性插值法,填充颜色为白色。最后,将输入图像img传递给变换函数transform()进行变换,并使用show()函数显示变换后的图像。
通过使用RandomAffine()函数,我们可以轻松地对PIL图像进行随机的仿射变换操作,为数据增强和模型训练提供更多样化的输入。
