pytorch(09)transform模块(基础)
transforms
- transforms运行机制
torchvision.transforms:常用的图像预处理方法
torchvision.datasets:常用数据及的dataset实现,mnist,cifar-10,imagenet等
torchvision.model:常用的模型与训练,AlexNet,VGG,ResNet,GoogLeNet等
torchvision:计算机视觉工具包
我们对图片进行预处理的图像增强,主要就是增加图片的泛化能力,丰富训练数据。
泛化能力(generalization ability)是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。
- 数据标准化——transform.normalize
transforms.Normalize(mean,std,inplace=False)
逐channel对图像进行标准化
output = (input - mean) / std
- mean:各通道的均值
- std:各通道的标准差
- inplace:是否原地操作
数据标准化的目的:
在于标准化后能够使整体数据样本接近于0,在进行sigmoid激活函数时候能够发现收敛速度更快
transforms ——裁剪
- 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()
- 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:填充模式,有四种:
- constant:像素值由fill设定
- edge:像素值由图像边缘像素决定
- reflect:镜像填充,最后一个像素不镜像,eg:[1,2,3,4]->[3,2,1,2,3,4,3,2]
- 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()
- 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()
- 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()
- 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——翻转、旋转
- transforms flip
- RandomHorizontalFlip
- 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()
- 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模块(基础)的更多相关文章
- [源码解析] PyTorch 分布式(4)------分布式应用基础概念
[源码解析] PyTorch 分布式(4)------分布式应用基础概念 目录 [源码解析] PyTorch 分布式(4)------分布式应用基础概念 0x00 摘要 0x01 基本概念 0x02 ...
- 03爬虫-requests模块基础(1)
requests模块基础 什么是requests模块 requests模块是python中原生基于网络模拟浏览器发送请求模块.功能强大,用法简洁高效. 为什么要是用requests模块 用以前的url ...
- 【MM系列】SAP MM模块-基础配置第一篇
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-基础配置第一篇 ...
- python常识系列08-->logging模块基础入门
前言 努力从今天开始,成功从"零"开始. 一.logging模块是什么? 是Python内置的标准模块,主要用于输出运行日志 二.日志是什么? 日志是代码的必要组成部分 记录日志能 ...
- 09 基于模块wsgiref版web框架
09 基于模块wsgiref版web框架 模块引入 真实开发中的python web程序,一般会分为两部分: 服务器程序:负责对socket服务器进行封装,并在请求到来时,对请求的各种数据 ...
- pytorch(10)transform模块(进阶)
图像变换 Pad 对图片边缘进行填充 transforms.Pad(padding,fill=0,padding_mode='constant') padding:设置填充大小,(a,b,c,d)左上 ...
- 【笔记】PyTorch快速入门:基础部分合集
PyTorch快速入门 Tensors Tensors贯穿PyTorch始终 和多维数组很相似,一个特点是可以硬件加速 Tensors的初始化 有很多方式 直接给值 data = [[1,2],[3, ...
- python 模块基础介绍
从逻辑上组织代码,将一些有联系,完成特定功能相关的代码组织在一起,这些自我包含并且有组织的代码片段就是模块,将其他模块中属性附加到你的模块的操作叫做导入. 那些一个或多个.py文件组成的代码集合就称为 ...
- python模块基础之json,requeste,xml,configparser,logging,subprocess,shutil。
1.json模块 json 用于[字符串]和 [python基本数据类型] 间进行转换(可用于不同语言之前转换),json.loads,将字符串转成python的基本数据类型,json.dum ...
随机推荐
- 用servlet在网页中打印字符串(初接触)、servlet调用过程
一.servlet是什么: 二.在官方文档中点servlet 这就是servlet的方法,这里说一下什么叫生命周期的方法(life-cycle methods):就是这个对象一旦创生之后一定会执行的方 ...
- 头疼的Python 脚本报错
Python 脚本报错 检查是否用了制表符.变量声明前面不能用制表符,只能用空格,版本为2.7.14
- 微服务架构学习Day01-SpringBoot入门
基本概念 SpringBoot的优点: 可以创建独立的Spring应用 SpringBoot嵌入Tomcat,Jetty和Unsertow, 不需要部署war文件 根据需要通过maven获取start ...
- 僵尸进程 & 孤儿进程
参考博文 基本概念 僵尸进程:是所有进程都会进入的一种进程状态,子进程退出,而父进程并没有调用 wait() 或 waitpid() 获取子进程的状态信息,那么子进程的 PID 和 进程描述符 等资源 ...
- CentOS7系统时间和硬件时间不同步问题
CentOS7系统中有两个时间:系统时间 和 硬件时间 我们常用命令 date 会输出系统时间,用 date 命令修改的也是系统时间 硬件时间是写入到 BIOS 中的时间,用 hwclock -r 命 ...
- 洛谷p1637 三元上升子序列(树状数组
题目描述 Erwin最近对一种叫"thair"的东西巨感兴趣... 在含有n个整数的序列a1,a2......an中, 三个数被称作"thair"当且仅当i&l ...
- LVS之DR模式部署
一.LVS-DR数据包流向分析 为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为1-2-3-41.Client 向目标 VIP 发出请求,Director(负载均衡器)接 ...
- set CSS style in js solutions All In One
set CSS style in js solutions All In One css in js set each style property separately See the Pen se ...
- bash for mac
bash for mac https://sourabhbajaj.com/mac-setup/iTerm/ https://sourabhbajaj.com/mac-setup/iTerm/zsh. ...
- TypeScript & LeetCode
TypeScript & LeetCode TypeScript In Action TypeScript 复杂类型 编写复杂的 TypeScript 类型 // 方法「只可能」有两种类型签名 ...