PyTorch框架学习六——图像预处理transforms(二)

PyTorch框架学习六——图像预处理transforms(二)

  • (续)二、transforms的具体方法
    • 4.图像变换
      • (1)尺寸变换:transforms.Resize()
      • (2)标准化:transforms.Normalize()
      • (3)转为tensor:transforms.ToTensor()
      • (4)将数据转换为PILImage:transforms.ToPILImage()
      • (5)填充:transforms.Pad()
      • (6)修改亮度、对比度、饱和度:transforms.ColorJitter()
      • (7)转灰度图:transforms.Grayscale()
      • (8)依概率p转为灰度图:transforms.RandomGrayscale()
      • (9)仿射变换:transforms.RandomAffine()
      • (10)随机遮挡:transforms.RandomErasing()
    • 5.transforms的操作
      • (1)transforms.Lambda()
      • (2)transforms.RandomChoice()
      • (3)transforms.RandomApply()
      • (4)transforms.RandomOrder()

这次笔记是续PyTorch框架第五次笔记,上次笔记链接为:https://blog.csdn.net/qq_40467656/article/details/107914085

(续)二、transforms的具体方法

4.图像变换

(1)尺寸变换:transforms.Resize()

功能:将输入图像的尺寸resize到给定的尺寸。
操作对象:PIL格式或是张量。

torchvision.transforms.Resize(size, interpolation=2)

参数如下:
在这里插入图片描述

  1. size:同上(上次笔记)。
  2. interpolation:同上(上次笔记)。

原始图像尺寸(224,224):(注意坐标轴)
在这里插入图片描述

transforms.Resize((512, 512))

resize后的结果,注意坐标轴
在这里插入图片描述

(2)标准化:transforms.Normalize()

功能:逐通道的标准化图像,公式为
output[channel] = (input[channel] - mean[channel]) / std[channel]
操作对象:张量。

torchvision.transforms.Normalize(mean, std, inplace=False)

参数如下:
在这里插入图片描述

  1. mean:(序列)每个通道的均值。
  2. std:(序列)每个通道的标准差。
  3. inplace:(布尔,可选)是否为原地操作。

标准化的作用:可以加快模型的收敛。

例子如下,这是RGB三通道图像,所以均值标准差都要有三个:

norm_mean = [0.485, 0.456, 0.406]
norm_std = [0.229, 0.224, 0.225]
transforms.Normalize(norm_mean, norm_std)

在这里插入图片描述

(3)转为tensor:transforms.ToTensor()

功能:将 PIL Image 或 numpy.ndarray 转变为tensor。
操作对象:PIL格式或是ndarray。

torchvision.transforms.ToTensor

在这里插入图片描述
将一个尺寸为(H×W×C)像素值范围[0, 255]的PIL图像或numpy的ndarray转变为尺寸为(C×H×W)像素值范围[0.0, 1.0]。

transforms.ToTensor()

在这里插入图片描述
因为像素值都小于等于1,所以显示不出来,其实像素值是有值的。

(4)将数据转换为PILImage:transforms.ToPILImage()

功能:将张量或ndarray转换为PIL图像,同时保留值的范围。
操作对象:ndarray或是张量。

torchvision.transforms.ToPILImage(mode=None)

参数如下:
在这里插入图片描述

(5)填充:transforms.Pad()

功能:对图片的边缘进行填充。
操作对象:PIL格式或是张量。

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

参数如下:
在这里插入图片描述

  1. padding:设置填充的大小。若为a,则四边都填充a个像素距离;若为(a,b),则左右两边填充a个,上下两边填充b个;若为(a,b,c,d),则分别对应左、上、右、下四个边。
  2. fill:只有padding_mode设置为constant时有效,constant模式下要填充的像素值(R、G、B)或(Gray),默认为0。
  3. padding_mode:填充模式,有constant、edge、reflect和symmetric四种,同上。

几个例子如下:

(1)四边都填充32像素,模式为constant,填充值为(255, 0, 0)(红色)。

transforms.Pad(padding=32, fill=(255, 0, 0), padding_mode='constant')

在这里插入图片描述
(2)padding不一样,其他和(1)一样:

transforms.Pad(padding=(8, 64), fill=(255, 0, 0), padding_mode='constant')

在这里插入图片描述
(3)padding不一样,其他和(1)一样:

transforms.Pad(padding=(8, 16, 32, 64), fill=(255, 0, 0), padding_mode='constant')

在这里插入图片描述
(4)模式改成了symmetric,此时的fill无效:

transforms.Pad(padding=(8, 16, 32, 64), fill=(255, 0, 0), padding_mode='symmetric')

在这里插入图片描述

(6)修改亮度、对比度、饱和度:transforms.ColorJitter()

