计算机视觉中常见图像扰动方法的Pytorch实现

和另一种说法数据增强(data augmentation)十分类似。主要区别在于,数据增强是训练时进行的,用于提升模型的鲁棒程度;而这里说的扰动指测试时进行的,用于评估已训练模型的鲁棒程度,因此并不需要数据增强过程中的随机性。考虑读取一张图片如下:

from PIL import Image
import torchvision.transforms as transforms
img = Image.open("1.jpg")
img.show()

在这里插入图片描述


  • 高斯模糊Gaussian Blur
blur = transforms.GaussianBlur(kernel_size=7, sigma=(2.0, 2.0))
img_blur = blur(img)
img_blur.show()

在这里插入图片描述
一般来说高斯核的常用大小有5,7,9,sigma取值为0.1到5之间。


  • 缩小Pad
img_pad = F.pad(img, padding=[24])
resize = transforms.Resize([224, 224])
img_pad = resize(img_pad)
img_pad.show()

在这里插入图片描述

为图像四周填充黑边,这一操作实际上会使图像整体的尺寸变大(原尺寸+黑边),为此进行pad操作后往往还需要重新缩放回原尺寸,相当于我们需要观测的对象变小了。


  • 旋转Rotation
img_rotate = img.rotate(angle=15, expand=False)
img_rotate.show()

在这里插入图片描述
默认情况下,旋转后的图像尺寸保持不变,这种时候实际上会被裁切掉一部分,如果不希望裁切的话可以将expand参数设置为True。


  • 水平翻转HorizontalFlip
hFlip = transforms.RandomHorizontalFlip(p=1.0)
img_hFlip = hFlip(img)
img_hFlip.show()

在这里插入图片描述


  • 垂直翻转VerticalFlip
vFlip = transforms.RandomVerticalFlip(p=1.0)
img_vFlip = vFlip(img)
img_vFlip.show()

在这里插入图片描述


  • 灰度Gray
gray = transforms.Grayscale()
img_gray = gray(img)
img_gray.show()

在这里插入图片描述


Ref

https://pytorch.org/vision/stable/transforms.html
https://pytorch.org/vision/stable/auto_examples/plot_transforms.html#sphx-glr-auto-examples-plot-transforms-py

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值