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

【Pytorch笔记】6.Transforms

pytorch官方文档 - transforms

transforms需要使用计算机视觉工具包:torchvision。
torchvision.transforms:常用的图像预处理方法;
torchvision.datasets:常用数据集的dataset实现,如MNIST、CIFAR-10、ImageNet等;
torchvision.model:常用的模型预训练,如AlexNet、VGG、ResNet、GoogleNet等。

torchvision.transforms

常用的图像预处理方法,包括数据中心化、数据标准化、缩放、裁剪、旋转、翻转、填充、噪声添加、灰度变换、线性变换、仿射变换、亮度变换、饱和度变换、对比度变换等。

Geometry - 几何变换

torchvision.transforms.Resize()

功能:将给定图像缩放成指定的尺寸。

trans = transforms.Resize((32, 32))

意思就是把样本图像缩放成32x32的。如果里面的参数给的不是上面这样的(H, W)的格式,而是一个数的话,那么令原图像的较短边与该数匹配,按比例缩放。

torchvision.transforms.RandomCrop()

功能:将给定图像按照指定的尺寸随机裁剪。

trans = transforms.RandomCrop(size=10, padding=4)

size指裁剪大小。如果size=10,就是裁出10x10的图片;如果size=(15, 10),就是裁出15x10的图片。
padding指填充大小。如果padding=4,就是上下左右填充都是4;如果padding=(4,2),就是左右填充为4,上下填充为2;如果padding=(4,3,2,1),那么左填充为4,上填充为3,右填充为2,下填充为1。

torchvision.transforms.CenterCrop()

功能:将给定图像按照指定的尺寸在中心裁剪。

trans = transforms.CenterCrop(size=4)

size指裁剪大小。如果size=4,就是裁出4x4的图片;如果size=(4, 3),就是裁出4x3的图片。

torchvision.transforms.FiveCrop()

功能:将给定图像按照指定的尺寸在中心、四个角裁剪,返回五个裁剪出来的图。

trans = transforms.FiveCrop(size=4)

size指裁剪大小。如果size=4,就是裁出4x4的图片;如果size=(4, 3),就是裁出4x3的图片。

torchvision.transforms.TenCrop()

功能:将给定图像按照指定的尺寸在中心、四个角裁剪,并分别进行翻转,返回十个裁剪/翻转出来的图。

trans = transforms.TenCrop(size=4, vertical_flip=False)

size指裁剪大小。如果size=4,就是裁出4x4的图片;如果size=(4, 3),就是裁出4x3的图片。
vertical_flip为True,则翻转采用垂直翻转;False,则翻转采用水平翻转。

torchvision.transforms.Pad()

功能:将给定图像按照给定值进行边界填充。

trans = transforms.Pad(padding=4, fill=0, padding_mode='constant')

padding指填充大小。如果padding=4,就是上下左右填充都是4;如果padding=(4,2),就是左右填充为4,上下填充为2;如果padding=(4,3,2,1),那么左填充为4,上填充为3,右填充为2,下填充为1。
fill指填充内容,该参数当且仅当后面的padding_mode'constant'时有效,默认值为0。如果是一个长度为3的tuple,则分别用于填充图像的R,G,B层。用于tensor时仅支持一个数,用于PIL图像时仅支持一个数或一个长度为3的tuple。
padding_mode指填充方式,有以下取值:
'constant':用一个常值填充,填充的内容用fill参数传入。
'edge':边缘填充,使用图像最靠边界的元素的数值进行填充。
'reflect':镜像填充,以最外侧的元素为对称轴,将图像的内容对称填充进去。如原图像为[1,2,3,4]、padding=2时,填充后变成[3,2,1,2,3,4,3,2]。
'symmetric':对称填充,以边界为对称轴,将图像的内容对称填充进去。如原图像为[1,2,3,4]、padding=2时,填充后变成[2,1,1,2,3,4,4,3]。

torchvision.transforms.RandomRotation()

功能:将给定图像按照指定角度范围进行随机旋转。

trans = transforms.RandomRotation(degrees=(40, 90), interpolation=InterpolationMode.NEAREST,expand=False,center=None,fill=0)

