transforms

  1. transforms运行机制

    torchvision.transforms:常用的图像预处理方法

    torchvision.datasets:常用数据及的dataset实现,mnist,cifar-10,imagenet等

    torchvision.model:常用的模型与训练,AlexNet,VGG,ResNet,GoogLeNet等

    torchvision:计算机视觉工具包

我们对图片进行预处理的图像增强,主要就是增加图片的泛化能力,丰富训练数据。

泛化能力(generalization ability)是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。

  1. 数据标准化——transform.normalize

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

    逐channel对图像进行标准化

    output = (input - mean) / std
  • mean:各通道的均值
  • std:各通道的标准差
  • inplace:是否原地操作

    数据标准化的目的:

    在于标准化后能够使整体数据样本接近于0,在进行sigmoid激活函数时候能够发现收敛速度更快

transforms ——裁剪

  1. crop 裁剪

    transforms.CenterCrop,从图像中心裁剪图片,size(所需要的裁剪图片尺寸)
from PIL import Image
from torchvision import transforms
x_img = Image.open("paper.jpg").convert('RGB')
x_img = transforms.CenterCrop((88, 10))(x_img)
x_img.show()
  1. RandomCrop

    transforms.RandomCrop(size,padding=None,pad_if_needed=False,fill=0,padding_mode='constant')
  • size:尺寸
  • padding:设置填充大小

    当为a时,上下左右均填充a个像素

    当为(a,b)时,上下填充b个像素,左右填充a个像素

    当为(a,b,c,d)时,左上右下分别填充a,b,c,d
  • pad_if_need:若图像小于设定size,则填充
  • padding_mode:填充模式,有四种:
    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时,设置填充的像素值
flag = True
# flag = False
if flag:
x_img = Image.open("face.jpg").convert('RGB')
x_img = transforms.RandomCrop((900,200), padding=100, fill=(255,0,0))(x_img) # 如果裁剪像素大于原始,则需要进行pad_if_needed
x_img.show()
  1. RandomResizedCrop

    随机大小、长宽比裁剪图片

    RandomResizedCrop(size,scale=(0.08,1.0),ratio=(3/4,4,3),interpolation)
  • scale:随机裁剪面积比例,默认(0.08, 1)
  • ratio:随机长宽比,默认(3/4,4/3)
  • interpolation:插值方法

    PIL.Image.NEAREST

    PIL.Image.BILINEAR

    PIL.Image.BICUBIC
flag = True
# flag = False
if flag:
x_img = Image.open("paper.jpg").convert('RGB')
x_img = transforms.RandomResizedCrop((400,200),scale=(0.5,1.0),
ratio=(3./4,4./3),
interpolation=0)(x_img)
x_img.show()
  1. FiveCrop
# ===================04 FiveCrop=================
flag =True
# flag = False
if flag:
x_img = Image.open("face.jpg").convert('RGB')
x_img1, x_img2, x_img3, x_img4, x_img5 = transforms.FiveCrop((300,300))(x_img)
x_img2.show()
  1. TenCrop

    在图像的上下左右以及中心裁剪出尺寸为size的5张图片,TenCrop对这5张图片进行水平或者垂直镜像获得10张图片
  • size:所需裁剪图片尺寸
  • vertical_flip:是否垂直翻转
# ===================05 TenCrop=================
flag =True
# flag = False
if flag:
x_img = Image.open("face.jpg").convert('RGB')
x_img1, x_img2, x_img3, x_img4, x_img5 \
,x_img6 ,x_img7,x_img8,x_img9,x_img10= transforms.TenCrop((300,300),vertical_flip=True)(x_img)
x_img7.show()

transforms——翻转、旋转

  1. transforms flip

    1. RandomHorizontalFlip
    2. RandomVerticalFilp
# ===================06 Flip=================
flag = True
# flag = False
if flag:
x_img = Image.open("face.jpg")
x_imgd = transforms.RandomVerticalFlip(p=1)(x_img)
plt.imshow(x_imgd)
plt.show()
  1. RandomRoatation

    随机旋转图片

    RandomRotation(degress, resample=False, expand=False, center=None)
  • degress:旋转角度

    为a时,在(-a,a)之间选择旋转角度

    为(a,b)时,在(a,b)之间选择旋转角度
  • resample:重采样方法
  • expand:是否扩大图片,保持原图信息
# ===================07 Rotation==============
flag = True
# flag = False
if flag:
x_img = Image.open("face.jpg")
x_imgd = transforms.RandomRotation(60, resample=Image.BILINEAR, expand=True, center=(40,80))(x_img)
x_imgd.show()

