【pyTorch基础】数据加载和处理

from PIL import Image
from torchvision import transforms as T
import torch
to_tensor = T.ToTensor() # 转换一个PIL库的图片或者numpy的数组转为tensor张量类型:[0,255]->[0,1]
to_pil = T.ToPILImage() # 将Numpy的ndarray或者Tensor转化成PILImage类型
cat = Image.open('./data/image/cat.jpg')
cat_c = to_tensor(cat) # 图片转张量
print(cat_c.shape)
cat_c = to_pil(cat_c) # 张量转PILImage
torch.Size([3, 1274, 1280])
# 将tensor转换为PILImage
t_out = torch.randn(3,256,256)
img1 = T.ToPILImage()(t_out)
img1

【pyTorch基础】数据加载和处理_第1张图片

torchvision.transforms.CenterCrop:从图像中心裁剪图片

transforms = T.Compose([T.Resize(224),T.CenterCrop(224),T.ToTensor()])# 当T.CenterCrop()的参数大于T.Resize()的参数时,周围用0(黑色)填充
print(transforms)
# 先将整张图片大小缩小为长宽224,再对中心裁剪长宽224,相当于缩小图片
# T.Compose:将操作整合
# 生成了一个带有T.resize等功能的转换器
cat_t = transforms(cat)# 将图片放入转换器进行转换
print(cat_t.shape)
to_pil(cat_t) # 将tensor格式的图片转为pil
Compose(
    Resize(size=224, interpolation=bilinear, max_size=None, antialias=None)
    CenterCrop(size=(224, 224))
    ToTensor()
)
torch.Size([3, 224, 224])

【pyTorch基础】数据加载和处理_第2张图片

torchvision.transforms.RandomCrop:从图片中随机裁剪出尺寸为size的图片

transforms = T.Compose([T.Resize(224),T.RandomCrop(256, padding=(16, 64)),T.ToTensor()])
# 先上下填充64,左右填充16(图像变大了),再随机256*256裁剪
cat_t = transforms(cat)
print(cat_t.shape)  # 3*224*224
to_pil(cat_t)
torch.Size([3, 256, 256])

【pyTorch基础】数据加载和处理_第3张图片

# padding_mode:constant,edge,reflect,symmetric,constant时像素值由fill设定
transforms = T.Compose([T.Resize(224), T.RandomCrop(352,padding=(64,64),padding_mode = 'constant', fill=66),T.ToTensor()])
cat_t = transforms(cat)
to_pil(cat_t)

【pyTorch基础】数据加载和处理_第4张图片

# torchvision.transforms.RandomHorizontalFlip
transforms = T.Compose([T.Resize(224),T.RandomHorizontalFlip(p=0.5),T.ToTensor()])  # 以0.5的概率左右翻转
cat_t = transforms(cat)  
cat_t.shape 
to_pil(cat_t)

【pyTorch基础】数据加载和处理_第5张图片

# torchvision.transforms.RandomRotation
transforms = T.Compose([T.Resize(224),T.RandomRotation(30, center=(0, 0), expand=True),T.ToTensor()]) 
cat_t = transforms(cat)  
cat_t.shape  
to_pil(cat_t)

【pyTorch基础】数据加载和处理_第6张图片

transform方法

裁剪

  1. transforms.CenterCrop
  2. transforms.RandomCrop
  3. transforms.RandomResizedCrop
  4. transforms.FiveCrop
  5. transforms.TenCrop

翻转和旋转

  1. transforms.RandomHorizontalFlip
  2. transforms.RandomVerticalFlip
  3. transforms.RandomRotation

图像变换

  1. transforms.Pad
  2. transforms.ColorJitter
  3. transforms.Grayscale
  4. transforms.RandomGrayscale
  5. transforms.RandomAffine
  6. transforms.LinearTransformation
  7. transforms.RandomErasing
  8. transforms.Lambda
  9. transforms.Resize
  10. transforms.Totensor
  11. transforms.Normalize

transforms的操作

  1. transforms.RandomChoice
  2. transforms.RandomApply
  3. transforms.RandomOrder

你可能感兴趣的:(pyTorch,pytorch,python,numpy)