degrees指角度范围,如果degree=40,那么旋转角度的范围为(-40,40)
interpolation指插值方式,有两种取值:
InterpolationMode.NEAREST:就近插值、
InterpolationMode.BILINEAR:双线性插值;
expand指是否扩充输出图像的尺寸,如果为True,则输出图像会根据旋转后的结果使尺寸变大,如果为False,则输出图像的形状不变。
center指旋转中心,默认为None,以图片左上角为旋转中心。
fill指旋转后空白的地方的填充内容。

torchvision.transforms.RandomPerspective()

功能:将给定的图像按照给定参数进行透视变换(透视变换效果见下图)
在这里插入图片描述

trans = transforms.RandomPerspective(distortion_scale=0.5, p=0.5, interpolation=InterpolationMode.BILINEAR, fill=0)

distoration_scale指扭曲程度,范围是[0,1],默认为0.5;
p指被变换概率,默认为0.5;
interpolation指插值方式,有两种取值:
InterpolationMode.NEAREST:就近插值、
InterpolationMode.BILINEAR:双线性插值;
fill指旋转后空白的地方的填充内容。

torchvision.transforms.RandomHorizontalFlip()

功能:以指定概率水平翻转图像。

trans = transforms.RandomHorizontalFlip(p=0.5)

p指被变换概率,默认为0.5;

torchvision.transforms.RandomVerticalFlip()

功能:以指定概率垂直翻转图像。

trans = transforms.RandomVerticalFlip(p=0.5)

p指被变换概率,默认为0.5;

Color - 色彩变换

torchvision.transforms.ColorJitter()

功能:随机改变图像的亮度、对比度、饱和度和色调。

trans = transforms.ColorJitter(brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5)

brightness指亮度:
如果是一个float,则亮度从[max(0, 1-brightness), 1+brightness]中均匀抽取,
如果是一个长度为2的tuple:float(min, max),则亮度从[min, max]中均匀抽取;
contrast指对比度:
如果是一个float,则对比度从[max(0, 1-contrast), 1+contrast]中均匀抽取,
如果是一个长度为2的tuple:float(min, max),则对比度从[min, max]中均匀抽取;
saturation指饱和度:
如果是一个float,则饱和度从[max(0, 1-saturation), 1+saturation]中均匀抽取,
如果是一个长度为2的tuple:float(min, max),则饱和度从[min, max]中均匀抽取;
hue指色调:
如果是一个float,则色调从[-hue, hue]中均匀抽取,其中 0 ≤ h u e ≤ 0.5 0\leq hue \leq 0.5 0hue0.5
如果是一个长度为2的tuple:float(min, max),则色调从[min, max]中均匀抽取,其中 − 0.5 ≤ m i n ≤ m a x ≤ 0.5 -0.5\leq min\leq max\leq 0.5 0.5minmax0.5

torchvision.transforms.Grayscale()

功能:将图像转为灰度图像。

trans = transforms.Grayscale(num_output_channels=1)

num_output_channels指输出图像的通道数,取值只能是1或3。
如果为1:返回的图像只有一个通道;
如果为3:返回的图像有3个通道,且r=g=b

torchvision.transforms.RandomGrayscale()

功能:以指定概率将图像转为灰度图像。

trans = transforms.RandomGrayscale(p=0.5)

p为转变图像的概率。

torchvision.transforms.GaussianBlur()

功能:使用随机的高斯模糊对图像进行模糊处理。

trans = transforms.GaussianBlur(kernel_size=2, sigma=(0.1, 2.0))

kernel_size指高斯核的大小;
sigma指用于创建内核进行模糊处理的标准偏差,如果是一个float则sigma固定;如果是长度为2的float元组,令其为float(min, max),并在[min, max]范围内均匀随机选取sigma。

torchvision.transforms.RandomInvert()

功能:以指定概率替换图片的颜色。

trans = transforms.RandomInvert(p=0.5)

p为改变颜色的概率。

transforms.RandomPosterize()

功能:以指定概率将图片海报化(减少通道中的比特数)。

trans = transforms.RandomPosterize(bits=4, p=0.5)

bits指每个通道保持的比特数,取值为0-8;
p为转化图像的概率。

transforms.RandomSolarize()

功能:以指定概率将图片高曝(Solarize该怎么翻译呢?)。

trans = transforms.RandomSolarize(threshold=128, p=0.5)

