图像增强

裁剪

  • transforms.CenterCrop

  • 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.RandomResizedCrop
    功能:随机大小、长宽比裁剪图片
    • size:所需裁剪图片尺寸
    • scale:随机裁剪面积比例, 默认(0.08, 1)
    • ratio:随机长宽比,默认(3/4, 4/3)
    • interpolation:插值方法
    PIL.Image.NEAREST
    PIL.Image.BILINEAR
    PIL.Image.BICUBIC

  • FiveCrop

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

翻转和旋转

  • RandomHorizontalFlip

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

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

代码

train_transform = transforms.Compose([transforms.Resize((224, 224)),# 1 CenterCrop# transforms.CenterCrop(512),     # 512# 2 RandomCrop# transforms.RandomCrop(224, padding=16),# transforms.RandomCrop(224, padding=(16, 64)),# transforms.RandomCrop(224, padding=16, fill=(255, 0, 0)),# transforms.RandomCrop(512, pad_if_needed=True),   # pad_if_needed=True# transforms.RandomCrop(224, padding=64, padding_mode='edge'),# transforms.RandomCrop(224, padding=64, padding_mode='reflect'),# transforms.RandomCrop(1024, padding=1024, padding_mode='symmetric'),# 3 RandomResizedCrop# transforms.RandomResizedCrop(size=224, scale=(0.5, 0.5)),# 4 FiveCrop# transforms.FiveCrop(112),# transforms.Lambda(lambda crops: torch.stack([(transforms.ToTensor()(crop)) for crop in crops])),# 5 TenCrop# transforms.TenCrop(112, vertical_flip=False),# transforms.Lambda(lambda crops: torch.stack([(transforms.ToTensor()(crop)) for crop in crops])),# 1 Horizontal Flip# transforms.RandomHorizontalFlip(p=1),# 2 Vertical Flip# transforms.RandomVerticalFlip(p=0.5),# 3 RandomRotation# transforms.RandomRotation(90),# transforms.RandomRotation((90), expand=True),# transforms.RandomRotation(30, center=(0, 0)),# transforms.RandomRotation(30, center=(0, 0), expand=True),   # expand only for center rotationtransforms.ToTensor(),transforms.Normalize(norm_mean, norm_std),
])

图像变换

  • 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)

  • 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

  • Grayscale

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

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

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

  • transforms.Lambda
    功能:用户自定义lambda方法
    • lambd:lambda匿名函数
    lambda [arg1 [,arg2, … , argn]] : expression

transforms的操作

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

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

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

自定义transforms

  1. 仅接收一个参数,返回一个参数
  2. 注意上下游的输出与输入

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

总结

一、裁剪
• 1. transforms.CenterCrop
• 2. transforms.RandomCrop
• 3. transforms.RandomResizedCrop
• 4. transforms.FiveCrop
• 5. transforms.TenCrop

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

三、图像变换
• 1. transforms.Pad
• 2. transforms.ColorJitter
• 3. transforms.Grayscale
• 4. transforms.RandomGrayscale
• 5. transforms.RandomAffine
• 6. transforms.LinearTransformation
• 7. transforms.RandomErasing
• 8. transforms.Lambda
• 9. transforms.Resize
• 10. transforms.Totensor
• 11. transforms.Normalize

四、transforms的操作
• 1. transforms.RandomChoice
• 2. transforms.RandomApply
• 3. transforms.RandomOrder

