图像扩增的好助手之Pytorch-transforms

简介: 图像扩增的好助手之Pytorch-transforms

前言


为了使模型更加具备泛化能力,在数据的处理方面,往往需要进行数据扩增,而数据扩增本人建议放在训练之前完成,减少训练使用时间,同时也便于自己查看扩增后图像的质量,把控好图像的质量间接的把控了模型的质量。



一.transforms—Crop


1.1 torchvision.transforms.CenterCrop(size)


功能:从图像中心裁剪图片
size:所需裁剪图片尺寸

1.2  torchvision.transforms.RandomCrop(size, padding=None, pad_tf_needed=False, fill=0, padding_mode='constant')

功能:从图片中随机裁剪出尺寸为size的图片
size: 所需裁剪图片尺寸
padding: 设置填充大小
当为a时,上下左右均填充a个像素;
当为(a, b)时,上下填充b个像素,左右填充a个像素;
当为(a, b, c, d)时,左、上、右、下分别填充a、b、c、d。
pad_if_need: 若图像小于设定size,则填充
padding_mode: 填充模式,有4种模式\
 ⅰ. constant: 像素值由fill设定\
 ⅱ. edge: 像素值由图像边缘像素设定\
 ⅲ. reflect: 镜像填充,最后一个像素不镜像,例: [1,2,3,4]→[3,2,1,2,3,4,3,2][1,2,3,4]→[3,2,1,2,3,4,3,2]
 ⅳ. symmetric: 镜像填充,最后一个像素镜像,例:[1,2,3,4]→[2,1,1,2,3,4,4,3][1,2,3,4]→[2,1,1,2,3,4,4,3]
 fill: constant时,设置填充的像素值

1.3 torchvision.transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(3/4, 4/3), interpolation=2)

功能:随机大小、长宽比裁剪图片
size: 所需裁剪图片尺寸
scale: 随机裁剪面积比例,默认(0.08, 1)
ratio: 随机长宽比,默认(3/4, 4/3)
interpolation: 插值方法
PIL.Image.NEAREST
PIL.Image.BILINEAR
PIL.Image.BICUBIC

1.4 torchvision.transforms.TenCrop(size, vertical_flip=False)

功能:在图像的上下左右以及中心裁剪出尺寸为size的5张图片,TenCrop对这5张图片进行水平或者垂直镜像获得10张图片
size: 所需裁剪图片尺寸
vertical_flip: 是否垂直翻转

二. transforms-Flip


2.1 torchvision.transforms.RandomHorizontalFlip(p=0.5)

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

2.2torchvision.transforms.RandomRotation(degrees, resample=False, expand=False, center=None)

功能:随机旋转图片
degrees: 旋转角度
当为a时,在(-a, a)之间选择旋转角度;
当为(a, b)时,在(a, b)之间选择旋转角度。
resample: 重采样方法
expand: 是否扩大图片,以保持原图信息


三,transforms-Pad


3.1 torchvision.transforms.Pad(padding, fill=0, padding_mode='constant')

功能:对图像边缘进行填充
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)

3.2torchvision.transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)

功能:调整亮度、对比度、饱和度和色相
brightness: 亮度调整因子
当为a时,从[max(0,1−a),1+a][max(0,1−a),1+a]中随机选择;
当为(a, b)时,从[a,b][a,b]中随机选择。
contrast: 对比度参数,同brightness
saturation: 饱和度参数,同brightness
hue: 色相参数
当为a时,从[−a,a][−a,a]中选择参数,注:0≤a≤0.50≤a≤0.5
当为(a, b)时,从[a,b][a,b]中选择参数,注:−0.5≤a≤b≤0.5−0.5≤a≤b≤0.5

3.3torchvision.transforms.Grayscale(num_output_channels=1)

3.4torchvision.transforms.RandomGrayscale(p=0.1)

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


3.5torchvision.transforms.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=0, fillcolor=0)