功能:调整亮度、对比度、饱和度和色相。
操作对象:PIL格式或是张量。

torchvision.transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)

参数如下:
在这里插入图片描述

  1. brightness:亮度调整因子,当为a时,从[max(0, 1-a), 1+a]中随机选择;当为(a, b)时,从[a, b]中随机选择。
  2. contrast:对比度参数,同brightness。
  3. saturation:饱和度参数,同brightness。
  4. hue:色相参数,当为a时,从[-a, a]中选择,0<=a<=0.5;当为(a, b)时,从[a, b]中随机选择,-0.5<=a<=b<=0.5。

例子如下:

(1)亮度:

transforms.ColorJitter(brightness=0.5)

即亮度在[0.5, 1.5]之间选择:
在这里插入图片描述
(2)对比度:

transforms.ColorJitter(contrast=0.5)

在这里插入图片描述
(3)饱和度:

transforms.ColorJitter(saturation=0.5)

在这里插入图片描述
(4)色相:

transforms.ColorJitter(hue=0.3)

在这里插入图片描述

(7)转灰度图:transforms.Grayscale()

功能:将图像转变为灰度图,返回类型为PIL图像。
操作对象:PIL图像。

torchvision.transforms.Grayscale(num_output_channels=1)

参数:
在这里插入图片描述
注意它的返回,通道为3时,三通道的值相等:
在这里插入图片描述
例子如下:

transforms.Grayscale(num_output_channels=3)

在这里插入图片描述

(8)依概率p转为灰度图:transforms.RandomGrayscale()

功能:依概率将图片转换为灰度图。
操作对象:PIL图像。

torchvision.transforms.RandomGrayscale(p=0.1)

在这里插入图片描述

(9)仿射变换:transforms.RandomAffine()

功能:对图像进行仿射变换,仿射变换是二维的线性变换,由五种基本原子构成,分别是旋转、平移、缩放、错切和翻转。
操作对象:PIL格式(或是张量?不清楚张量可不可以)。

torchvision.transforms.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0)

参数如下:
在这里插入图片描述

  1. degrees:旋转角度,同RandomRotation()。
  2. translate:平移区间设置,如(a,b),则水平平移距离在(-img_width×a,img_width×a)区间内选择,垂直平移距离在(-img_height×b,img_height×b)区间内选择,默认不平移。
  3. scale:缩放比例,默认不缩放。
  4. shear:错切角度设置,若为a,则图像会沿着x轴方向错切,错切角度在(-a,a)范围内;若为(a,b),则图像会沿着x轴方向错切,错切角度在(a,b)范围内;若为(a,b,c,d),则图像会沿着x轴方向错切,错切角度在(a,b)范围内,并且沿着y轴错切,错切角度在(c,d)范围内。
  5. resample:插值方法。
  6. fillcolor:填充颜色设置,(R,G,B)或(Gray)。

例子如下:

(1)旋转

transforms.RandomAffine(degrees=30)

在这里插入图片描述
(2)平移

transforms.RandomAffine(degrees=0, translate=(0.2, 0.2), fillcolor=(255, 0, 0))

在这里插入图片描述
(3)缩放

transforms.RandomAffine(degrees=0, scale=(0.7, 0.7))

在这里插入图片描述
(4)y方向错切

transforms.RandomAffine(degrees=0, shear=(0, 0, 0, 45))

在这里插入图片描述
(5)x方向错切

transforms.RandomAffine(degrees=0, shear=90, fillcolor=(255, 0, 0))

在这里插入图片描述

(10)随机遮挡:transforms.RandomErasing()

功能:在图像中随机选择一个矩阵区域并遮挡其像素。
操作对象:张量。

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

参数如下:
在这里插入图片描述

  1. p:执行随机遮挡操作的概率。
  2. scale:遮挡区域的面积。
  3. ratio:遮挡区域的长宽比。
  4. value:设置遮挡区域的像素值,(R,G,B)或(Gray)。
  5. inplace:是否原地操作,默认False。

例子如下:

(1)

transforms.RandomErasing(p=1, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=(254/255, 0, 0))

在这里插入图片描述
(2)value若是一个字符串,则会是随机填充。

transforms.RandomErasing(p=1, scale=(0.02, 0.33), ratio=(0.3, 3.3), value='1234')

在这里插入图片描述

5.transforms的操作

(1)transforms.Lambda()

功能:用户自定义lambda方法。

torchvision.transforms.Lambda(lambd)

参数:
在这里插入图片描述
格式为:
lambda[ arg1 [,arg2,…] ]:expression
其中:
arg1 [,arg2,…]为输入参数,expression为要做的操作以及返回的内容。

例子如下:

transforms.TenCrop(112, vertical_flip=False)
transforms.Lambda(lambda crops: torch.stack([(transforms.ToTensor()(crop)) for crop in crops]))

