失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > pytorch transforms图像增强

pytorch transforms图像增强

时间:2021-01-23 06:18:27

相关推荐

pytorch transforms图像增强

一、前言

在学习自己的项目发现自己有很多基础知识不牢,对于图像处理有点不太清楚,因此写下来作为自己的笔记,主要是我想自己动手写一下每一句代码到底做了什么,而不是单纯的我看了知道了它做了什么,说白了,不想停在看,而是要真正自己敲。

本文基于的是pytorch1.7.1

二、图像处理

深度学习是由数据驱动的,而数据的数量和分布对于模型的优劣具有决定性作用,所以我们需要对数据进行一定的预处理以及数据增强,用于提升模型的泛化能力。

一般来说深度学习神经网络训练前都需要做数据增强 (Data Augmentation)又称为数据增广、数据扩增,它是对训练集进行变换,使训练集更丰富,从而让模型更具泛化能力

下面为常见的图像变换

1.原始图片

显示图片,并读取图片大小

图片大小(1024, 683)

2.调整图片大小transforms.Resize

2.1.transforms.Resize(x)

主要用于调整PILImage对象的尺寸大小,图片短边缩放至x,长宽比保持不变

将图片短边缩放至x,长宽比保持不变,上述图片执行transforms.Resize(300)

图片大小(449, 300)

得到如下

2.2.transforms.Resize([x, y])

同时指定图片长宽,这样会改变长宽比例但是不是裁剪,可以恢复

图片大小(512, 300)

2.3关于图片的恢复

测试代码

图片大小(1024, 683)

注意这里要使用transforms.Resize([h, w])

3.图片裁剪

3.1中心裁剪transforms.CenterCrop

作用:中心裁剪图片

主要参数:size,表示需要裁剪的图片大小

代码示例:

图片大小(512, 512)

3.2随机裁剪transforms.RandomCrop(size,padding=None,pad_if_needed=False,fill=0,padding_mode='constant')

主要参数:

size:为需要裁剪的图片大小

padding:设置填充大小

大小为a:表示上下左右都填充a个元素

大小为(a, b):表示左右填充a个元素,上下填充b个元素

大小为(a, b, c, d):表示左上右下填充a, b, c, d个元素

pad_if_needed:若图像小于设定size,则填充,此时该项需要设置为True

padding_mode:填充模式,主要有四种

constant:像素值由fill设定。edge:像素值由图像边缘像素决定。reflect:镜像填充,最后一个像素不镜像,例如[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]。

fill:当填充模式为padding_mode的填充值

代码示例:

图片大小(512, 512)

3.3transforms.RandomResizedCrop

RandomResizedCrop(size,scale=(0.08,1.0),ratio=(3/4,4/3),interpolation)

将给定图像随机裁剪为不同的大小和宽高比,然后缩放所裁剪得到的图像为制定的大小;

主要参数:

size:为最终图片要resize的大小

scale:为随机采样最少要覆盖原图的比例,在resize前

ratio:为随机采样宽高的比例,也在resize前

interpolation:插值方法

代码示例:

图片大小(256, 256)

4.图片翻转与旋转

4.1.transforms.RandomHorizontalFlip(p=0.5)水平翻转

p为旋转的概率

代码示例:

图片大小(1024, 683)

4.2transforms.RandomVerticalFlip垂直翻转

代码示例

图片大小(1024, 683)

4.3旋转transforms.RandomRotation

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

主要参数:

degrees:旋转角度。

当为a时,在(-a, a)之间随机选择旋转角度。

当为(a, b)时,在(a, b)之间随机选择旋转角度。

resample:重采样方法。expand:是否扩大图片,以保持原图信息。center:旋转点设置,默认中心旋转

代码示例:

图片大小(1214, 1203)

参考博客与资料:

Pytorch transforms.Resize()的简单用法_xiongxyowo的博客-CSDN博客

PyTorch 08:transforms 数据增强:裁剪、翻转、旋转 - YEY 的博客 | YEY Blog

Pytorch中transforms.RandomResizedCrop()等图像操作_心向林丶的博客-CSDN博客

Illustration of transforms — Torchvision main documentation ()

如果觉得《pytorch transforms图像增强》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。