功能:对图像进行仿射变换,仿射变换是二维的线性变换,由五种基本原子变换构成,分别是旋转、平移、缩放、错切和翻转
degrees: 旋转角度设置
translate: 平移区间设置,如(a, b),a设置宽(width),b设置高(height),图像在宽维度平移区间为 -img_width a < dx < img_width a
scale: 缩放比例(以面积为单位)
fill_color: 填充颜色设置
shear: 错切角度设置,有水平错切和垂直错切
若为a,则仅在x轴错切,错切角度在(-a, a)之间;
若为(a, b),则a设置x轴角度,b设置y的角度;
若为(a, b, c, d),则a、b设置x轴角度,c、d设置y轴角度。
resample: 重采样方式,有NEAREST、BILINEAR、BICUBIC


3.6 torchvision.transforms.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0, inplace=False)

功能:对图像进行随机遮挡
p: 概率值,执行该操作的概率
scale: 遮挡区域的面积
ratio: 遮挡区域长宽比
value: 设置遮挡区域的像素值,(R, G, B)or(Gray)
参考文献:《Random Erasing Data Augmentaion》


3.7 torchvision.transforms.Lambda(lambd)

功能: 用户自定义lambda方法
lambd: lambda匿名函数
例如:transforms.Lambda(lambda crops: torch.stack([transforms.Totensor()(crop) for crop in crops]))


相关文章
|
6月前
|
算法 计算机视觉
OpenCV(四十一):图像分割-分水岭法
OpenCV(四十一):图像分割-分水岭法
104 0
|
6月前
|
机器学习/深度学习 Shell 算法框架/工具
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
723 0
|
6月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享
PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享
|
6月前
|
存储 编解码 vr&ar
ICLR 2024:单张图像完成逼真的三维重建
【2月更文挑战第28天】ICLR 2024:单张图像完成逼真的三维重建
200 2
ICLR 2024:单张图像完成逼真的三维重建
|
机器学习/深度学习 存储 数据采集
SqueezeNet算法解析—鸟类识别—Paddle实战
SqueezeNet算法,顾名思义,Squeeze的中文意思是压缩和挤压的意思,所以我们通过算法的名字就可以猜想到,该算法一定是通过解压模型来降低模型参数量的。当然任何算法的改进都是在原先的基础上提升精度或者降低模型参数,因此该算法的主要目的就是在于降低模型参数量的同时保持模型精度。随着CNN卷积神经网络的研究发展,越来越多的模型被研发出来,而为了提高模型的精度,深层次的模型例如AlexNet和ResNet等得到了大家的广泛认可。
220 0
SqueezeNet算法解析—鸟类识别—Paddle实战
|
6月前
|
算法 计算机视觉
OpenCV中使用加速鲁棒特征检测SURF与图像降噪讲解与实战(附源码)
OpenCV中使用加速鲁棒特征检测SURF与图像降噪讲解与实战(附源码)
106 0
|
6月前
|
机器学习/深度学习 人工智能 计算机视觉
极智AI | 图像处理中对掩膜mask和ROI的理解
大家好,我是极智视界,本文介绍一下 图像处理中对掩膜 mask 和 ROI 的理解。
319 0
|
存储 机器学习/深度学习 人工智能
YOLOv5永不缺席 | YOLO-Pose带来实时性高且易部署的姿态估计模型!!!
YOLOv5永不缺席 | YOLO-Pose带来实时性高且易部署的姿态估计模型!!!
380 0
|
机器学习/深度学习 算法 PyTorch
【Pytorch神经网络实战案例】08 识别黑白图中的服装图案(Fashion-MNIST)
Fashion-MNST数据集中的图片大小是28像素×28像素。每-幅图就是1行784(28×28)列的数据括二中的每个值优麦一个像素。
265 0
|
机器学习/深度学习 算法 PyTorch
100行Pytorch代码实现三维重建技术神经辐射场 (NeRF)
提起三维重建技术,NeRF是一个绝对绕不过去的名字。这项逆天的技术,一经提出就被众多研究者所重视,对该技术进行深入研究并提出改进已经成为一个热点。不到两年的时间,NeRF及其变种已经成为重建领域的主流。本文通过100行的Pytorch代码实现最初的 NeRF 论文。
1437 0
100行Pytorch代码实现三维重建技术神经辐射场 (NeRF)
下一篇
无影云桌面