torch:)——PyTorch: transforms用法详解


transforms用于图形变换,在使用时我们还可以使用 transforms.Compose将一系列的transforms操作链接起来。

  • torchvision.transforms.Compose([ ts,ts,ts... ])ts为transforms操作

i.e.

transforms.Compose([
     transforms.CenterCrop(10),
     transforms.ToTensor(), ])
transform = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

常见的transform操作

1.resize: `transforms.Resize

torchvision.transforms.Resize(size, interpolation=2)

将输入PIL图像的大小调整为给定大小。

  • size(sequence 或int)
  • 所需的输出大小。如果size是类似(h,w)的序列,则输出大小将与此匹配。如果size是int,则图像的较小边缘将与此数字匹配。即,如果高度>宽度,则图像将重新缩放为(size*高度/宽度,size)
  • interpolation(int,optional) - 所需的插值。默认是 PIL.Image.BILINEAR

2.标准化: transforms.Normalize

torchvision.transforms.Normalize(mean, std)

用平均值和标准偏差归一化张量图像。给定mean:(M1,…,Mn)和std:(S1,…,Sn)对于n通道,此变换将标准化输入的每个通道,torch.*Tensor即 input[channel] = (input[channel] - mean[channel]) / std[channel]

  • mean(sequence) - 每个通道的均值序列。
  • std(sequence) - 每个通道的标准偏差序列。

i.e.

transform = transforms.Compose(
    						[transforms.ToTensor(),
    					 	transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

把输入数据的值从0-1变换到(-1,1).具体地说,对每个通道而言,Normalize执行以下操作:

image = (image - mean) / std
其中mean和std分别通过(0.5,0.5,0.5)和(0.5,0.5,0.5)进行指定。原来的0-1最小值0则变成(0-0.5)/0.5=-1,而最大值1则变成(1-0.5)/0.5=1.

3.转为Tensor: transforms.ToTensor

torchvision.transforms.ToTensor

将PIL Image或者 ndarray 转换为tensor,并且归一化至[0-1] ;
注意事项: 归一化至[0-1]是直接除以255,若自己的ndarray数据尺度有变化,则需要自行修改。

猜你喜欢

转载自blog.csdn.net/fuhao7i/article/details/109646518
今日推荐