PyTorch——transforms

接着上一篇,我们这一篇讲transforms

1、什么是transform

首先transform是来自PyTorch的一个扩展库——【torchvision】,【torchvision】这个库提供了许多计算机视觉相关的工具和功能,能够在神经网络中,将图像、数据集、预处理模型等等数据转化成计算机训练学习所能用的格式的数据。

比如:

torchvision.transforms:提供了常用的图像预处理方法,用于对图像进行变换、缩放、裁剪、旋转、翻转等操作。例如,ToTensor将PIL图像或numpy数组转换为Tensor,Normalize对图像进行标准化处理,RandomCrop随机裁剪图像等。


torchvision.datasets:包含了一些常用的数据集的dataset实现,方便用户加载和使用。例如,MNIST是一个手写数字数据集,CIFAR-10是一个包含10个类别的彩色图像数据集,ImageNet是一个大规模的图像数据集等。这些数据集可以方便地用于训练和评估模型。

;
torchvision.models:提供了一些常用的预训练模型,可以用于图像分类、目标检测、图像分割等任务。这些模型包括了经典的网络结构,如AlexNet、VGG、ResNet、GoogLeNet等。用户可以通过加载预训练模型,快速搭建和使用这些模型。

;
torchvision.utils:提供了一些辅助函数和工具,用于计算机视觉任务中的常见操作。例如,make_grid可以将多张图像拼接成一个网格显示,save_image可以将Tensor保存为图像文件,draw_bounding_boxes可以在图像上绘制边界框等。

那么简单说,【torchvision】的transform就是专门对图像进行预处理的工具,你别的数据形式在计算机训练时人家看不懂用不上。

2、怎么用

第一步:导包

from torchvision import transforms

第二步:创建 “工具” 对象

这么解释,transforms是一个工具箱,里面有ToTensor、resize、Normalize......很多用来处理图像的工具,那么要用他们就得先创建他们的对象

其中具体有哪些工具这里简单说一下:

数据中心化(Data normalization)

  • Normalize(mean, std):对图像进行均值和标准差的归一化处理。(简单理解就是优化)

数据标准化(Data standardization)

  • ToTensor():将PIL图像或numpy数组转换为Tensor,并将像素值缩放到[0, 1]范围内。

缩放(Resizing)

  • Resize(size):将图像的大小调整为指定的尺寸。
  • RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(0.75, 1.333)):随机裁剪并缩放图像到指定的尺寸。

裁剪(Cropping)

  • CenterCrop(size):从图像的中心裁剪出指定大小的区域。
  • RandomCrop(size):随机裁剪图像的一部分。

旋转(Rotation)

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

翻转(Flipping)

  • RandomHorizontalFlip(p=0.5):以给定的概率随机水平翻转图像。
  • RandomVerticalFlip(p=0.5):以给定的概率随机垂直翻转图像。

填充(Padding)

  • Pad(padding):在图像周围填充指定数量的像素。

噪声添加(Noise adding)

  • RandomNoise():向图像中添加随机噪声。

灰度变换(Grayscale transformation)

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

线性变换(Linear transformation)

  • RandomAffine(degrees, translate=None, scale=None, shear=None):随机仿射变换图像。

亮度、饱和度及对比度变换(Brightness, saturation, and contrast transformation)

  • AdjustBrightness(brightness_factor):调整图像的亮度。
  • AdjustSaturation(saturation_factor):调整图像的饱和度。
  • AdjustContrast(contrast_factor):调整图像的对比度。
//例子创建一个ToTensor()对象,将图片转化成Tensor类型数据
tensor_trans = transforms.ToTensor()

第三步:利用工具对象处理输入的图像数据

//变量接收 = 工具对象(输入的图片数据)
//例如:
tensor_image = tensor_trans(image)

那么这里做一个获取图片并装化成tensor类型,输出一下的例子吧:

from torchvision import transforms
from PIL import Image# 获取图片数据
image_path = "dataset/train/ants/5650366_e22b7e1065.jpg"
image = Image.open(image_path)# 利用transform的ToTensor工具,将图片数据转化成tensor数据
tensor_trans = transforms.ToTensor()
tensor_image = tensor_trans(image)# 输出一下
print(tensor_image)

