torchvision.transforms
torchvision.transforms
这个包中包含resize
、crop
等常见的data augmentation
操作,基本上PyTorch中的data augmentation
操作都可以通过该接口实现。该包主要包含两个脚本:transformas.py
和functional.py
,前者定义了各种data augmentation
的类,在每个类中通过调用functional.py
中对应的函数完成data augmentation
操作。
该包主要包含五类变换:
- Transforms on PIL Image(对PIL.Image进行变换)
- Transforms on torch.Tensor(对Tensor进行变换)
- Conversion Transforms
- Generic Transforms(通用变换)
- Functional Transforms
1. Transforms on PIL Image
class torchvision.transforms.Compose(transforms)
:将多个transform
组合起来使用。torchvision.transforms.RandomOrder(transforms)
#以随机顺序应用转换列表。torchvision.transforms.RandomChoice(transforms)
:应用从列表中随机挑选的单个转换。- 大小
torchvision.transforms.Resize(size,interpolation = 2 )
:将输入PIL图像的大小调整为给定大小。class torchvision.transforms.CenterCrop(size)
:将给定的PIL.Image
进行中心切割,得到给定的size
。class torchvision.transforms.RandomCrop(size, padding=0)
:切割中心点的位置随机选取。torchvision.transforms.FiveCrop(size)
:将给定的PIL
图像裁剪为四个角和中央裁剪。torchvision.transforms.TenCrop(size,vertical_flip = False )
:将给定的PIL图像裁剪为四个角,中央裁剪加上这些的翻转版本(默认使用水平翻转)。class torchvision.transforms.RandomSizedCrop(size, interpolation=2)
:先将给定的PIL.Image
随机切,然后再resize
成给定的size
大小。- 翻转
class torchvision.transforms.RandomHorizontalFlip
:随机水平翻转给定的PIL.Image
,概率为0.5
。torchvision.transforms.RandomVerticalFlip(p = 0.5 )
:以给定的概率随机垂直翻转给定的PIL图像。class torchvision.transforms.Pad(padding, fill=0)
:将给定的PIL.Image
的所有边用给定的pad value
填充。padding
:要填充多少像素 ;fill
:用什么。- 变换
torchvision.transforms.RandomRotation(degrees,resample = False,expand = False,center = None )
:按角度旋转图像。torchvision.transforms.RandomAffine(degrees,translate = None,scale = None,shear = None, resample = False,fillcolor = 0 )
:图像保持中心不变的随机仿射变换。torchvision.transforms.RandomPerspective(distortion_scale = 0.5,p = 0.5,interpolation = 3 )
:以给定的概率随机执行给定PIL图像的透视变换 。- 颜色
class torchvision.transforms.ColorJitter(亮度= 0,对比度= 0,饱和度= 0,色调= 0 )
: 随机更改图像的亮度,对比度和饱和度。
14.torchvision.transforms.RandomGrayscale(p = 0.1)
:将图像随机转换为灰度,概率为p(默认值为0.1)。
2. Transforms on torch.Tensor
class torchvision.transforms.Normalize(mean, std)
:给定均值:(R,G,B)
, 方差:(R,G,B)
,将会把Tensor
正则化。即:Normalized_image=(image-mean)/std
。
3. Conversion Transforms
class torchvision.transforms.ToTensor
:把一个取值范围是[0,255]
的PIL.Image
或者shape
为(H,W,C)
的numpy.ndarray
,转换成形状为[C,H,W]
,取值范围是[0,1.0]
的torch.FloadTensor
。class torchvision.transforms.ToPILImage
:将shape
为(C,H,W)
的Tensor
或shape
为(H,W,C)
的numpy.ndarray
转换成PIL.Image
,值不变。
4. Generic Transforms
class torchvision.transforms.Lambda(lambd)
:使用lambd作为转换器。
5. Functional Transforms
功能转换提供了对转换管道的细粒度控制。与上面的转换相反,功能转换不包含其参数的随机数生成器。这意味着您必须指定/生成所有参数。
torchvision.transforms.functional.adjust_brightness(img,brightness_factor )
#调整图像的亮度,返回的是亮度调整后的PIL图像torchvision.transforms.functional.adjust_contrast(img,contrast_factor )
#调整图像的对比度。torchvision.transforms.functional.adjust_hue(img,hue_factor )
#调整图像的色调。torchvision.transforms.functional.affine(img,angle,translate,scale,shear,resample = 0,fillcolor = None )
#在图像保持图像中心不变的情况下应用仿射变换。torchvision.transforms.functional.crop(img,i,j,h,w )
#裁剪给定的PIL图像。torchvision.transforms.functional.erase(img,i,j,h,w,v )
#用给定值擦除输入Tensor Image,返回的是删除图像。torchvision.transforms.functional.five_crop(img,size )
#将给定的PIL图像裁剪为四个角和中央裁剪。torchvision.transforms.functional.hflip(img )
#水平翻转给定的PIL图像,img(PIL图像) - 要翻转的图像。torchvision.transforms.functional.normalize(tensor,mean,std,inplace = False )
#用平均值和标准偏差归一化张量图像。torchvision.transforms.functional.pad(img,padding,fill = 0,padding_mode ='constant' )
#使用指定的填充模式和填充值在所有面上填充给定的PIL图像。torchvision.transforms.functional.perspective(img, startpoints, endpoints, interpolation=3)
#执行给定PIL图像的透视变换。torchvision.transforms.functional.resized_crop(img,i,j,h,w,size,interpolation = 2 )
#裁剪给定的PIL图像并将其调整为所需大小。特别是用于RandomResizedCrop。torchvision.transforms.functional.ten_crop(img,size,vertical_flip = False )
#将给定的PIL图像裁剪成四个角,中央裁剪加上这些翻转版本(默认使用水平翻转)#返回值为元组(tl,tr,bl,br,center,tl_flip,tr_flip,bl_flip,br_flip,center_flip)对应的左上角,右上角,左下角,右下角和中心裁剪,翻转图像相同。torchvision.transforms.functional.to_grayscale(img,num_output_channels = 1 )
#将图像转换为图像的灰度版本。torchvision.transforms.functional.to_tensor(pic )
#Convert a PIL Image or numpy.ndarray to tensor.