【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 0≤hue≤0.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.5≤min≤max≤0.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服务器客户端
服务器: 头文件: #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游戏的案例,不过如果是独立开发者只用考虑2D游戏就可以了,因为2D游戏纯粹,我们只需要关注游戏的玩法即可。2D游戏的美术素材简单,交互逻辑简单,我们可以把更多的时间放在游戏的玩法…...
leetcode 热题 100
数组和字符串匹配 子串和子序列 原串:“abcabc” 子串:“abc”, 连续但不大于原串的字符串 子序列:“acc”, 字符来自原串且保持在原串中顺序不变的字符串 子排列: “aabbcc”, 字符来自原串且只能用1次,但可有不同排列顺序的字…...
Ae 效果:CC Lens
扭曲/CC Lens Distort/CC Lens CC Lens (CC 镜头)主要用于添加或移除摄像机镜头扭曲,比如桶形失真 Barrel、枕形失真 Pincushion以及鱼眼失真 Fisheye等。或者,用它来创建一些特殊的动画效果。 ◆ ◆ ◆ 效果属性说明 Center 中…...
【Redis】基础数据结构-quicklist
Redis List 在Redis3.2版之前,Redis使用压缩列表和双向链表作为List的底层实现。当元素个数比较少并且元素长度比较小时,Redis使用压缩列表实现,否则Redis使用双向链表实现。 ziplist存在问题 不能保存过多的元素,否则查找复杂度…...
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函数的作用是创建符号标量和函数,以及矩阵变量和函数。 语法 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 前言 🔥 优质…...
Qt 关于mouseTracking鼠标追踪和tabletTracking平板追踪的几点官方说明
mouseTracking属性用于保存是否启用鼠标跟踪,缺省情况是不启用的。 没启用的情况下,对应部件只接收在鼠标移动同时至少一个鼠标按键按下时的鼠标移动事件。 启用鼠标跟踪的情况下,任何鼠标移动事件部件都会接收。 部件方法hasMouseTrackin…...
基于springboot的论坛网站
目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 普通管理员管理 交流论坛 交流论坛评论 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了…...
鸿蒙一气总论(七)
第七卷 圣哲观象古今百家思想归一卷首引天地已定,万物已明,文脉已传,人心已证。 天地有真机,万象有运化,世人肉眼观之,茫然不识。 于是古今圣贤、四方哲人,仰观天道、俯察人世, 各以…...
IPBan快速入门:一键安装配置,立即阻止僵尸网络入侵
IPBan快速入门:一键安装配置,立即阻止僵尸网络入侵 【免费下载链接】IPBan Since 2011, IPBan is the worlds most trusted, free security software to block hackers and botnets. With both Windows and Linux support, IPBan has your dedicated or …...
线性码基础与最优电路合成技术解析
1. 线性码基础与错误控制原理线性码作为信道编码理论的核心内容,在现代数字通信和存储系统中发挥着不可替代的作用。这类编码通过在原始数据中添加精心设计的冗余信息,使系统能够检测和纠正传输过程中产生的随机错误。从数学角度看,线性码是向…...
《Java 100 天进阶之路》第1篇:编程语言类型有哪些?我心中的TOP1编程语言,什么是Java跨平台性?
第1篇:编程语言类型有哪些?我心中的TOP1编程语言,什么是Java跨平台性? 一、核心知识点 编程语言的三大类型:机器语言、汇编语言、高级语言Java为什么是“一次编写,到处运行”(跨平台原理&…...
虚拟原型技术:软硬件协同开发与多核处理器调试新范式
1. 虚拟原型平台:从芯片设计到软件集成的范式转变在嵌入式系统开发领域,尤其是涉及复杂多核处理器的项目里,一个长期存在的“鸡生蛋还是蛋生鸡”的困境一直困扰着工程师们:硬件原型板(EVB)尚未就绪…...
2026年奖杯批发源头厂商实力复盘,长沙嘉誉天成工艺品有限公司为何成为行业标杆企业
在各类表彰活动、赛事庆典中,奖杯作为荣誉象征,承载着组织者对获奖者的认可与激励。无论是企业年会的公司奖杯,还是体育赛事的冠军奖杯,其品质直接影响活动效果与品牌形象。作为深耕行业近二十年的专业服务商,长沙嘉誉…...
CANN算子库幂运算API文档
aclnnPowTensorScalar&aclnnInplacePowTensorScalar 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 📄 查看源码 产品支持情况 产品是否支持A…...
DSP架构设计与低功耗优化关键技术解析
1. DSP架构基础与性能挑战数字信号处理器(DSP)与传统微控制器在架构设计上存在本质差异。微控制器主要面向控制任务——处理输入数据、做出决策并调整输出设备状态,而DSP的核心使命是维持连续数据流的高效处理。这种差异直接体现在硬件架构的…...
0301国产光刻机突围全景:双工件台+纳米级精密运动控制 1. 双工件台工作逻辑
国产光刻机突围全景:双工件台纳米级精密运动控制 第三卷 双工件台纳米级精密运动控制(A级 中期集中攻坚) 1. 双工件台工作逻辑(喂饭级实操版带量化参数企业单字脱敏) 一、核心定义:先搞懂“双工件台”的本质…...
Go语言轻量级HTTP代理curxy:开发调试与本地环境配置利器
1. 项目概述:一个轻量级的HTTP代理工具最近在折腾一些本地开发环境,特别是需要处理跨域请求或者模拟不同网络环境的时候,总是绕不开代理工具。市面上的方案很多,从功能强大的Nginx、Caddy,到各种语言的中间件ÿ…...
