PyTorch圖像預處理


參考:https://pytorch-cn.readthedocs.io/zh/latest/torchvision/torchvision-transform/

1.pytorch torchvision transform

對PIL.Image進行變換: 

2. class torchvision.transforms.Compose(transforms) :將多個transform組合起來使用

transforms.Compose([
     transforms.CenterCrop(10),
     transforms.ToTensor(),
 ])

3. class torchvision.transforms.CenterCrop(size) 

將指定的PIL.Image進行中心切割,得到給定的size,size可以是tuple:(target_height, target_width)。

size也可以是一個 Integer,這種情況下,切出來的圖片形狀是正方形。

4. class torchvision.transforms.RandomCrop(size, padding=0)

切割中心點的位置隨機選取。size可以是tuple也可以是Integer。

5.class torchvision.transforms.RandomHorizontalFlip

隨機水平翻轉給定的PIL.Image,概率為0.5,一半的概率翻轉,一半的概率不翻轉。

6. class torchvision.transforms.RandomSizedCrop(size, interpolation=2)

先將PIL.Image隨機切,然后再resize成給定的size大小。

7. class torchvison.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)

#output:
<class 'PIL.PngImagePlugin.PngImageFile'>
(10, 10)
<class 'PIL.Image.Image'>
(30, 30) #由於上下左右都要填充10個像素,所以填充后的size是(30,30)

8. 對Tensor進行變換。

class torchvision.transforms.Normalize(mean, std)

給定均值和方差,將會把Tensor正則化。即Normalized_image=(image-mean)/std。

9.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)

10. class torchvision.transforms.ToPILImage

將shape為(C,H,W)的Tensor或者shape為(H,W,C)的numpy.ndarray轉換為PIL.Image,值不變。

11. 通用變換

class torchvision.transforms.Lambda(lambd); 使用lambd作為轉換器。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM