当前位置:   article > 正文

Pytorch transforms 的研究

Pytorch transforms 的研究

绝对路径与相对路径差别

transforms的使用

  1. from torchvision import transforms
  2. from PIL import Image
  3. img_path ="dataset/train/bees/16838648_415acd9e3f.jpg"
  4. img = Image.open(img_path)
  5. tensor_trans = transforms.ToTensor()
  6. tensor_img =tensor_trans(img)
  7. print(tensor_img)

python中 导包写法复习

transforms.ToTensor() 的写法 transforms表示模块 ToTensor 表示函数 
from torchvision import transforms
  • from: 指明我们要从某个包或模块中导入。
  • torchvision: 这是一个包(package),是 PyTorch 生态系统中专门用于计算机视觉任务的库。
  • import: 指明我们要导入什么。
  • transforms: 这是 torchvision 包中的一个模块,专门用于图像转换和数据增强

Transforms 的使用(二)

  1. from torchvision import transforms
  2. from PIL import Image
  3. from torch.utils.tensorboard import SummaryWriter
  4. img_path ="dataset/train/bees/16838648_415acd9e3f.jpg"
  5. img = Image.open(img_path)
  6. writer = SummaryWriter("logs")
  7. tensor_trans = transforms.ToTensor()
  8. tensor_img =tensor_trans(img)
  9. writer.add_image("Tensor_img",tensor_img)
  10. writer.close()

常见的transform

__call__的作用:

Totensor的使用 :

Normalize归一化的使用:

  1. print(tensor_img[0][0][0])
  2. trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
  3. img_norm = trans_norm(tensor_img)
  4. print(img_norm[0][0][0])
  5. writer.close()

代码分析

三维均值与标准差

  1. 彩色图像结构:
    大多数彩色图像使用RGB(红、绿、蓝)颜色模型。每个像素由这三个颜色通道的值组成。

  2. 通道独立处理:
    在图像处理和深度学习中,通常会对每个颜色通道独立进行标准化。这意味着每个通道都有自己的均值和标准差。

  3. 三维均值和标准差:

    • 均值:[mean_R, mean_G, mean_B]
    • 标准差:[std_R, std_G, std_B]

    其中,mean_R 和 std_R 分别是红色通道的均值和标准差,以此类推。

标准化公式

def forward(self, tensor: Tensor) -> Tensor: return F.normalize(tensor, self.mean, self.std, self.inplace) 

这里的 F.normalize 是 PyTorch 的函数式接口中的一个函数,它封装了标准化的具体实现。虽然我们在这个类的定义中没有看到具体的计算过程,但是这个标准化公式是 F.normalize 函数内部实现的核心逻辑。

PyTorch 的文档和源码中会详细说明 F.normalize 函数的具体实现。标准化公式 output[channel] = (input[channel] - mean[channel]) / std[channel] 是在 F.normalize 函数内部执行的。

Resize的使用 

  1. print(img.size)
  2. trans_resize = transforms.Resize((512,512))
  3. img_resize = trans_resize(img)
  4. img_resize = tensor_trans(img_resize)
  5. writer.add_image("Resize",img_resize,0)
  6. print(img_resize)

Compose 的使用 :

Compose 将两个函数功能结合

  1. trans_resize_2 = transforms.Resize(512)
  2. trans_compose = transforms.Compose([trans_resize_2,tensor_trans])
  3. img_resize2 = trans_compose(img)
  4. writer.add_image("Resize2",img_resize2,1)
  5. writer.close()

RandomCrop裁剪:

  1. trans_Randomcrop = transforms.RandomCrop(256)
  2. trans_compose2 = transforms.Compose([trans_Randomcrop,tensor_trans])
  3. for i in range(10):
  4. img_crop = trans_compose2(img)
  5. writer.add_image("Randomcrop",img_crop,i)
  6. writer.close()

完整代码 

  1. from torchvision import transforms
  2. from PIL import Image
  3. from torch.utils.tensorboard import SummaryWriter
  4. img_path ="dataset/train/bees/16838648_415acd9e3f.jpg"
  5. img = Image.open(img_path)
  6. writer = SummaryWriter("logs")
  7. tensor_trans = transforms.ToTensor()
  8. tensor_img =tensor_trans(img)
  9. writer.add_image("Tensor_img",tensor_img)
  10. #print(tensor_img)
  11. #Normalize 归一化
  12. print(tensor_img[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(tensor_img)
  15. print(img_norm[0][0][0])
  16. writer.add_image("Normalize",img_norm)
  17. writer.close()
  18. ##Resize
  19. print(img.size)
  20. trans_resize = transforms.Resize((512,512))
  21. img_resize = trans_resize(img)
  22. img_resize = tensor_trans(img_resize)
  23. writer.add_image("Resize",img_resize,0)
  24. print(img_resize)
  25. #Compose
  26. trans_resize_2 = transforms.Resize(64)
  27. trans_compose = transforms.Compose([trans_resize_2,tensor_trans])
  28. img_resize2 = trans_compose(img)
  29. writer.add_image("Resize2",img_resize2,1)
  30. writer.close()
  31. #RandomCrop
  32. trans_Randomcrop = transforms.RandomCrop(256)
  33. trans_compose2 = transforms.Compose([trans_Randomcrop,tensor_trans])
  34. for i in range(10):
  35. img_crop = trans_compose2(img)
  36. writer.add_image("Randomcrop",img_crop,i)
  37. writer.close()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/886337
推荐阅读
相关标签
  

闽ICP备14008679号