文章目录

  • 一.torchvision:计算机视觉工具包
  • 二.数据增强
  • 三.transforms---裁剪
    • 3.1 transforms.Normalize()
    • 3.2 transforms.CenterCrop()
    • 3.3 transforms.RandomCrop()
    • 3.4 RandomResizedCrop()
    • 3.5 FiveCrop()
    • 3.6 TenCrop()
  • 四.transforms---翻转、旋转
    • 4.1 RandomHorizontalFlip() RandomVerticalFlip()
    • 4.2 RandomRotation()
  • 五.transforms---图像变换
    • 5.1 Pad()
    • 5.2 ColorJitter
    • 5.3 Grayscale
    • 5.4 RandomGrayscale
    • 5.5 RandomAffine
    • 5.6 RandomErasing()
    • 5.7 transforms.Lambda()
  • 六、transforms的操作
    • 6.1 transforms.RandomChoice()
    • 6.2 transforms.RandomApply()
    • 6.3 transforms.RandomOrder()
  • 七、自定义transforms
    • 7.1椒盐噪声
  • 八、transforms方法总览

一.torchvision:计算机视觉工具包

  • torchvision.transforms : 常用的图像预处理方法
  • torchvision.datasets : 常用数据集的dataset实现,MNIST,CIFAR-10,ImageNet等
  • torchvision.model : 常用的模型预训练,AlexNet,VGG, ResNet,GoogLeNet等

二.数据增强

数据增强又称为数据增广,数据扩增,它是对训练集进行变换,使训练集更丰富,从而让模型更具泛化能力

三.transforms—裁剪

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

3.1 transforms.Normalize()

功能:逐channel的对图像进行标准化
output = (input - mean) / std
• mean:各通道的均值
• std:各通道的标准差
• inplace:是否原地操作

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

3.2 transforms.CenterCrop()

功能:从图像中心裁剪图片
• size:所需裁剪图片尺寸

3.3 transforms.RandomCrop()

功能:从图片中随机裁剪出尺寸为size的图片
• size:所需裁剪图片尺寸
• padding:设置填充大小
当为a时,上下左右均填充a个像素
当为(a, b)时,上下填充b个像素,左右填充a个像素
当为(a, b, c, d)时,左,上,右,下分别填充a, b, c, d
• pad_if_need:若图像小于设定size,则填充
• padding_mode:填充模式,有4种模式

  1. constant:像素值由fill设定
  2. edge:像素值由图像边缘像素决定
  3. reflect:镜像填充,最后一个像素不镜像,eg:[1,2,3,4] → [3,2,1,2,3,4,3,2]
  4. symmetric:镜像填充,最后一个像素镜像,eg:[1,2,3,4] → [2,1,1,2,3,4,4,3]

• fill:constant时,设置填充的像素值

transforms.RandomCrop(size, padding=None, pad_if_needed=False, fill=0, padding_mode='constant')

3.4 RandomResizedCrop()

功能:随机大小、长宽比裁剪图片
• size:所需裁剪图片尺寸
• scale:随机裁剪面积比例, 默认(0.08, 1)
• ratio:随机长宽比,默认(3/4, 4/3)
• interpolation:插值方法

  • PIL.Image.NEAREST
  • PIL.Image.BILINEAR
  • PIL.Image.BICUBIC

3.5 FiveCrop()

transforms.FiveCrop(size)

3.6 TenCrop()

transforms.FiveCrop(size)
transforms.TenCrop(size,
vertical_flip=False)
功能:在图像的上下左右以及中心裁剪出尺
寸为size的5张图片,TenCrop对这5张图片
进行水平或者垂直镜像获得10张图片
• size:所需裁剪图片尺寸
• vertical_flip:是否垂直翻转

transforms.TenCrop( size, vertical_flip=False)

四.transforms—翻转、旋转

4.1 RandomHorizontalFlip() RandomVerticalFlip()