【深度之眼】【Pytorch打卡第4天】:各种transforms详解相关推荐

  1. 深度之眼Pytorch打卡(十三):Pytorch全连接神经网络部件——线性层、非线性激活层与Dropout层(即全连接层、常用激活函数与失活 )

    前言   无论是做分类还是做回归,都主要包括数据.模型.损失函数和优化器四个部分.数据部分在上一篇笔记中已经基本完结,从这篇笔记开始,将学习深度学习模型.全连接网络MLP是最简单.最好理解的神经网络, ...

  2. 深度之眼Pytorch打卡(九):Pytorch数据预处理——预处理过程与数据标准化(transforms过程、Normalize原理、常用数据集均值标准差与数据集均值标准差计算)

    前言   前段时间因为一些事情没有时间或者心情学习,现在两个多月过去了,事情结束了,心态也调整好了,所以又来接着学习Pytorch.这篇笔记主要是关于数据预处理过程.数据集标准化与数据集均值标准差计算 ...

  3. 深度学习之目标检测(五)-- RetinaNet网络结构详解

    深度学习之目标检测(五)-- RetinaNet网络结构详解 深度学习之目标检测(五)RetinaNet网络结构详解 1. RetinaNet 1.1 backbone 部分 1.2 预测器部分 1. ...

  4. Keras深度学习实战(3)——神经网络性能优化技术详解

    Keras深度学习实战(3)--神经网络性能优化技术详解 0. 前言 1. 缩放输入数据集 1.1 数据集缩放的合理性解释 1.2 使用缩放后的数据集训练模型 2. 输入值分布对模型性能的影响 3. ...

  5. 【深度学习/机器学习】为什么要归一化?归一化方法详解

    [深度学习/机器学习]为什么要归一化?归一化方法详解 文章目录 1. 介绍 1.1 什么是归一化 1.2 归一化的好处 2. 归一化方法 2.1 最大最小标准化(Min-Max Normalizati ...

  6. SD卡 (SD miniSD microSD SDIO)知识详解

    SD卡 (SD miniSD microSD SDIO)知识详解 SD卡(Secure Digital Memory Card)是一种基于半导体闪存工艺的存储卡, 1999年,由日本松下.东芝及美国S ...

  7. HTC One V卡刷RUU准备工作 图文教程详解

    为什么80%的码农都做不了架构师?>>>    HTC One V卡刷RUU准备工作 图文教程详解 相对于线刷,HTC One V卡刷RUU更为方便快捷,不会和普通RUU那样这么容易 ...

  8. 长虹电视机卡在android,长虹电视视频播放卡怎么办?电视优化教程详解

    原标题:长虹电视视频播放卡怎么办?电视优化教程详解 长虹电视视频播放卡怎么办?引起电视视频播放卡顿的原因是多方面的.单单对于长虹电视来说,有可能是因为内存不足,应用不适配.网速或信号不稳等问题导致的. ...

  9. 【深度之眼PyTorch框架班第五期】作业打卡01:PyTorch简介及环境配置;PyTorch基础数据结构——张量

    文章目录 任务名称 任务简介 详细说明 作业 1. 安装anaconda,pycharm, CUDA+CuDNN(可选),虚拟环境,pytorch,并实现hello pytorch查看pytorch的 ...

  10. 深度之眼课程打卡-python入门05

    目录 文章目录 目录 前言 内容 一.数据结构介绍 1.Series的创建 2.DataFrame的创建 二.数据索引index 1.通过索引值或索引标签获取数据 2.自动化对齐 三.利用pandas ...

最新文章

  1. 笔试题——max pooling滑动窗口实现(python 代码)
  2. 实现图片打乱_基于混沌Logistic加密算法的图片加密与还原
  3. mysql语句中事务可靠性_MYSQL中的事务
  4. 用一个实际例子理解Docker volume工作原理 1
  5. 搭建串口收发与存储双口RAM简易应用系统
  6. vue+node实现中间层同步调用接口
  7. 适用于Java开发人员的Elasticsearch:Java的Elasticsearch
  8. 学成在线--21.课程信息修改
  9. Spring-mvc设置@RequestMapping标签更改返回头及@RequestMapping简述
  10. 饭卡 01背包 DP
  11. window下Oracle 11G安装文档
  12. 190331每日一句
  13. 算法:62唯一路径Unique Paths 动态规划和排列组合算法
  14. Windows 7常见蓝屏代码解决办法
  15. 在c语言中以下程序的动能,c语言超星尔雅期末测试答案
  16. Syslog架设windows日志服务器
  17. The Flask Mega-Tutorial 之 Chapter 8: Followers
  18. JAVA -- 正则表达式高级学习技巧
  19. 用python3爬取天猫商品评论并分析(1)
  20. 手写由链表设计的简易队列

热门文章

  1. 详解51单片机播放音乐、电子琴、快进
  2. Valgrind 检测linux上c++内存泄露
  3. 手把手教你怎么把阿里云盘变成本地硬盘
  4. 可以不考华为hcia,直接考hcip吗?
  5. ROS移植KCF代码
  6. 计算机与科学 研究生考试试卷,2018年全国硕士研究生入学统一考试计算机科学与技术学科联考计算机学科专业基础综合试题及答案...
  7. mac中的Windows虚拟机字体太小解决办法
  8. 机器视觉的9大快速开发库
  9. 短视频APP游戏搭建需要用什么样的服务器香港高防大带宽服务器贵吗
  10. 开个博客记录一下球的成长