简单看图片了解结构:

那么上一篇我们讲了,利用tensorboard图像处理库可以直观看到数据图像,这里我们结合tensorboard试一下,利用tensorboard图像处理库的SummaryWriter工具包的【.add_image( )】方法来生成图像

不过我们上一篇学到【.add_image( )】针对numpy的图像数据,需要这4个参数

但是这次我们不用numpy作为图像数据,我们改用tensor作为图像数据了,那么可以看到SummaryWriter的【.add_image( )】源码里是支持tensor作为图像数据的,而且可以省略后两个参数

因此,完整代码:

from torchvision import transforms
from PIL import Image
# 导入tensorboard图像处理库的SummaryWriter工具包
from torch.utils.tensorboard import SummaryWriter# 获取图片数据
image_path = "dataset/train/ants/5650366_e22b7e1065.jpg"
image = Image.open(image_path)# 利用transform的ToTensor工具,将图片数据转化成tensor数据
tensor_trans = transforms.ToTensor()
tensor_image = tensor_trans(image)# 利用tensorboard图像处理库,将tensor类型的图像数据添加进去,生成图片
write = SummaryWriter("logs")
write.add_image("Tensor_img", tensor_image)

靠不知道写些什么了,暂时学得有点乱,这篇文章暂时不太好,我日后回来修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/407419.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【系统架构设计】软件架构设计(1)

【系统架构设计】软件架构设计(1) 软件架构概述架构需求与软件质量属性软件架构风格数据流风格批处理序列管道-过滤器2者风格比较 仓库风格--黑板系统 层次系统架构风格二层及三层C/S架构风格MVCMVP 面向服务的架构 软件架构概述 基于架构的软件开发模型…

网络通信tcp

一、udp案例 二、基于tcp: tcp //c/s tcp 客户端: 1.建立连接 socket bind connect 2.通信过程 read write close tcp服务器: 1.建立连接 socket bind listen accept 2.通信过程 read write close connect函数 int connect(int sockfd, con…

postgresql 集群文档

https://www.cnblogs.com/Alicebat/p/14148933.html [命令] Pacemaker 命令 pcs cluster (管理节点) – Eternal Center PostgreSQL实战之物理复制和逻辑复制(五)_postgresql 流复制和物理复制-CSDN博客 https://jingyan.baidu…

【Windows】深度学习环境部署

引言 1 Windows环境准备 1.1 VSCode Visual Studio Code(简称 VSCode)是一款由微软开发的开源代码编辑器。它非常受开发者欢迎,因为它功能强大、扩展性好,并且支持多种编程语言。VSCode 尤其适合 Python 开发,特别是…

网络 通信

一、客户端接收(也可以bind) 1. socket socket 函数 用于创建一个套接字(socket),这是网络通信的基础。 它的原型如下:int socket(int domain, int type, int protocol); 参数: domain:指定协议族&…

虚幻5|AI视力系统,听力系统,预测系统(3)预测系统

虚幻5|AI视力系统,听力系统,预测系统(2)听力系统-CSDN博客 一,添加一个AI预感感官配置 1.选中我们的AIPerception,右侧细节添加一个AI预感感官配置,然后我们把所有感官的年龄都调成5,是所有 2…

全网最简单的Java设计模式【九】策略模式-实战中最常用的设计模式之一

策略模式是一种行为设计模式,它允许你定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。该模式让算法的变化独立于使用算法的客户。在实际开发中,策略模式可以帮助我们减少大量的 if-else 或 switch 条件判断语句&…

premiere2023暴力压缩视频

目录 1. 需求说明2. 压缩流程 1. 需求说明 要将三段视频拼接起来,时长超过了1h,然后压缩到200M以内的视频。 这是三段视频的信息: 合并三个视频文件意味着总时长增加了。较长的视频文件通常也会更大,即使比特率相同。 当我把三段…

vscode 阅读linux内核(vscode+clangd)

此插件曾在vim里用过,非常好用。 首先先在vscode 里下载clangd插件 这只是客户端,还需下载个服务器(这在coc插件里也有说明) sudo apt install clangd 下载完后可以 clangd --version 查看版本信息,如果能查看&#x…

