【pytorch】常用图像处理与数据增强方法合集(torchvision.transforms)
文章目录
张量化(ToTensor)
灰度化(Grayscale)
标准化(Normalize)
组合转换(Compose)
中心裁剪(CenterCrop)
边缘拓展(Pad)
随机裁剪(RandomCrop)
尺寸缩放(Resize)
随机旋转(RandomRotation)
水平翻转(RandomHorizontalFlip)
垂直翻转(RandomVerticalFlip)
色彩抖动(ColorJitter)
高斯模糊(GaussianBlur)
仿射变换(RandomAffine)(包含平移)
张量化
torchvision.transforms.ToTensor
描述
将PIL.Image或numpy.ndarray类型的图片转为torch.Tensor类型,如果图片的灰度级在[0, 255],会除以255.0,归一化到[0.0, 1.0]。这个基本上每个数据集都会用到。
参数
不用给参数。
示例
from torchvision import transforms
import numpy as np
a = np.array([[255, 199, 30]], dtype=np.uint8)
a
array([[255, 199, 30]], dtype=uint8)
t = transforms.ToTensor()
b = t(a)
b
tensor([[[1.0000, 0.7804, 0.1176]]])
灰度化
torchvision.transforms.Grayscale(num_output_channels=1)
描述
将彩色图片转为灰度图片。图片必须是PIL.Image或torch.Tensor类型。
参数
如果num_output_channels=1,返回单通道灰度图片;如果num_output_channels=3,返回三通道的灰度图片,其中r == g == b。一般我们不用设置,默认为1就行了。
示例
from PIL import Image
from torchvision import transforms
img = Image.open(‘test.jpg’)
transform = transforms.Grayscale()
img = transform(img)
绘图
标准化
torchvision.transforms.Normalize(mean, std, inplace=False)
描述
用均值和标准差标准化数据,将数据映射到区间[-1, 1],能加快模型的收敛速度,一般加到ToTensor后面。仅限torch.Tensor类型。
参数
mean (sequence):各通道的均值。
std (sequence):各通道的标准差。
inplace:是否直接在原数据上操作。
组合转换
torchvision.transforms.Compose(transforms)
描述
将若干个转换方法组合起来。
参数
transforms:带组合的转换方法
示例
以mnist数据集为例, 单通道, 其均值和标准差分别为0.1307和0.3081
train_file = datasets.MNIST(
root=‘./dataset/’,
train=True,
transform=transforms.Compose([
transform