torchvision
torchvision包包括流行的数据集、模型架构和计算机视觉的常见图像转换。
torchvision.transforms
可用于图像变换,多个函数可用Compose将它们串联起。
数据类型:PIL图像和张量图像。张量图像是(C,H,W)形状的张量,其中C是通道数,H和W是图像高度和宽度。一批张量图像是一个(B, C, H, W)形状的张量,其中B是该批图像的数量。
Compositions of transforms
compose(transforms):用于把多个变换组合起来。
compose = [
transforms.Resize(size=size),
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
]
transforms = torch.Compose(compse)
Transforms on torch.*Tensor only
transforms.Normalize(mean, std, inplace=False)
是用均值和标准差对
Tensor
进行归一化处理,常用在对输入图像的预处理中 。
Conversion Transforms
ToPILImage([mode])
将tensor或者ndarray转化成PILImage。
ToTensor()
将PIL Image or numpy.ndarray转化为tensor。
PILToTensor()
Transforms on PIL Image and torch.*Tensor
有很多对图片进行处理的操作,可用于数据增强。
Resize
Resize(size[, interpolation, max_size, …]) 把图片转成需要的尺寸。
GaussianBlur
对图片进行高斯模糊。
CenterCrop
在中心位置对给定的图像进行裁剪
size = (224, 224)
transform = transforms.CenterCrop(size)
center_crop = transform(img)
center_crop.save('center_crop.jpg')
原图和中心裁剪后:
ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
随机修改图片的亮度、对比度和饱和度,色相,常用来进行数据增强,尤其是训练图像类别不均衡或图像数量较少时。
brightness = (1, 10)
contrast = (1, 10)
saturation = (1, 10)
hue = (0.2, 0.4)
transform = transforms.ColorJitter(brightness, contrast, saturation, hue)
color_jitter = transform(img)
color_jitter.save('color_jitter.jpg')
FiveCrop(size)
分别从图像的四个角以及中心进行五次裁剪,剪裁后返回的是一个tuple。
size = (224, 224)
transform = transforms.FiveCrop(size)
five_crop = transform(img)
five_crop[0].save(r'five_crop.jpg')
five_crop[1].show()
原图的一角:
Grayscale(num_output_channels=1)
将图像转换为灰度图像,默认通道数为1,通道数为3时,RGB三个通道的值相等。
Pad(padding, fill=0, padding_mode=‘constant’)
对图像进行填充,可以设置要填充的值及填充的大小,默认是图像四边都填充。
size = (224, 224)
padding = 16
fill = (0, 0, 255)
transform = transforms.Compose([
transforms.CenterCrop(size),
transforms.Pad(padding, fill)
])
pad = transform(img)
pad.save('pad.jpg')
RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0)
保持图像中心不变的情况下对图像进行随机的仿射变换
degrees = (15, 30)
translate=(0, 0.2)
scale=(0.8, 1)
fillcolor = (0, 0, 255)
transform = transforms.RandomAffine(degrees=degrees, translate=translate, scale=scale, fillcolor=fillcolor)
random_affine = transform(img)
random_affine.save('random_affine.jpg')
Functional Transforms
待补充