这里的操作是将TenCrop生成的十个图像拼接成一个张量。

(2)transforms.RandomChoice()

功能:从一系列transforms方法中随机挑选一个。

torchvision.transforms.RandomChoice(transforms)

格式为:

transforms.RandomChoice([transforms1, transforms2, transforms3,...])

如:要么垂直翻转,要么水平翻转。

transforms.RandomChoice([transforms.RandomVerticalFlip(p=1), transforms.RandomHorizontalFlip(p=1)])

(3)transforms.RandomApply()

功能:依据概率执行一组transforms操作。

torchvision.transforms.RandomApply(transforms, p=0.5)

如:0.5的概率执行仿射变换后灰度化。

transforms.RandomApply([transforms.RandomAffine(degrees=0, shear=45, fillcolor=(255, 0, 0)), transforms.Grayscale(num_output_channels=3)], p=0.5)

(4)transforms.RandomOrder()

功能:对一组transforms方法打乱,然后顺序执行。

torchvision.transforms.RandomOrder(transforms)

如:

transforms.RandomOrder([transforms.RandomRotation(15),transforms.Pad(padding=32),transforms.RandomAffine(degrees=0, translate=(0.01, 0.1), scale=(0.9, 1.1))]),

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

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

相关文章

numpy方法读取加载mnist数据集

方法来自机器之心公众号 首先下载mnist数据集&#xff0c;并将里面四个文件夹解压出来&#xff0c;下载方法见前面的博客 import tensorflow as tf import numpy as np import osdataset_path rD:\PycharmProjects\tensorflow\MNIST_data # 这是我存放mnist数据集的位置 is_…

纳米线传感器来了,传感芯片还会远吗

来源&#xff1a;科学网“无旁路电路”纳米线桥接生长方案 黄辉供图微型气体检测仪 黄辉供图人工智能、可穿戴装备、物联网等信息技术迅猛发展&#xff0c;需要海量的传感器提供支持&#xff0c;大数据和云计算等业务也需要各种传感器实时采集数据来支撑。但目前的传感器存在国…

PyTorch框架学习七——自定义transforms方法

PyTorch框架学习七——自定义transforms方法一、自定义transforms注意要素二、自定义transforms步骤三、自定义transforms实例&#xff1a;椒盐噪声虽然前面的笔记介绍了很多PyTorch给出的transforms方法&#xff0c;也非常有用&#xff0c;但是也有可能在具体的问题中需要开发…

美国芯片简史:军方大力扶持下的产物 但一度被日 韩超越

来源&#xff1a;知乎专栏腾讯科技近日发起系列策划&#xff0c;聚焦各个芯片大国的发展历程。第四期&#xff1a;《美国芯片简史》。集成电路是电子信息产业的的基石&#xff0c;电子信息产业对国民经济与社会发展具有重大推动作用。从全球集成电路产业发展历程来看&#xff0…

PyTorch框架学习八——PyTorch数据读取机制(简述)

PyTorch框架学习八——PyTorch数据读取机制&#xff08;简述&#xff09;一、数据二、DataLoader与Dataset1.torch.utils.data.DataLoader2.torch.utils.data.Dataset三、数据读取整体流程琢磨了一段时间&#xff0c;终于对PyTorch的数据读取机制有了一点理解&#xff0c;并自己…

报告 | 2019年全球数字化转型现状研究报告

来源&#xff1a;Prophet2019年&#xff0c;战略数字化转型的重要性已经不止于IT领域&#xff0c;而影响着全公司的竞争力。企业的相关预算直线攀升&#xff0c;利益相关方所关注的颠覆性技术数量急剧增加。数字化项目开始由首席高管主导&#xff0c;并由相互协作的跨职能团队管…

Android调用binder实现权限提升-android学习之旅(81)

当进程A权限较低&#xff0c;而B权限较高时&#xff0c;容易产生提权漏洞 fuzz测试的测试路径 First level Interface是服务 Second level Interface是服务中对应的接口 1.首先获取第一层和第二层接口&#xff0c;及服务以及对应服务提供的接口 2.根据以上信息结合参数类型信息…

PyTorch框架学习九——网络模型的构建

PyTorch框架学习九——网络模型的构建一、概述二、nn.Module三、模型容器Container1.nn.Sequential2.nn.ModuleList3.nn.ModuleDict()4.总结笔记二到八主要介绍与数据有关的内容&#xff0c;这次笔记将开始介绍网络模型有关的内容&#xff0c;首先我们不追求网络内部各层的具体…

中国17种稀土有啥军事用途?没它们,美军技术优势将归零