功能:依概率水平(左右)或垂直(上下)翻转图片
•p:翻转概率

RandomHorizontalFlip(p=0.5)
RandomVerticalFlip(p=0.5)

4.2 RandomRotation()

功能:随机旋转图片
• degrees:旋转角度
当为a时,在(-a,a)之间选择旋转角度
当为(a, b)时,在(a, b)之间选择旋转角度
• resample:重采样方法
• expand:是否扩大图片,以保持原图信息
• center:旋转点设置,默认中心旋转

3.RandomRotation RandomRotation(degrees, resample=False, expand=False, center=None)

五.transforms—图像变换

5.1 Pad()

功能:对图片边缘进行填充
• padding:设置填充大小
当为a时,上下左右均填充a个像素
当为(a, b)时,上下填充b个像素,左右填充a个像素
当为(a, b, c, d)时,左,上,右,下分别填充a, b, c, d
• padding_mode:填充模式,有4种模式,constant、edge、reflect和symmetric
• fill:constant时,设置填充的像素值,(R, G, B) or (Gray)

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

5.2 ColorJitter

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

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

5.3 Grayscale

RandomGrayscale(num_output_channels,
p=0.1)

5.4 RandomGrayscale

功能:依概率将图片转换为灰度图
• num_ouput_channels:输出通道数
只能设1或3
• p:概率值,图像被转换为灰度图的概率

Grayscale(num_output_channels)

5.5 RandomAffine

功能:对图像进行仿射变换,仿射变换是二维的线性变换,由五种基本原子变换构成,分别是旋转、平移、缩放、错切和翻转
• degrees:旋转角度设置
• translate:平移区间设置,如(a, b), a设置宽(width),b设置高(height)
图像在宽维度平移的区间为 -img_width * a < dx < img_width * a
• scale:缩放比例(以面积为单位)
• fill_color:填充颜色设置

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

5.6 RandomErasing()

功能:对图像进行随机遮挡
• p:概率值,执行该操作的概率
• scale:遮挡区域的面积
• ratio:遮挡区域长宽比
• value:设置遮挡区域的像素值,(R, G, B) or (Gray)

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

5.7 transforms.Lambda()

功能:用户自定义lambda方法
• lambd:lambda匿名函数

lambda [arg1 [,arg2, … , argn]] : expression

transforms.Lambda(lambd)

例:

transforms.TenCrop(200, vertical_flip=True),
transforms.Lambda(lambda crops: torch.stack([transforms.Totensor()(crop) for crop in crops])),

六、transforms的操作

6.1 transforms.RandomChoice()

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

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

6.2 transforms.RandomApply()

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

transforms.RandomApply([transforms1, transforms2, transforms3], p=0.5)

6.3 transforms.RandomOrder()

功能:对一组transforms操作打乱顺序

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

七、自定义transforms

自定义transforms要素:

  1. 仅接收一个参数,返回一个参数
  2. 注意上下游的输出与输入
class Compose(object):def __call__(self, img):for t in self.transforms:img = t(img)return img

通过类实现多参数传入:

class YourTransforms(object):def __init__(self, ...):...def __call__(self, img):...return img

7.1椒盐噪声

椒盐噪声又称为脉冲噪声,是一种随机出现的白点或者黑点, 白点称为盐噪声,黑色为椒噪声
信噪比(Signal-Noise Rate, SNR)是衡量噪声的比例,图像中为图像像素的占比

class AddPepperNoise(object):def __init__(self, snr, p):self.snr = snrself.p = pdef __call__(self, img):```添加椒盐噪声具体实现过程```return img
class Compose(object):def __call__(self, img):for t in self.transforms:img = t(img)return img

八、transforms方法总览

一、裁剪
• transforms.CenterCrop
• transforms.RandomCrop
• transforms.RandomResizedCrop
• transforms.FiveCrop
• transforms.TenCrop

