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 ...
 
随机推荐
- CodeForces - 948C (前缀和+二分)
			
博客界面的小人搞不好导致无心写博客 题意:tyd非常喜欢玩雪,下雪下了n天,第i天她会堆一堆大小为Vi的雪堆,但因为天气原因,每堆雪会融化Ti,问每天总共融化了多少雪: 直接上代码+注释 1 #inc ...
 - Java 窗口 绘制图形 #3
			
写在前面: 高数下学到第二章,突发奇想要写一个程序画二元函数图像 思路分了三层: ①抽象层: 因变量z,自变量x.y,坐标原点x0.y0.z0 ②投影实现层: 屏幕投影坐标px.py,x轴与屏幕水平方 ...
 - 牛客练习赛70  B.拼凑  (序列自动机)
			
题意:有一个模板串,有\(T\)个字符串,从字符串中找到某个子串,使得这个子串中的子序列包含模板串,求最短的子串的长度. 题解:找子序列,很容易想到序列自动机,根据序列自动机的原理,我们一定可以确保除 ...
 - Entity Framework (EF) Core学习笔记 1
			
1. Entity Framework (EF) Core 是轻量化.可扩展.开源和跨平台的数据访问技术,它还是一 种对象关系映射器 (ORM),它使 .NET 开发人员能够使用面向对象的思想处理数据 ...
 - Python 遭遇 ProxyError 问题记录
			
最近遇到的一个问题,在搞清楚之后才发现这么多年的 HTTPS_PROXY 都配置错了! 起因 想用 Python 在网上下载一些图片素材,结果 requests 报错 requests.excepti ...
 - CF1397-C. Multiples of Length
			
CF1397-C. Multiples of Length 题意: 给出一个长度为\(n\)的序列,让你进行下面操作三次使得整个序列全部变为\(0\):  在序列中选中一段序列\((l, r)\), ...
 - python 迭代器 iter多次消费
			
问题 Python 中的迭代器是我们经常使用的迭代工具, 但其只能消费一次,再次消费便会出现 StopIteration 报错. 解决方案 封装了一个类,当迭代器使用完后再次初始化. 代码 class ...
 - Ubuntu Live CD联网修复
			
此模式下可以联网修复ubuntu系统下绝大多数问题.进入LIVE CD模式,打开终端执行以下命令: #此处/dev/sda1为ubuntu根分区,工作中根据实际分区情况更改 sudo mount /d ...
 - 关于TCP和UDP的通俗理解
			
TCP和UDP是网络基础,很多公司面试也都会问到,今天我在这里,根据大神们的讲解,自己总结借鉴一下. 首先,先提一个问题:英雄联盟是TCP还是UDP? 这个问题对于游戏玩家,可能大多数人都没有想过.一 ...
 - select函数详细用法解析
			
1.表头文件 #include #include #include 2.函数原型 int select(int n,fd_set * readfds,fd_set * writefds,fd_set ...