当前位置: 首页 > news >正文

pytorch:tensorboard和transforms学习

  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 transformswriter = 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 npwriter = 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()
      
http://www.dtcms.com/a/287109.html

相关文章:

  • HTML5中的自定义属性
  • Jenkins自动化部署.NET应用实战:Docker+私有仓库+SSH远程发布
  • mysql常用总结
  • EMC杂谈-001-基础知识
  • 【面试八股文】软件测试面试题汇总
  • [黑马头条]-项目整合对象存储服务MinIO
  • 百度网盘TV版1.21.0 |支持倍速播放,大屏云看片
  • CS231n-2017 Lecture2图像分类笔记
  • 工业企业与污染库匹配数据库(1998-2014年)
  • Letter Combination of a Phone Number
  • Redis原理之集群
  • windows内核研究(驱动开发之内核编程)
  • Qt控件实战详解:深入掌握输入输出与数据展示
  • Python MCP与Excel增强智能:构建下一代数据处理和自动化解决方案
  • SpringBoot 3.0 挥别 spring.factories,拥抱云原生新纪元
  • 人该怎样活着呢?55
  • 【RK3576】Android 14 驱动开发实战指南
  • uview-ui使用u-icon文字图标展示
  • 报错:升级gcc,centos
  • 数据库第五次作业
  • 云边端协同架构下的智能计算革命
  • 从代码学习深度强化学习 - SAC PyTorch版
  • 消息队列与信号量:System V 进程间通信的基础
  • 【机器学习深度学习】为什么要将模型转换为 GGUF 格式?
  • win10连接鼠标自动关闭触摸板/win10关闭触摸板(笔记本)
  • 路由器的Serial 串口理解
  • 移除debian升级后没用的垃圾
  • 爬虫逆向之JS混淆案例(全国招标公告公示搜索引擎 type__1017逆向)
  • AJAX概述
  • Unity 3D碰撞器