二、翻转和旋转
• transforms.RandomHorizontalFlip
• transforms.RandomVerticalFlip
• transforms.RandomRotation

三、图像变换
• transforms.Pad
• transforms.ColorJitter
• transforms.Grayscale
• transforms.RandomGrayscale
• transforms.RandomAffine
• transforms.LinearTransformation
• transforms.RandomErasing
• transforms.Lambda
• transforms.Resize
• transforms.Totensor
• transforms.Normalize

四、transforms的操作
• transforms.RandomChoice
• transforms.RandomApply
• transforms.RandomOrd

点赞!收藏!感谢支持!

这是pytorch目前提供的方法

from torchvision import transforms
from PIL import Image
import matplotlib.pyplot as pltimg = Image.open("img/5.jpg")data1 = transforms.RandomResizedCrop(224)(img)  # 功能:随机大小、长宽比裁剪图片# data2 = transforms.RandomResizedCrop(224)(img)# data3 = transforms.RandomResizedCrop(224)(img)data4 = transforms.RandomCrop(224)(img)  # 从图片中随机裁剪出尺寸为size的图片data5 = transforms.Resize([512, 512])(img)data6 = transforms.CenterCrop([512, 512])(img)  # 从图像中心裁剪图片data7 = transforms.RandomHorizontalFlip(p=0.9)(img)  # 功能:依概率水平(左右)翻转图片data8 = transforms.RandomVerticalFlip(p=0.9)(img)  # 功能:依概率垂直(上下)翻转图片data9 = transforms.RandomRotation(45)(img)  # 功能:随机旋转图片data10 = transforms.Pad(padding=100)(img)  # 功能:对图片边缘进行填充data11 = transforms.ColorJitter(brightness=5,contrast=0,saturation=0, hue=0)(img)  # 功能:调整亮度、对比度、饱和度和色相data12 = transforms.RandomErasing(p=0.5,scale=(0.02, 0.33),  # 遮挡区域的面积ratio=(0.3, 3.3),  # 遮挡区域长宽比value=0,  # 设置遮挡区域的像素值,(R, G, B) or (Gray)inplace=False)(img)data13 = transforms.GaussianBlur(5)(img)plt.subplot(2, 2, 1), plt.imshow(img), plt.title("input")
plt.subplot(2, 2, 2), plt.imshow(data1), plt.title("data1")
plt.subplot(2, 2, 3), plt.imshow(data4), plt.title("data2")
plt.subplot(2, 2, 4), plt.imshow(data13), plt.title("data3")
plt.show()

