class torchvision.transforms.Scale(size, interpolation=2)
将输入的PIL.Image
重新改变大小成给定的size
,size
是最小边的边长。举个例子,如果原图的height>width
,那么改变大小后的图片大小是(size*height/width, size)
。
用例:
from torchvision import transforms
from PIL import Image
crop = transforms.Scale(12)
img = Image.open('test.jpg')
print(type(img))
print(img.size)
croped_img = crop(img)
print(type(croped_img))
print(croped_img.size)
class torchvision.transforms.CenterCrop(size)
将给定的PIL.Image
进行中心切割,得到给定的size
,size
可以是tuple
,(target_height, target_width)
。size
也可以是一个Integer
,在这种情况下,切出来的图片的形状是正方形。
class torchvision.transforms.RandomCrop(size, padding=0)
切割中心点的位置随机选取。size
可以是tuple
也可以是Integer
class torchvision.transforms.RandomHorizontalFlip
随机水平翻转给定的PIL.Image
,概率为 0.5 。即:一半的概率翻转,一半的概率不翻转。
class torchvision.transforms.RandomSizedCrop(size, interpolation=2)
先将给定的PIL.Image
随机切,然后再resize
成给定的size
大小。
class torchvision.transforms.Pad(padding, fill=0)
将给定的PIL.Image
的所有边用给定的pad value
填充。 padding:
要填充多少像素 fill:用什么值填充 例子:
from torchvision import transforms
from PIL import Image
padding_img = transforms.Pad(padding = 10, fill = 0)
img = Image.open('test.jpg')
print(type(img))
print(img.size)
padded_img = padding_img(img)
print(type(padding_img))
print(padded_img.size)
对Tensor进行变换
class torchvision.transforms.Normalize(mean, std)
给定均值:(R, G, B)
方差:(R,G,B)
,将会把Tensor
正则化。即:Normalized_image=(image-mean)/std。
Conversion Transforms
class torchvision.transforms.ToTensor
把一个取值范围是[0,255]
的PIL.Image
或者shape
为(H,W,C)
的numpy.ndarray
,转换成形状为[C,H,W]
,取值范围是[0,1.0]
的torch.FloadTensor
import numpy as np
data = np.random.randint(0, 255, size = 300)
img = data.reshape(10, 10, 3)
print(img.shape)
img_tensor = transforms.ToTensor()(img)
print(img_tensor)
(10, 10, 3)
tensor([[[112, 126, 223, 164, 168, 139, 162, 55, 229, 120],
[ 33, 64, 130, 233, 185, 151, 60, 58, 152, 233],
[ 6, 148, 198, 248, 87, 172, 13, 240, 191, 253],
[248, 0, 157, 181, 165, 249, 222, 215, 221, 234],
[144, 184, 111, 35, 119, 53, 141, 137, 81, 138],
[ 46, 48, 65, 216, 84, 162, 68, 47, 197, 139],
[212, 224, 239, 188, 0, 48, 83, 98, 12, 61],
[163, 74, 171, 183, 160, 220, 145, 69, 41, 201],
[ 11, 36, 85, 94, 69, 233, 176, 181, 208, 10],
[207, 252, 237, 131, 121, 95, 110, 168, 49, 207]],
[[200, 0, 249, 149, 105, 98, 173, 67, 40, 245],
[108, 76, 67, 69, 172, 12, 156, 158, 40, 191],
[126, 86, 157, 111, 78, 67, 98, 161, 10, 81],
[ 62, 147, 155, 199, 174, 228, 59, 29, 176, 150],
[129, 117, 69, 176, 210, 60, 77, 161, 97, 191],
[ 39, 210, 119, 202, 102, 45, 149, 185, 99, 133],
[235, 208, 179, 157, 252, 242, 204, 82, 237, 181],
[116, 215, 10, 166, 250, 179, 193, 45, 225, 88],
[ 90, 130, 29, 51, 34, 212, 130, 163, 139, 95],
[147, 7, 96, 47, 126, 194, 203, 212, 119, 186]],
[[119, 117, 149, 105, 44, 122, 94, 189, 189, 195],
[137, 145, 250, 120, 95, 195, 65, 221, 205, 17],
[ 53, 104, 102, 59, 108, 126, 233, 13, 242, 164],
[246, 238, 28, 145, 184, 252, 223, 125, 235, 7],
[184, 182, 246, 236, 41, 241, 171, 224, 97, 115],
[ 55, 162, 153, 56, 15, 202, 223, 85, 134, 95],
[ 5, 238, 238, 20, 98, 106, 101, 145, 230, 247],
[200, 181, 230, 180, 239, 77, 188, 64, 87, 12],
[128, 149, 195, 105, 53, 90, 66, 70, 173, 160],
[191, 150, 66, 156, 137, 73, 172, 125, 35, 60]]])
class torchvision.transforms.ToPILImage
将shape
为(C,H,W)
的Tensor
或shape
为(H,W,C)
的numpy.ndarray
转换成PIL.Image
,值不变。