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

初步掌握Transforms的基本使用

在深度学习中,Transforms是图片处理最强大的工具,只要是进行图片操作,就离不开Transforms

在应用中多把Transforms看作是图片处理的工具箱,内有多种工具,如ToTensorNormalize等,它们可以对图像进行操作。除此之外,在此工具的基础上,我们也可以构建自己的图像处理工具。

接下来介绍Transforms中几个常用的工具

(一)Compose()

Transforms中,Compose可以应对图像的多种变化,即可将下列的图像变化按需求组成一个序列,以流水线的形式完成图像的组合变化。

"""
transforms.Compose() 接受一个变换列表,并返回一个新的、组合后的变换。 这特别适合在处理图像时,需要链式应用多个变换操作的场景。输入参数为列表([>>>     transforms.CenterCrop(10),>>>     transforms.PILToTensor(),>>>     transforms.ConvertImageDtype(torch.float),>>> ])
"""
trans_pipeline = transforms.Compose([transforms.Resize(218),transforms.Normalize((0.3,0.4,0.5),(3,4,5))])
img_compose = trans_pipeline(img_tensor)
print(img_compose)
writer.add_image("Resived_Img",img_compose,3)
​
writer.close()
(二)ToTensor()

ToTensor()PIL 图像或 numpy.ndarray 转换为 Tensor,并归一化到 [0, 1] 之间。

from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from PIL import Image
​
writer = SummaryWriter('logs')
img_path = "data/train/bees_image/29494643_e3410f0d37.jpg"
img = Image.open(img_path)
​
trans_totensor = transforms.ToTensor()
#PIL->Tensor
img_tensor = trans_totensor(img)#将PIL图片转化为Tensor格式
writer.add_image('Tensor_Img', img_tensor)
​
writer.close()
(三)Normalize()

Tensor 进行标准化处理,即 (x - mean) / std

"""输入参数为Tensor图片、平均值和标准差output[channel] = (input[channel] - mean[channel]) / std[channel]输出为Tensor
"""
trans_norm = transforms.Normalize((10,2.2,0.4),(0.3,0.4,0.5))
img_norm = trans_norm(img_tensor)
print(img_norm)
writer.add_image("Normalized_Img",img_norm,2)
​
writer.close()
(四)Resize()

调整图像大小

"""
Resize的使用:将图片输出为指定尺寸输入参数为Tensor类型(int,int)-->(高,宽);int-->高宽一致输出为Tensor
"""
trans_resize = transforms.Resize(512)
img_revise = trans_resize(img_tensor)
print(img_revise)
writer.add_image("Resived_Img",img_revise,1)
​
writer.close()
(五)其他工具
1.尺寸调整和裁剪

transforms.Resize(size): 调整图像大小。

transforms.CenterCrop(size): 从中心裁剪图像。

transforms.RandomResizedCrop(size): 随机调整图像大小并裁剪。

2. 数据增强

transforms.RandomHorizontalFlip(p=0.5): 随机水平翻转图像。

transforms.RandomVerticalFlip(p=0.5): 随机垂直翻转图像。

transforms.RandomRotation(degrees): 随机旋转图像一定角度。

transforms.RandomAffine(degrees, translate): 随机仿射变换。

3.归一化和张量转换

transforms.ToTensor(): 将 PIL 图像或 numpy.ndarray 转换为 Tensor,并归一化到 [0, 1] 之间。

transforms.Normalize(mean, std): 对 Tensor 进行标准化处理,即 (x - mean) / std。

4.色彩变换

transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0): 随机改变图像的亮度、对比度、饱和度和色相。

transforms.Grayscale(num_output_channels=1): 将图像转换为灰度图。


参考:【PyTorch】掌握transforms.Compose:PyTorch数据预处理的强大工具_transforms compose-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 运维学习————Zookeeper(2)
  • 【Rust光年纪】深入了解Rust语言库:从异步编程到网络协议实现一网打尽
  • 深度学习100问33:如何避免梯度消失
  • 数学基础 -- 线性代数之矩阵的秩
  • Python青少年简明教程:模块
  • IO进程(线程篇)
  • C++复习day01
  • Unity(2022.3.41LTS) - UI详细介绍-画布
  • 【JavaEE初阶】JVM内存划分和类加载过程以及垃圾回收
  • 【数据结构】反射,枚举你必须知道的相关知识
  • 1、Django Admin学习模型
  • yolov8目标检测pyside6可视化图形界面+检测源码ui文件——用于计数统计
  • Elasticsearch:使用 LTR 进行个性化搜索
  • Redis String 类型详解:操作命令、底层编码与使用案例
  • 当采用 JSON 格式的数据进行响应时,对象是否需要序列化取决于什么?
  • 07.Android之多媒体问题
  • Angular6错误 Service: No provider for Renderer2
  • ECMAScript6(0):ES6简明参考手册
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript-Array类型
  • JavaWeb(学习笔记二)
  • java取消线程实例
  • JSDuck 与 AngularJS 融合技巧
  • magento 货币换算
  • Redash本地开发环境搭建
  • 爱情 北京女病人
  • 动态魔术使用DBMS_SQL
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 如何合理的规划jvm性能调优
  • 微信小程序填坑清单
  • 协程
  • 移动端解决方案学习记录
  • 责任链模式的两种实现
  • 追踪解析 FutureTask 源码
  • k8s使用glusterfs实现动态持久化存储
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #QT(串口助手-界面)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (3)llvm ir转换过程
  • (C++20) consteval立即函数
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (苍穹外卖)day03菜品管理
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (三)c52学习之旅-点亮LED灯
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (三)SvelteKit教程:layout 文件
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (算法设计与分析)第一章算法概述-习题
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m