Transforms常用的图像预处理方法。
image.png

ToTensor

可以将PIL(Python Imaging Library是Python中最基础的图像处理库)格式图片转换为tensor格式。

  1. from PIL import Image
  2. from torch.utils.tensorboard import SummaryWriter
  3. from torchvision import transforms
  4. image_path = "数据集/dataset/train/ants_image/0013035.jpg"
  5. img = Image.open(image_path)
  6. writer = SummaryWriter("log")
  7. # ToTensor
  8. trans_totensor = transforms.ToTensor()
  9. img_tensor = trans_totensor(img)
  10. writer.add_image("Tensor_img", img_tensor)
  11. writer.close()

Normalize

归一化tensor格式图片。
image.png

  1. from PIL import Image
  2. from torch.utils.tensorboard import SummaryWriter
  3. from torchvision import transforms
  4. image_path = "数据集/dataset/train/ants_image/0013035.jpg"
  5. img = Image.open(image_path)
  6. writer = SummaryWriter("log")
  7. # ToTensor
  8. trans_totensor = transforms.ToTensor()
  9. img_tensor = trans_totensor(img)
  10. writer.add_image("Tensor_img", img_tensor)
  11. # Normalize
  12. print(img_tensor[0][0][0])
  13. trans_norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
  14. img_norm = trans_norm(img_tensor)
  15. print(img_norm[0][0][0])
  16. writer.add_image("Normalize", img_norm)
  17. writer.close()

image.png
image.png

Resize

改变图片的尺寸大小。

  1. # Resize
  2. print(img.size)
  3. trans_resize = transforms.Resize((512, 512))
  4. # img PIL -> resize -> img_resize PIL
  5. img_resize = trans_resize(img)
  6. # img_resize PIL -> totensor ->img_resize tensor
  7. img_resize = trans_totensor(img_resize)
  8. writer.add_image("Resize", img_resize, 0)
  9. print(img_resize)

image.png

Compose

方法列表的组合,列表里放的都是方法,前一个的输出作为后一个的输入,可以减少代码量。

  1. # Compose
  2. trans_resize_2 = transforms.Resize(512)
  3. # PIL -> PIL ->tensor
  4. trans_compose = transforms.Compose([trans_resize_2, trans_totensor])
  5. img_resize_2 = trans_compose(img)
  6. writer.add_image("Compose", img_resize_2, 0)

RandomCrop

随机裁剪。

  1. # RandomCrop
  2. trans_random = transforms.RandomCrop((200, 300))
  3. trans_compose_2 = transforms.Compose([trans_random, trans_totensor])
  4. for i in range(10):
  5. img_crop = trans_compose_2(img)
  6. writer.add_image("RandomCrop", img_crop, i