PyTorch官方中文文檔:torchvision.transforms
阿新 • • 發佈:2018-03-10
正則 slam dal get bsp ops compose python val
的所有邊用給定的
例子:
pytorch torchvision transform
對PIL.Image進行變換
class torchvision.transforms.Compose(transforms)
將多個transform
組合起來使用。
transforms
: 由transform
構成的列表.
例子:
transforms.Compose([ transforms.CenterCrop(10), transforms.ToTensor(), ]) ``` ### class torchvision.transforms.Scale(size, interpolation=2) 將輸入的`PIL.Image`重新改變大小成給定的`size`,`size`是最小邊的邊長。舉個例子,如果原圖的`height>width`,那麽改變大小後的圖片大小是`(size*height/width, size)`。 **用例:** ```python 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 ‘PIL.PngImagePlugin.PngImageFile‘>
(10, 10)
<class ‘PIL.Image.Image‘>
(12, 12)
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)
print(type(padded_img))
print(padded_img.size)
<class ‘PIL.PngImagePlugin.PngImageFile‘>
(10, 10)
<class ‘PIL.Image.Image‘>
(30, 30) #由於上下左右都要填充10個像素,所以填充後的size是(30,30)
對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
data = np.random.randint(0, 255, size=300)
img = data.reshape(10,10,3)
print(img.shape)
img_tensor = transforms.ToTensor()(img) # 轉換成tensor
print(img_tensor)
class torchvision.transforms.ToPILImage
將shape
為(C,H,W)
的Tensor
或shape
為(H,W,C)
的numpy.ndarray
轉換成PIL.Image
,值不變。
通用變換
class torchvision.transforms.Lambda(lambd)
使用lambd
作為轉換器。
艾伯特(http://www.aibbt.com/)國內第一家人工智能門戶
PyTorch官方中文文檔:torchvision.transforms