来源&#xff1a;陶慕剑观察 稀土就是化学元素周期表中镧系元素——镧(La)、铈(Ce)、镨(Pr)、钕(Nd)、钷(Pm)、钐(Sm)、铕(Eu)、钆(Gd)、铽(Tb)、镝(Dy)、钬(Ho)、铒(Er)、铥(Tm)、镱(Yb)、镥(Lu)&#xff0c;再加上钪(Sc)和钇(Y)共17种元素。中国稀土占据着众多的世界第一&…

PyTorch框架学习十——基础网络层(卷积、转置卷积、池化、反池化、线性、激活函数)

PyTorch框架学习十——基础网络层&#xff08;卷积、转置卷积、池化、反池化、线性、激活函数&#xff09;一、卷积层二、转置卷积层三、池化层1.最大池化nn.MaxPool2d2.平均池化nn.AvgPool2d四、反池化层最大值反池化nn.MaxUnpool2d五、线性层六、激活函数层1.nn.Sigmoid2.nn.…

PyTorch框架学习十一——网络层权值初始化

PyTorch框架学习十一——网络层权值初始化一、均匀分布初始化二、正态分布初始化三、常数初始化四、Xavier 均匀分布初始化五、Xavier正态分布初始化六、kaiming均匀分布初始化前面的笔记介绍了网络模型的搭建&#xff0c;这次将介绍网络层权值的初始化&#xff0c;适当的初始化…

W3C 战败:无权再制定 HTML 和 DOM 标准!

来源&#xff1a;CSDN历史性时刻&#xff01;——近日&#xff0c;W3C正式宣告战败&#xff1a;HTML和DOM标准制定权将全权移交给浏览器厂商联盟WHATWG。由苹果、Google、微软和Mozilla四大浏览器厂商组成的WHATWG已经与万维网联盟&#xff08;World Wide Web Consortium&#…

PyTorch框架学习十二——损失函数

PyTorch框架学习十二——损失函数一、损失函数的作用二、18种常见损失函数简述1.L1Loss&#xff08;MAE&#xff09;2.MSELoss3.SmoothL1Loss4.交叉熵CrossEntropyLoss5.NLLLoss6.PoissonNLLLoss7.KLDivLoss8.BCELoss9.BCEWithLogitsLoss10.MarginRankingLoss11.HingeEmbedding…

化合物半导体的机遇

来源&#xff1a;国盛证券半导体材料可分为单质半导体及化合物半导体两类&#xff0c;前者如硅&#xff08;Si&#xff09;、锗(Ge&#xff09;等所形成的半导体&#xff0c;后者为砷化镓&#xff08;GaAs&#xff09;、氮化镓&#xff08;GaN&#xff09;、碳化硅&#xff08;…

PyTorch框架学习十三——优化器

PyTorch框架学习十三——优化器一、优化器二、Optimizer类1.基本属性2.基本方法三、学习率与动量1.学习率learning rate2.动量、冲量Momentum四、十种常见的优化器&#xff08;简单罗列&#xff09;上次笔记简单介绍了一下损失函数的概念以及18种常用的损失函数&#xff0c;这次…

最全芯片产业报告出炉,计算、存储、模拟IC一文扫尽

来源&#xff1a;智东西最近几年&#xff0c; 半导体产业风起云涌。 一方面&#xff0c; 中国半导体异军突起&#xff0c; 另一方面&#xff0c; 全球产业面临超级周期&#xff0c;加上人工智能等新兴应用的崛起&#xff0c;中美科技摩擦频发&#xff0c;全球半导体现状如何&am…

python向CSV文件写内容

f open(r"D:\test.csv", w) f.write(1,2,3\n) f.write(4,5,6\n) f.close() 注意&#xff1a;上面例子中的123456这6个数字会分别写入不同的单元格里&#xff0c;即以逗号作为分隔符将字符串内容分开放到不同单元格 上面例子的图&#xff1a; 如果要把变量的值放入…

PyTorch框架学习十四——学习率调整策略

PyTorch框架学习十四——学习率调整策略一、_LRScheduler类二、六种常见的学习率调整策略1.StepLR2.MultiStepLR3.ExponentialLR4.CosineAnnealingLR5.ReduceLRonPlateau6.LambdaLR在上次笔记优化器的内容中介绍了学习率的概念&#xff0c;但是在整个训练过程中学习率并不是一直…

JavaScript数组常用方法

转载于:https://www.cnblogs.com/kenan9527/p/4926145.html

蕨叶形生物刷新生命史,动物界至少起源于5.7亿年前

来源 &#xff1a;newsweek.com根据发表于《古生物学》期刊&#xff08;Palaeontology&#xff09;的一项研究&#xff0c;动物界可能比科学界所知更加古老。研究人员发现&#xff0c;一种名为“美妙春光虫”&#xff08;Stromatoveris psygmoglena&#xff09;的海洋生物在埃迪…