Pytorch教程[03]transforms相关推荐

  1. 【深度学习】Github上标星1.1W的PyTorch教程,我们给您搬来了

    之前给大家推过TensorFlow的入门教程,大家纷纷表示"搞研究用PyTorch它不香嘛?" 行,那说干就干.我们马上去Github上,给大家搬来了一本开源的PyTorch教程& ...

  2. YDOOK:Pytorch教程:转置矩阵 转置张量 T

    YDOOK:Pytorch教程:转置矩阵 转置张量 T © YDOOK Jinwei Lin, shiye.work import torch import numpy as npt = torch. ...

  3. pytorch教程 聊天机器人(详细注释attentionrnn输入输出shape等知识点...

    最近可能要用到seq2seq模型去解决一些轨迹预测的问题,拿pytorch教程的聊天机器人练了练手. 原文中教程已经写的比较详尽了,在此对原文教程进行一些补充说明,可能更加方便向我这样的小白入门学习. ...

  4. YDOOK:Pytorch教程:tensor 张量内各个值同时相加一个数

    YDOOK:Pytorch教程:tensor 张量内各个值同时相加一个数 © YDOOK Jinwei Lin, shiye.work import torch import numpy as npt ...

  5. python2.7安装pytorch_Pytorch如何安装,Linux安装Pytorch,OSX安装Pytorch教程

    Pytorch目前提供了Linux,Mac Os安装,官方提供了自定义安装方法,今天我们汇总一下Pytorch如何安装,Linux安装Pytorch,OSX安装Pytorch教程以及我们可以根据PIP ...

  6. Stanford CS224N: PyTorch Tutorial (Winter ‘21) —— 斯坦福CS224N PyTorch教程 (第二部分)

    本教程译文的第一部分,请见我的上一篇博文: Stanford CS224N: PyTorch Tutorial (Winter '21) -- 斯坦福CS224N PyTorch教程 (第一部分)_放 ...

  7. YDOOK:Pytorch教程:tensor 张量内各个元素之和 相加值输出

    YDOOK:Pytorch教程:tensor 张量内各个元素之和 相加值输出 © YDOOK Jinwei Lin, shiye.work import torch import numpy as n ...

  8. ArcGIS二次开发基础教程(03):保存文档和导出地图

    ArcGIS二次开发基础教程(03):保存文档和导出地图 保存文档 保存: //这里的path为全局变量 在打开文件获添加数据时赋值原路径 //判断打开文件是否为mxd文件 是则保存 不是则另存为 i ...

  9. YDOOK:Pytorch教程:tensor 张量相乘 矩阵相乘

    YDOOK:Pytorch教程:tensor 张量相乘 矩阵相乘 © YDOOK Jinwei Lin, shiye.work import torch import numpy as npt = t ...

  10. 【小白学习PyTorch教程】六、基于CIFAR-10 数据集,使用PyTorch 从头开始​​构建图像分类模型...

    「@Author:Runsen」 图像识别本质上是一种计算机视觉技术,它赋予计算机"眼睛",让计算机通过图像和视频"看"和理解世界. 在开始阅读本文之前,建议先 ...

最新文章

  1. 受用一生的高效PyCharm使用技巧(二)
  2. RabbitMQ (一)基础概念
  3. python excel增加一列_(用Python修改excel中一列数据)python新增一列
  4. 浙江省团校计算机考试试题及答案,2001年秋浙江省高校计算机等级考试试卷(二级C)及答案..doc...
  5. 37)智能指针(就是自动delete空间)
  6. 从零开始学Pytorch(三)之多层感知机的实现
  7. shell通过sshpass远程ssh执行命令
  8. Nagios学习实践系列——配置研究[监控当前服务器]
  9. 【转】Intellij Idea识别Java Web项目
  10. (29)Spring boot 文件上传(多文件上传)【从零开始学Spring Boot】
  11. adb 命令获取点击位置坐标
  12. 云服务器和虚拟主机的区别
  13. 电子邮件地址怎么写?
  14. Unity实现打地鼠游戏操作步骤、总结、问题及解决办法
  15. 方面级情感分析论文阅读《A Survey on Aspect-Based Sentiment Analysis: Tasks, Methods, and Challenges》
  16. App crash原因以及解决办法
  17. VBA,单元格处理,数据复制,格式设置,折线图,图表属性设置
  18. 【Java 8 新特性】Java 8 Collectors:joining()使用示例
  19. 三进网吧后,我“被跳槽”了!
  20. CentOS命令行清空文件内容

热门文章

  1. 非宁静无以致远 非淡泊无以明志
  2. 从《三体》中的“降维打击”看网络世界,论维度升级的方法与实践
  3. win8 cn_windows_8_x86_dvd_915414.iso 安装密钥
  4. 一句话,连上隔壁老王家的 WiFi !
  5. (附源码)springboot教材订购系统的开发毕业设计081419
  6. 程序设计的感悟——大道至简
  7. 一个简单的搜狗微信公众号案例
  8. Windows初级运维(一)文件查找DOS命令大全
  9. 关于过去分词做形容词、any后接单复数、带疑问词的不定式作后置定语
  10. 交换机端口mtu值最大_思科交换机基本配置命令全集-mtu值怎么设置