pytorch(09)transform模块(基础)的更多相关文章

  1. [源码解析] PyTorch 分布式(4)------分布式应用基础概念

    [源码解析] PyTorch 分布式(4)------分布式应用基础概念 目录 [源码解析] PyTorch 分布式(4)------分布式应用基础概念 0x00 摘要 0x01 基本概念 0x02 ...

  2. 03爬虫-requests模块基础(1)

    requests模块基础 什么是requests模块 requests模块是python中原生基于网络模拟浏览器发送请求模块.功能强大,用法简洁高效. 为什么要是用requests模块 用以前的url ...

  3. 【MM系列】SAP MM模块-基础配置第一篇

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-基础配置第一篇   ...

  4. python常识系列08-->logging模块基础入门

    前言 努力从今天开始,成功从"零"开始. 一.logging模块是什么? 是Python内置的标准模块,主要用于输出运行日志 二.日志是什么? 日志是代码的必要组成部分 记录日志能 ...

  5. 09 基于模块wsgiref版web框架

    09 基于模块wsgiref版web框架 模块引入 真实开发中的python web程序,一般会分为两部分:       服务器程序:负责对socket服务器进行封装,并在请求到来时,对请求的各种数据 ...

  6. pytorch(10)transform模块(进阶)

    图像变换 Pad 对图片边缘进行填充 transforms.Pad(padding,fill=0,padding_mode='constant') padding:设置填充大小,(a,b,c,d)左上 ...

  7. 【笔记】PyTorch快速入门:基础部分合集

    PyTorch快速入门 Tensors Tensors贯穿PyTorch始终 和多维数组很相似,一个特点是可以硬件加速 Tensors的初始化 有很多方式 直接给值 data = [[1,2],[3, ...

  8. python 模块基础介绍

    从逻辑上组织代码,将一些有联系,完成特定功能相关的代码组织在一起,这些自我包含并且有组织的代码片段就是模块,将其他模块中属性附加到你的模块的操作叫做导入. 那些一个或多个.py文件组成的代码集合就称为 ...

  9. python模块基础之json,requeste,xml,configparser,logging,subprocess,shutil。

    1.json模块 json     用于[字符串]和 [python基本数据类型] 间进行转换(可用于不同语言之前转换),json.loads,将字符串转成python的基本数据类型,json.dum ...

随机推荐

  1. JavaScript——浏览器检查

    遍历opera中的所有方法

  2. C# 静态构造函数 和 非静态构造函数

    静态构造函数是在构造函数方法前面添加了static关键字之后形成的,并且没有修饰符(public,private),没有参数. 特点:1.静态构造函数没有修饰符修饰(public,private),因 ...

  3. EFCore学习记录--数据访问技术人门2

    1 code fist 1.创建实体类: 2.创建DbContext类: mysql连接字符串是:Server=127.0.0.1;Port=3306;Database=BlogDb; User=ro ...

  4. 一张图解决ThreadLocal

    一张图解决ThreadLocal 一.前言 年底梳理知识体系时,研究了一下ThreadLocal的源码,整理了一张核心图. 想着,都走到这一步了,那就写一篇深度解读的文章吧.看过我之前文章的小伙伴都知 ...

  5. javascript输出数据到文件

    function export(name, data) { var urlObject = window.URL || window.webkitURL || window var export_bl ...

  6. JWT实现登录认证实例

    JWT全称JSON Web Token,是一个紧凑的,自包含的,安全的信息交换协议.JWT有很多方面的应用,例如权限认证,信息交换等.本文将简单介绍JWT登录权限认证的一个实例操作. JWT组成 JW ...

  7. 2021-2-17:Java HashMap 的中 key 的哈希值是如何计算的,为何这么计算?

    首先,我们知道 HashMap 的底层实现是开放地址法 + 链地址法的方式来实现. 即数组 + 链表的实现方式,通过计算哈希值,找到数组对应的位置,如果已存在元素,就加到这个位置的链表上.在 Java ...

  8. Flutter Hackathon 2020

    Flutter Hackathon 2020 https://flutterhackathon.com/#/ Flutter Day https://mp.weixin.qq.com/s/ux17-A ...

  9. web hack & web security

    web hack & web security https://www.hacksplaining.com/lessons https://www.hacksplaining.com/ OK ...

  10. 比特币等主流货币走势成谜,VAST深受关注

    谁也不会想到,2021年的第一个月份,数字货币市场就会如此精彩.先是以比特币为首的主流货币迎来了一波上涨,让很多生态建设者看到了暴富的机会.再是一波大跌,让很多建设者失去了希望.再到后来触底反弹和冲高 ...