UE5 日期时间蓝图变量 加减节点

参考链接:Having troubles with DateTime in UE5 - General / Feedback & Requests - Epic Developer Community Forums (unrealengine.com) 直接粘贴到UE5蓝图图表可用。(反之相加,用负号操作一下) 减号蓝图节点(…

8.22-docker的部署及其使用

docker 1.docker环境部署以及语法 [rootdocker ~]# cat << EOF | tee /etc/modules-load.d/k8s.conf> overlay> br_netfilter> EOFoverlaybr_netfilter[rootdocker ~]# modprobe overlay[rootdocker ~]# modprobe br_netfilter[rootdocker ~]# cat /etc/module…

AI绘画工具 Stable Diffusion【插画转绘】:建筑 | 风景| 人像照片的插画转绘制作教程,照片秒变插画风格图片!

大家好&#xff0c;我是画画的小强 关于Stable Diffusion 的插画转绘&#xff0c;今天给大家分享一种制作方法。我们先看一下效果图。 一. 图片转插画的制作方法 本期教程我们将使用AI绘画工具Stable Diffusion&#xff0c;关于SD的安装和入门使用可以看看我的往期入门教程…

122-域信息收集应用网络凭据CS插件AdfindBloodHound

参考&#xff1a;【内网安全】域信息收集&应用网络凭据&CS插件&Adfind&BloodHound_ladon adfinder bloodhound-CSDN博客 工作组和域环境 我的理解&#xff1a; 工作组就是还是局域网一样只是大一点里面的电脑很多&#xff0c;每个电脑还是都是单独的电脑没有…

解决arcmap发布影像切片,注册传输数据慢的问题

1、本地服务器进行切片步骤&#xff1a; 开发环境按照正常方案发布影像切片。 2、生产环境切片步骤 a、使用范文等同影像文件范围的矢量面数据&#xff0c;作为切片数据发布切片服务 重点&#xff1a;【服务名称必须一致】 b、获取开发环境切片的切片方案文件conf.xml 重点&am…

SSL/TLS协议信息泄露漏洞修复

概述&#xff1a;CVE-2016-2183 是一个涉及 SSL/TLS 协议信息泄露的漏洞&#xff0c;也被称为 "SWEET32" 攻击。该漏洞利用了某些对称加密算法&#xff08;如 3DES&#xff09;的弱点&#xff0c;攻击者可以通过捕获和分析大量的加密流量&#xff0c;可能会恢复明文数…

矩阵--旋转图像

给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 &#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&a…

数据结构——算法和算法分析

目录 算法和算法分析 算法 算法设计的要求 算法效率的度量 算法的存储空间需求 算法和算法分析 算法 算法是对特定问题求解步骤的一种描述&#xff0c;它是指令的有限序列&#xff0c;其中每一条指令表示一个或多个操作。 一个算法具有下列5个重要的特性&#xff1a; &…

Python3:多行文本内容转换为标准的cURL请求参数值

背景 在最近的工作中&#xff0c;经常需要处理一些接口请求的参数&#xff0c;参数来源形式很多&#xff0c;可能是Excel、知识库文档等&#xff0c;有些数据形式比较复杂&#xff0c;比如多行或者包含很多不同的字符&#xff0c;示例如下&#xff1a; **客服质检分析指引** …

BaseCTF [第一周]Ez Xor

笔记。 64ida打开。 走&#xff01; 逆向逆向&#xff0c;逆向往前看。 因为异或算法&#xff0c;A ^BC >>> C^BA 所以在只需要知道密钥key就可以了。 是不是头大&#xff1f; 没事 这里介绍另一种方法>>> IDA 动态调试去获取key值、密文值 。(灵活使用工…

【MATLAB源码-第253期】基于matlab的8PSK调制载波+相位+符号定时联合估计仿真,输出星座图等。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 系统背景和目标 8PSK是一种调制方式&#xff0c;其中信号的相位被分成8个不同的状态&#xff0c;每个状态代表3比特的数据。这个过程涉及将比特序列转换为相应的相位&#xff0c;经过调制后传输给接收端。在接收端&#…