pytorch:tensorboard和transforms学习

发布于:2025-07-20 ⋅ 阅读:(21) ⋅ 点赞:(0)
  1. tensorboard:可视化数据

    在anaconda安装:

    pip install tensorboard==2.12.0
    

    最好使用这个版本 不然后面调用会报错 因为版本过高的原因

    然后还碰到了安装的时候 安装到C盘去了 但是我用的虚拟环境是在E盘:此时去C盘把那些新安装的复制过来就好了 附录我C盘的路径:C:\Users\asus\AppData\Roaming\Python\Python38\Scripts

    (搜索了一下有大佬说可能是python版本的问题 以后pip/conda install的时候指定一下python版本 可以先在虚拟环境中python --version查看一下)

  2. transforms:数据增强(数据预处理)

    transforms是个工具箱 里面有很多工具 可以处理图片得到一个结果

    tool = transforms.totensor()

    result = tool(input)

    为什么非要转化成tensor型?因为它里面有很多神经网络深度学习的参数 想要训练就需要tensor型

  3. 常见的transforms工具(按住ctrl可以进入源码)

    1. ToTensor()

      code:

      from PIL import Image
      from torch.utils.tensorboard import SummaryWriter
      from torchvision import transforms
      
      writer = SummaryWriter('../logs')
      #tensorboard --logdir=../logs
      img = Image.open('../images/1.jpg')
      print(img)
      
      # use TOTensor()
      trans_tensor = transforms.ToTensor()
      img_tensor = trans_tensor(img)
      writer.add_image('totensor',img_tensor,dataformats='CHW')
      
      writer.close()
      

      logs:

      在这里插入图片描述

    2. Normalize() 标准化

      设置Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]) (这样设置可以实现归一化)

      input[channel] = (input[channel] - mean[channel]) / std[channel]

      =(input - 0.5) / 0.5

      =2 * input - 1

      input [0,1]

      result [-1,1]

      code:(在writer.close()之前加上)

      # use Normalize()
      print(img_tensor[0][0][0])
      trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
      #trans_norm = transforms.Normalize([1,2,3],[3,2,1])
      img_norm = trans_norm(img_tensor)
      print(img_norm[0][0][0])
      writer.add_image('normalize',img_norm)
      #writer.add_image('normalize',img_norm,1)
      

      logs:

      在这里插入图片描述

      可以换几个数据试一下:(冬天寒冷小苏 变成夏天红温小苏了)

      在这里插入图片描述

    3. Resize()

      改变图片大小

      code:

      #use Resize()
      print(img.size)
      trans_resize = transforms.Resize((512,512))
      img_resize = trans_resize(img)
      img_resize = trans_totensor(img_resize)
      print(img_resize)
      writer.add_image('resize',img_resize,0)
      

      好吧:是拉伸小饼

      在这里插入图片描述

    4. Compose()

      串联多个图片变换的操作

      code:

      #use Compose() - Resize() - 2
      trans_resize_2 = transforms.Resize(512)
      trans_compose = transforms.Compose([trans_resize_2,trans_totensor])
      img_resize_2 = trans_compose(img)
      writer.add_image('resize',img_resize_2,1)
      

      在这里插入图片描述

    5. RandomCrop()

      随机裁剪

      code:

      #use RandomCrop()
      trans_random = transforms.RandomCrop(512)
      trans_compose_2 = transforms.Compose([trans_random,trans_totensor])
      #随机裁剪十次
      for i in range(10):
          img_crop = trans_compose_2(img)
          writer.add_image('random_crop',img_crop,i)
      

      在这里插入图片描述

      在这里插入图片描述

      还可以根据宽和高裁剪的

      code:

      trans_random = transforms.RandomCrop((500,1000))
      trans_compose_3 = transforms.Compose([trans_random,trans_totensor])
      for i in range(10):
          img_crop = trans_compose_3(img)
          writer.add_image('random_crophw',img_crop,i)
      

      在这里插入图片描述

    6. 以上完整代码

      先展示目录结构:

      在这里插入图片描述

      code:

      from PIL import Image
      from torch.utils.tensorboard import SummaryWriter
      from torchvision import transforms
      import cv2
      import numpy as np
      
      writer = SummaryWriter('../logs')
      #tensorboard --logdir=../logs
      img = Image.open('../images/1.jpg')
      print(img)
      
      # use TOTensor()
      trans_totensor = transforms.ToTensor()
      img_tensor = trans_totensor(img)
      writer.add_image('totensor',img_tensor,dataformats='CHW')
      
      # use Normalize()
      print(img_tensor[0][0][0])
      trans_norm = transforms.Normalize([1,2,3],[3,2,1])
      img_norm = trans_norm(img_tensor)
      print(img_norm[0][0][0])
      writer.add_image('normalize',img_norm,1)
      
      #use Resize()
      print(img.size)
      trans_resize = transforms.Resize((512,512))
      img_resize = trans_resize(img)
      img_resize = trans_totensor(img_resize)
      print(img_resize)
      writer.add_image('resize',img_resize,0)
      
      #use Compose() - Resize() - 2
      trans_resize_2 = transforms.Resize(512)
      trans_compose = transforms.Compose([trans_resize_2,trans_totensor])
      img_resize_2 = trans_compose(img)
      writer.add_image('resize',img_resize_2,1)
      
      #use RandomCrop()
      trans_random = transforms.RandomCrop(512)
      trans_compose_2 = transforms.Compose([trans_random,trans_totensor])
      for i in range(10):
          img_crop = trans_compose_2(img)
          writer.add_image('random_crop',img_crop,i)
      
      trans_random = transforms.RandomCrop((500,1000))
      trans_compose_3 = transforms.Compose([trans_random,trans_totensor])
      for i in range(10):
          img_crop = trans_compose_3(img)
          writer.add_image('random_crophw',img_crop,i)
      
      writer.close()
      

网站公告

今日签到

点亮在社区的每一天
去签到