threshold指高曝的阈值。所谓高曝,就是将像素值在[0, threshold]映射到[threshold, 255]上。
p为转化图像的概率。

Composition - 变换组合

torchvision.transforms.Compose()

功能:将多个transforms变换封装成一个组合。

transforms.Compose([transforms.CenterCrop(10),transforms.PILToTensor(),transforms.ConvertImageDtype(torch.float),
])

参数就是包含很多transforms变换的list。

torchvision.transforms.RandomApply()

功能:以给定概率将transforms列表中的变换打乱。

transforms.RandonApply([transforms.CenterCrop(10),transforms.PILToTensor(),transforms.ConvertImageDtype(torch.float),
], p=3)

第一项可以是transforms的sequence,也可以是torch.nn.ModuleList;
第二项p是打乱的概率。

Miscellaneous - 杂项

torchvision.transforms.Normalize()

功能:对得到的tensor进行减均值除标准差处理。

trans = transforms.Normalize(mean=0, std=1, inplace=True)

mean指均值;
std指标准差;
inplace指是否替换原tensor,True为替换,False为不替换。

torchvision.transforms.RandomErasing()

功能:对得到的图像,以一定概率随机一个矩形区域进行擦除。

trans = transforms.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0, inplace=False)

p指给定的概率;
scale指擦除区域面积占原图面积的比例范围;
ratio指擦除区域长宽比的范围;
value指擦除后填充的值,如果是一个int,那么全部用这个int来填充;如果是长度为3的int,则分别用于填充R、G、B三个通道;如果value='random',则随机填充。
inplace指是否替换原tensor,True为替换,False为不替换。

Conversion - 格式转换

torchvision.transforms.ToTensor()

功能:将PIL图像或ndarray转换成tensor并将值映射到[0,1]之间。
更具体地,将一个PIL图像或ndarray(形状是 H × W × C H\times W\times C H×W×C,元素范围在[0,255])转化成tensor(形状是 C × H × W C\times H\times W C×H×W,元素范围在[0,1])。前提是PIL图像属于L, LA, P, I, F, RGB, YCbCr, RGBA, CMYK, 1中的一种模式、ndarray的dtype=uint8。
其他情况下返回的tensor不会被映射到[0,1]之间。

trans = transforms.ToTensor()

torchvision.transforms.PILToTensor()

功能:将 H × W × C H\times W\times C H×W×C的PIL图像转换为 C × H × W C\times H\times W C×H×W的tensor。

trans = transforms.PILToTensor()

相关文章:

【Pytorch笔记】6.Transforms

pytorch官方文档 - transforms transforms需要使用计算机视觉工具包:torchvision。 torchvision.transforms:常用的图像预处理方法; torchvision.datasets:常用数据集的dataset实现,如MNIST、CIFAR-10、ImageNet等&am…...

nodejs+vue临沂特色产品销售平台elementui

从实际工作出发,对过去的临沂特色产品销售平台存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息 提高了工作的效率。 随着信息化社会的形成和微电子技术日新月异的发展,临沂特色产品销售平台是针对目前临沂特色产品销售…...

机器学习必修课 - 使用管道 Pipeline

目标:学习使用管道(pipeline)来提高机器学习代码的效率。 1. 运行环境:Google Colab import pandas as pd from sklearn.model_selection import train_test_split!git clone https://github.com/JeffereyWu/Housing-prices-dat…...

WEB各类常用测试工具

一、单元测试/测试运行器 1、Jest 知名的 Java 单元测试工具,由 Facebook 开源,开箱即用。它在最基础层面被设计用于快速、简单地编写地道的 Java 测试,能自动模拟 require() 返回的 CommonJS 模块,并提供了包括内置的测试环境 …...

Naive UI 文档地址

最近几天官网访问不了,自己用github pages 部署了个 官网 github pages...

在CentOS7系统中安装MySQL5.7

第一步:下载MySQL包 > wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm第二步:安装MySQL源 > rpm -Uvh mysql57-community-release-el7-10.noarch.rpm第三步:安装MySQL服务端 > yum install -y mysql-c…...

R语言通过接口获取网上数据平台的免费数据

