Transform

transform的结构及用法

  • transform主要是对图片进行变化
  • tensor : 张量
  • 示例代码:
  1. from PIL import Image
  2. from torchvision import transforms
  3. from torch.utils.tensorboard import SummaryWriter
  4. writer = SummaryWriter("logs")
  5. img_path = "dataset/train/bees/16838648_415acd9e3f.jpg"
  6. img = Image.open(img_path)
  7. # transform的使用,将图片转换为Tensor类型
  8. tensor_trans = transforms.ToTensor()
  9. tensor_img = tensor_trans(img)
  10. print(tensor_img)
  11. writer.add_image("Tensor_img",tensor_img)
  12. writer.close()

常见的Transform及使用

  • Compose
  • Compose()的参数需要是一个列表,python中列表的形式是[数据1,数据2],
    在Compose中,数据需要是transfroms类型,所以得到Compose([transforms数据1, transforms数据2])
  • 示例代码:
  1. from PIL import Image
  2. from torchvision import transforms
  3. from torch.utils.tensorboard import SummaryWriter
  4. img_path = "dataset/train/bees/16838648_415acd9e3f.jpg"
  5. img = Image.open(img_path)
  6. print(img)
  7. writer = SummaryWriter("logs")
  8. # ToTensor的用法
  9. trans_tensor = transforms.ToTensor()
  10. img_tensor = trans_tensor(img)
  11. writer.add_image("tensor_img",img_tensor)
  12. # Normalize的使用
  13. print(img_tensor[0][0][0])
  14. # trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
  15. # trans_norm = transforms.Normalize([1,2,3],[2,6,9])
  16. trans_norm = transforms.Normalize([9,8,7],[1,3,2])
  17. img_norm = trans_norm(img_tensor)
  18. print(img_norm[0][0][0])
  19. # 可以通过print看出img_tensor的张量值会发生变化
  20. # writer.add_image("Normlize",img_norm)
  21. # writer.add_image("Normlize",img_norm,1)
  22. writer.add_image("Normlize",img_norm,2)
  23. # 如果看网页里的图片会发现像素值发生了改变
  24. # 这几个变化难以用语言描述,自己运行查看吧
  25. # Resize的使用
  26. print(img)
  27. trans_resize = transforms.Resize((102,1024))
  28. # PIL -> resize -> PIL
  29. img_resize = trans_resize(img)
  30. # PIL -> tensor
  31. img_resize = trans_tensor(img_resize)
  32. writer.add_image("Resize",img_resize,3)
  33. print(img_resize)
  34. # 改变图片的尺寸,看名字就能看懂的函数
  35. # Compose -> resize
  36. trans_resize_2 = transforms.Resize(512)
  37. trans_compose = transforms.Compose([trans_resize_2,trans_tensor])
  38. img_resize_2 = trans_compose(img)
  39. writer.add_image("Resize",img_resize_2,4)
  40. # RandomCrop
  41. # trans_random = transforms.RandomCrop(100)
  42. trans_random = transforms.RandomCrop((100,50))
  43. trans_compose_2 = transforms.Compose([trans_random, trans_tensor])
  44. for i in range(10):
  45. img_crop = trans_compose_2(img)
  46. # writer.add_image("Random",img_crop,i)
  47. writer.add_image("RandomHW",img_crop,i)
  48. writer.close()

python中call的用法

  1. class person:
  2. def __call__(self,name):
  3. print("__call__"+" Hello "+name)
  4. def hello(self,name):
  5. print("hello "+name)
  6. student = person()
  7. student.hello("zhangsan")
  8. print("\n")
  9. student("lisi")