Pytroch torchvision 数据增强 翻转 旋转

Posted LiQiang33

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pytroch torchvision 数据增强 翻转 旋转相关的知识,希望对你有一定的参考价值。

文章目录

0 数据增强简介

  • 数据增强常常用来扩充数据,在一定程度上可以缓解数据不足所带来模型训练程度不足的问题,对于少量数据进行数据增强,再训练模型,可以增强模型

  • 数据增强的方式:通常在训练中使用而不在测试中使用,并且在训练中常常使用随机的方式生成

  • 数据增强的使用:通常根据应用场景进行数据增强。比如有些数据在光线有大量变化的场景中应用,需要对图片数据进行光照上的增强;有些数据在形状上有变化,比如伪装物体的检测,此时可能需要随机剪裁和随机的部分像素的消失来进行数据增强

  • 对于医学上的数据,常常是方向上的变化,器官或者组织常常在医学图像上发生翻转或者旋转,因此可以对这样的场景进行旋转和翻转的数据增强

1 使用的例子

  • 本次使用的例子是OCT血管图像,由于血管图像常常出现在扫描范围的不同方位上,所以对其进行翻转和旋转增强

图片:

2 增强方式

2.1 水平翻转和竖直翻转

代码:

# 1. 水平翻转
horizontal_flip = torchvision.transforms.RandomHorizontalFlip(p=1)
# 2. 竖直翻转
vertical_flip = torchvision.transforms.RandomVerticalFlip(p=1)

params:

  • p: 代表随机的概率,即以p的概率翻转,否则不反转
  • 在本次数据增强中,我们明确要进行数据的翻转,因此设p=1

效果:

2.2 旋转

代码:

# 逆时针90度
rotate_90 = torchvision.transforms.RandomRotation(degrees=(90, 90), expand=False, center=(364, 364))   # expand=False旋转的棱角消失,保持原图像的大小,否则变大
# 180度
rotate_180 = torchvision.transforms.RandomRotation(degrees=(180, 180), expand=False, center=(364, 364))
# 270
rotate_270 = torchvision.transforms.RandomRotation(degrees=(270, 270), expand=False, center=(364, 364))

params:

  1. degrees=(min, max), 随机在min - max角度上进行旋转, 若degrees=degree, 则在(-degree , degree)上进行随机的旋转。本次要求对其继续明确的角度旋转,因此设置为degree = (degree, degree), 此时就会按照既定的角度进行逆时针旋转
  2. expand=False, 旋转时,由于图片棱角有时会被旋转到左上角,此时图片所占的矩形区域就会变大,选择expand=False,则会去掉相关的区域,保持原来图片的大小,如果选择True图片扩大
  3. center=(x, y): 转转中心,本次指定方形图片728 × 728的中心为旋转中心,即(364, 364)

效果:


参考文章

以上是关于Pytroch torchvision 数据增强 翻转 旋转的主要内容,如果未能解决你的问题,请参考以下文章

在 pytorch 中使用 torchvision.transforms 进行数据增强

如何在 Pytorch 中使用 torchvision.transforms 对分割任务进行数据增强?

深度学习和目标检测系列教程 9-300:TorchVision和Albumentation性能对比,如何使用Albumentation对图片数据做数据增强

Pytorch-数据增强

极智AI | OpenCV and torchvision.transforms 实现图像裁剪方法

pytorch/torchvision处理32位/16位灰度图的坑