大家好,我是带我去滑雪! 作为一名统计学专业的学生,时常和数据打交道,我深知数据的重要性。数据是实证研究的重要基础,每当在完成一篇科研论文中的实证研究部分时,我都能深刻体会实证研究最复杂、最耗时的工…...

【Docker内容大集合】Docker从认识到实践再到底层原理大汇总

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总https://blog.csdn.net/yu_cblog/categ…...

算法题:摆动序列

这道题是一道贪心算法题,如果前两个数是递增,则后面要递减,如果不符合则往后遍历,直到找到符合的。(完整题目附在了最后) 代码如下: class Solution(object):def wiggleMaxLength(self, nums):…...

复习 --- QT服务器客户端

服务器&#xff1a; 头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> #include<QTcpSocket> #include<QMessageBox> #include<QDebug> #include<QList> #include<QListWidget> #in…...

Godot 官方2D游戏笔记(1):导入动画资源和添加节点

前言 Godot 官方给了我们2D游戏和3D游戏的案例&#xff0c;不过如果是独立开发者只用考虑2D游戏就可以了&#xff0c;因为2D游戏纯粹&#xff0c;我们只需要关注游戏的玩法即可。2D游戏的美术素材简单&#xff0c;交互逻辑简单&#xff0c;我们可以把更多的时间放在游戏的玩法…...

leetcode 热题 100

数组和字符串匹配 子串和子序列 原串&#xff1a;“abcabc” 子串&#xff1a;“abc”, 连续但不大于原串的字符串 子序列&#xff1a;“acc”, 字符来自原串且保持在原串中顺序不变的字符串 子排列&#xff1a; “aabbcc”, 字符来自原串且只能用1次,但可有不同排列顺序的字…...

Ae 效果:CC Lens

扭曲/CC Lens Distort/CC Lens CC Lens &#xff08;CC 镜头&#xff09;主要用于添加或移除摄像机镜头扭曲&#xff0c;比如桶形失真 Barrel、枕形失真 Pincushion以及鱼眼失真 Fisheye等。或者&#xff0c;用它来创建一些特殊的动画效果。 ◆ ◆ ◆ 效果属性说明 Center 中…...

【Redis】基础数据结构-quicklist

Redis List 在Redis3.2版之前&#xff0c;Redis使用压缩列表和双向链表作为List的底层实现。当元素个数比较少并且元素长度比较小时&#xff0c;Redis使用压缩列表实现&#xff0c;否则Redis使用双向链表实现。 ziplist存在问题 不能保存过多的元素&#xff0c;否则查找复杂度…...

QT 实现服务器客户端搭建

1. 服务器头文件 #ifndef SER_H #define SER_H#include <QWidget> #include<QTcpServer> //服务器头文件 #include<QTcpSocket> //客户端头文件 #include<QMessageBox> //消息对话框 #include<QList> //链表头文件QT_BEGIN_NAM…...

Javascript - 轮播图

轮播图也称banner图、广告图、焦点图、滑片。是指在一个模块或者窗口,通过鼠标点击或手指滑动后,可以看到多张图片。这些图片统称为轮播图,这个模块叫做轮播模块。可以通过运用 javascript去实现定时自动转换图片。以下通过一个小Demo演示如何运用Javascript实现。 <!DOCTYP…...

MATLAB中syms函数使用

目录 语法 说明 示例 创建符号标量变量 创建符号标量变量的向量 创建符号标量变量矩阵 管理符号标量变量的假设 创建和评估符号函数 syms函数的作用是创建符号标量和函数&#xff0c;以及矩阵变量和函数。 语法 syms var1 ... varN syms var1 ... varN [n1 ... nM] …...

竞赛选题 深度学习 opencv python 实现中国交通标志识别_1

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…...

Qt 关于mouseTracking鼠标追踪和tabletTracking平板追踪的几点官方说明

mouseTracking属性用于保存是否启用鼠标跟踪&#xff0c;缺省情况是不启用的。 没启用的情况下&#xff0c;对应部件只接收在鼠标移动同时至少一个鼠标按键按下时的鼠标移动事件。 启用鼠标跟踪的情况下&#xff0c;任何鼠标移动事件部件都会接收。 部件方法hasMouseTrackin…...

基于springboot的论坛网站

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 普通管理员管理 交流论坛 交流论坛评论 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...