PyTorch torchvision transforms函数

class torchvision.transforms.Scale(size, interpolation=2)

将输入的PIL.Image重新改变大小成给定的sizesize是最小边的边长。举个例子,如果原图的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进行中心切割,得到给定的sizesize可以是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)Tensorshape(H,W,C)numpy.ndarray转换成PIL.Image,值不变。

发布了182 篇原创文章 · 获赞 101 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/lancecrazy/article/details/100545156