IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Pytorch教程[03]transforms -> 正文阅读

[人工智能]Pytorch教程[03]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.5FiveCrop()

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.1RandomHorizontalFlip() RandomVerticalFlip()

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

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

4.2RandomRotation()

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

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

五.transforms—图像变换

5.1Pad()

功能:对图片边缘进行填充
? 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.2ColorJitter

功能:调整亮度、对比度、饱和度和色相
? 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.3Grayscale

RandomGrayscale(num_output_channels,
p=0.1)

5.4 RandomGrayscale

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

Grayscale(num_output_channels)

5.5RandomAffine

功能:对图像进行仿射变换,仿射变换是二维的线性变换,由五种基本原子变换构成,分别是旋转、平移、缩放、错切和翻转
? 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.6RandomErasing()

功能:对图像进行随机遮挡
? 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.7transforms.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.1transforms.RandomChoice()

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

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

6.2transforms.RandomApply()

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

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

6.3transforms.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 = snr
		self.p = p
		
	def __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 plt

img = 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()
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:30:27  更:2022-03-12 17:30:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:50:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码