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

[pytorch入门] 3. torchvision中的transforms

torchvision中的transforms

是transforms.py工具箱,含有totensor、resize等工具
用于将特定格式的图片转换为想要的图片的结果,即用于图片变换

用法

在transforms中选择一个类创建对象,使用这个对象选择相应方法进行处理

能够选择的类

列表

["Compose","ToTensor",  # 转化为tensor类型"PILToTensor","ConvertImageDtype","ToPILImage", # tenor或ndarray转换为PIL image"Normalize",  # 归一化(用均值或标准差归一化tensor类型的image)"Resize","CenterCrop","Pad","Lambda","RandomApply","RandomChoice","RandomOrder","RandomCrop","RandomHorizontalFlip","RandomVerticalFlip","RandomResizedCrop","FiveCrop","TenCrop","LinearTransformation","ColorJitter","RandomRotation","RandomAffine","Grayscale","RandomGrayscale","RandomPerspective","RandomErasing","GaussianBlur","InterpolationMode","RandomInvert","RandomPosterize","RandomSolarize","RandomAdjustSharpness","RandomAutocontrast","RandomEqualize","ElasticTransform",
]

使用

  • NT
    • 关注输入和输出类型
    • 多看官方文档(可以进源码去看)
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transformswriter = SummaryWriter('logs')
img = Image.open('./dataset2/train/ants_image/5650366_e22b7e1065.jpg')
print(img)# ToTensor
trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)       # 将PIL对象转换为tensor对象
writer.add_image("tensor_img",img_tensor)# Normalize 归一化:(输入-均值)/标准差
print(img_tensor[0][0][0])
trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]) # 要提供一个均值一个标准差
img_norm = trans_norm(img_tensor)
print(img_norm[0][0][0])
writer.add_image("norm_img",img_norm)# Resize 调整尺寸:(h,w)
print(img.size)
trans_resize = transforms.Resize((512,512))# img PIL -> resize -> img_resize PIL
img_resize = trans_resize(img)  # 这里要传入的是PIL image类型# img_resize PIL -> totensor -> img_resize tensor
img_resize = trans_totensor(img_resize)
print(img_resize)# Compose  -  resize 第二种用法: 等比缩放
trans_resize_2 = transforms.Resize(512)# PIL -> PIL -> tensor
trans_compose = transforms.Compose([trans_resize_2, trans_totensor])  # 从右往左执行,后面参数的输入和前面参数的输出是一致的
img_resize_2 = trans_compose(img)
writer.add_image("Resize", img_resize_2, 1)# RandomCrop 随机裁剪
trans_random = transforms.RandomCrop(256) # 传一个int:代表正方形,传一个tuple:代表矩形
trans_compose_2 = transforms.Compose([trans_random, trans_totensor])
for i in range(10):img_crop = trans_compose_2(img)writer.add_image("RandomCrop", img_crop, i)writer.close()

进入调试,就会发现tensor_img中有一些反向传播的钩子:
在这里插入图片描述
以及使用的设备:
在这里插入图片描述
可以理解为tensor类型包含了神经网络训练所需要的一些参数

其他

类中的__call__方法:对象可以直接用括号时自动用的该方法(区别于普通方法需要用“.”调用)

class Person:def __call__(self, name):print("__call__:", name)def hello(self, name):print("hello",name)p = Person()
p("jerry")
p.hello('tom')

相关文章:

  • 【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(一):基础知识考察
  • CSS 蜡烛效果
  • Python皮卡丘
  • 界面控件DevExpress ASP.NET Data Grid组件 - 可快速处理各类型数据!(一)
  • #vue3 实现前端下载excel文件模板功能
  • 智能机器人与旋量代数(9)
  • 优化用户体验测试应用领域:提升产品质量与用户满意度
  • ffmpeg使用及java操作
  • 自然语言处理--双向匹配算法
  • 【GoLang入门教程】Go语言工程结构详述
  • c#中使用UTF-8编码处理多语言文本的有效策略
  • 设计模式二(工厂模式)
  • Relay Arm® 计算库集成
  • AI大模型【基础 01】智能AI开源模型与大模型接口整理(8个开源模型+7个大模型接口)
  • 南京观海微电子---时序分析基本概念(二)——保持时间
  • JavaScript-如何实现克隆(clone)函数
  • 【mysql】环境安装、服务启动、密码设置
  • 2017-08-04 前端日报
  • 30天自制操作系统-2
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • crontab执行失败的多种原因
  • docker-consul
  • java多线程
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Linux CTF 逆向入门
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Next.js之基础概念(二)
  • oldjun 检测网站的经验
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue学习系列(二)vue-cli
  • 开发基于以太坊智能合约的DApp
  • 算法-插入排序
  • 我与Jetbrains的这些年
  • - 转 Ext2.0 form使用实例
  • 06-01 点餐小程序前台界面搭建
  • 交换综合实验一
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #1015 : KMP算法
  • (5)STL算法之复制
  • (C语言)fgets与fputs函数详解
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (LeetCode C++)盛最多水的容器
  • (黑马C++)L06 重载与继承
  • (十六)Flask之蓝图
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .bat批处理(六):替换字符串中匹配的子串
  • .Net程序帮助文档制作
  • .NET企业级应用架构设计系列之结尾篇
  • :“Failed to access IIS metabase”解决方法
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [.net]官方水晶报表的使用以演示下载
  • []Telit UC864E 拨号上网