pytorch框架(计算机视觉)一.数据增强
pytorch框架中一些代码的解释
预处理函数
class torchvision.transforms.Compose(transforms)
data_transforms = {'train': transforms.Compose([transforms.RandomSizedCrop(48),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize([0.5,0.5,0.5], [0.5,0.5,0.5])]),'val': transforms.Compose([transforms.Scale(image_size),transforms.CenterCrop(crop_size),transforms.ToTensor(),transforms.Normalize([0.5,0.5,0.5], [0.5,0.5,0.5])]),}
Compose方法是将多种变换组合起来。
1.crop
裁剪(Crop)—— transforms.CenterCrop:中心裁剪:size:所需要裁剪的尺寸 transforms.RandomCrop:从图片中随机裁剪出尺寸为size的图片
transforms.RandomResizedCrop:随机大小、长宽比裁剪图像
transforms.FiveCrop:在图像上下左右以及中心裁剪出尺寸为size的5张图像
transforms.TenCrop:对裁剪的5张图像进行水平或垂直镜像获得10张图像
transforms.RandomCrop:
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时,设置填充的像素值。
transforms.RandomResizedCrop:
size:裁剪图像大小。
scale:随机裁剪面积比例,默认是(0.08,1)。
ratio:随机长宽比,默认(3/4,4/3)。
interpolation:插值方法,PIL.Image.Nearest\PIL.Image.Bilinear\PIL.Image.Bicubic
————————————————
原文链接:https://blog.csdn.net/weixin_43687366/article/details/107740433
transforms.RandomResizedCrop( ) 将给定图像随机裁剪为不同的大小和宽高比,然后缩放所裁剪得到的图像为制定的大小;(即先随机采集,然后对裁剪得到的图像缩放为同一大小)默认scale=(0.08, 1.0)
from PIL import Image
from torchvision import transforms
import matplotlib.pyplot as plt
img = Image.open(r"F:\code DVC\python image processing\hanli2.png")
print("原图大小:",img.size)
data1 = transforms.RandomResizedCrop(200)(img)
print("随机裁剪后的大小:",data1.size)
data2 = transforms.RandomResizedCrop(200)(img)
data3 = transforms.RandomResizedCrop(100)(img)# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.subplot(2,2,1),plt.imshow(img),plt.axis('off'),plt.title("原图")
#plt.subplot(2,2,1)表示把显示界面分割成2*2的网格。
# 其中,第一个参数是行数,第二个参数是列数,第三个参数表示图形的标号。
plt.subplot(2,2,2),plt.imshow(data1),plt.axis('off'),plt.title("200图1")
plt.subplot(2,2,3),plt.imshow(data2),plt.axis('off'),plt.title("200图2")
plt.subplot(2,2,4),plt.imshow(data3),plt.axis('off'),plt.title("100图3")
plt.show()
2.翻转和旋转
翻转和旋转(Flip and Rotation)
依概率p水平翻转:transforms.RandomHorizontalFlip(p=0.5)
依概率p垂直翻转:transforms.RandomVerticalFlip(p=0.5)
随机旋转:transforms.RandomRotation
3.图像变换
transforms.Pad:对图像边缘进行填充
transforms.ColorJitter:修改图像亮度、对比度饱和度
transforms.Grayscale:转灰度图
transforms.RandomGrayscale:依概率转换为灰度图
transforms.RandomAffine:仿射变换
transforms.LinearTransformation:线性变换
transforms.RandomErasing:随机选择图像中的矩形区域并擦除其像素。 transforms.Lambda
transforms.Resize
transforms.ToTensor:转换为tensor向量
transforms.Normalize:标准化
(1).transform.Normalize经常看到
transform.ToTensor(),
transform.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))
以上面代码为例,ToTensor()能够把灰度范围从0-255变换到0-1之间,而后面的transform.Normalize()则把0-1变换到(-1,1).具体地说,对每个通道而言,Normalize执行以下操作:
image=(image-mean)/std
原文链接:https://blog.csdn.net/jzwong/article/details/104272600
4.transforms的操作
transforms.RandomChoice:从给定的一系列transforms中选一个进行操作
transforms.RandomApply:给一个transforms加上概率,以一定的概率执行该操作
transforms.RandomOrder:将transforms中的操作顺序随机打乱
原文链接:https://blog.csdn.net/weixin_43687366/article/details/107740433
pytorch框架(计算机视觉)一.数据增强相关推荐
- 【直播预告】计算机视觉中数据增强原理和实践
应广大粉丝要求,以后有三AI会多组织直播,分享更多实践的干货知识,下面预告一下下周六的知乎Live直播-计算机视觉中数据增强原理和实践. 1.直播基本信息 时间:2019年4月20日20:00开始. ...
- 使用PyTorch和Albumentations进行数据增强与损失函数
数据扩增 Part 1 数据读取与数据扩增 图像读取 数据扩增 基于图像处理的数据扩增 几何变换 灰度和彩色空间变换 添加噪声和滤波 图像混合(Mixing images) 随机搽除(Random e ...
- 【动手学深度学习PyTorch版】27 数据增强
上一篇请移步[动手学深度学习PyTorch版]23 深度学习硬件CPU 和 GPU_水w的博客-CSDN博客 目录 一.数据增强 1.1 数据增强(主要是关于图像增强) ◼ CES上的真实的故事 ◼ ...
- 【Pytorch学习笔记】数据增强
前言 torchvision 模块包含常用的数据集,模型建构,图像变换算法,分别是torchvision.datasets,torchvision.models,torchvision.transfo ...
- Pytorch 目标检测BoundingBox数据增强 详细记录
目录 1.resize 2 裁剪crop 2.1 中心裁剪center_crop 2.2 随机图像大小裁剪RandomSize_crop 2.3 随机裁剪Random_crop 3.随机翻转rando ...
- 【transformer】【pytorch】DeiT的数据增强
1 main中的相关参数 #函数:def get_args_parser(): parser.add_argument('--input-size', default=224, type=int, h ...
- pytorch图像数据增强N大技巧
数据增强对深度神经网络的训练来说是非常重要的,尤其是在数据量较小的情况下能起到扩充数据的效果. 还记得当时在学习过拟合的解决方法的时候,就有一条就是数据增强,那么我们这次来学习下,在 pytorch ...
- PyTorch 学习笔记(二):PyTorch的数据增强与数据标准化
本文截取自<PyTorch 模型训练实用教程>,获取全文pdf请点击:https://github.com/tensor-yu/PyTorch_Tutorial 文章目录 transfor ...
- 论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强
论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强 摘要 1 介绍 2 相关工作 带增强的聚类方法 具有一致 ...
最新文章
- 关于AttributeError: module ‘numpy‘ has no attribute ‘integer‘的解决方法
- java c3p0 配置文件_【c3p0】 C3P0的三种配置方式以及基本配置项详解
- vmdk文件怎么安装到虚拟机_【技术分享】虚拟机镜像解析
- Sql Server 2005中的快照隔离
- 2021牛客暑期多校训练营4 D-Rebuild Tree(prufer序列+树形dp)
- mysql explicit_defaults_for_timestamp参数
- 时间格式化及操作(moment.js篇)
- JAVA定义一个鲜花类_Java作业 题目:16版.情人节送玫瑰花
- startActivity流程(上)
- 拼多多上架专供湖北平价口罩 每天300万只
- 杰魔(Geomagic Design)逆向工程软件学习0-产品逆向工程介绍
- matlab插值函数 外插,02-函数插值--Matlab插值函数
- 用javascript实现一个打乱文字小程序
- “智能营销新图景”梅花网大展华院数据主题演讲
- ffmpeg给视频加水印
- Onload ‐ TCP
- 精图规范1.0----16 交互性 Interactivity
- 一边掉眼泪,一边用文字诉说_伤感日志
- 90岁的褚时健反思:活着是为了什么?
- 【速览】2021年中国风电轴承行业发展现状分析:大功率风电轴承研发进程加快[图]