24、针对tensor操作,随机选择矩形区域删除
torchvision.transforms.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0, inplace=False)
25、针对tensor操作,归一化图片,给定均值和方差
torchvision.transforms.Normalize(mean, std, inplace=False)
26、给定tensor数据格式进行改变
torchvision.transforms.ConvertImageDtype(dtype: torch.dtype)
27、把numpy(H x W x C) or tensor( C x H x W) 转为PIL
torchvision.transforms.ToPILImage(mode=None)
1、将Tensor的每个元素乘以255;
2、将数据由Tensor转化成Uint8;
3、将Tensor转化成numpy的ndarray类型;
4、对ndarray对象做permute (1, 2, 0)的转置,因为pytorch的维度和图片维度不一样;
5、将ndarray对象转化成PILImage数据格式;
6、输出该PILImage数据(save后可以直接打开)。
28、把PIL or numpy 转为tensor
torchvision.transforms.ToTensor
1、将图片转化成内存中的存储格式;
2、将字节以流的形式输入,转化成Tensor类型;
3、对Tensor进行reshape;
4、对Tensor进行permute(2,0,1,因为pytorch的维度和图片维度不一样;
5、将Tensor中的每个元素除以255;
6、输出该Tensor数据。
27、PIL(H x W x C)对象转为tensor(C x H x W)
torchvision.transforms.PILToTensor
#随机增强方法一
augmenter = transform.RandAugment()
img0=Image.open('lin-xiao-xun-000003.jpg')
imgs = [augmenter(img0) for _ in range(4)]
axs = plt.figure().subplots(1, 5)
axs[0].imshow(img0);axs[0].set_title('src');axs[0].axis('off')
axs[1].imshow(imgs[0]);axs[1].set_title('1');axs[1].axis('off')
axs[2].imshow(imgs[1]);axs[2].set_title('2');axs[2].axis('off')
axs[3].imshow(imgs[2]);axs[3].set_title('3');axs[3].axis('off')
axs[4].imshow(imgs[3]);axs[4].set_title('4');axs[4].axis('off')
plt.show()
图片:
#随机增强方法二
augmenter = transform.TrivialAugmentWide()
img0=Image.open('lin-xiao-xun-000003.jpg')
imgs = [augmenter(img0) for _ in range(4)]
axs = plt.figure().subplots(1, 5)
axs[0].imshow(img0);axs[0].set_title('src');axs[0].axis('off')
axs[1].imshow(imgs[0]);axs[1].set_title('1');axs[1].axis('off')
axs[2].imshow(imgs[1]);axs[2].set_title('2');axs[2].axis('off')
axs[3].imshow(imgs[2]);axs[3].set_title('3');axs[3].axis('off')
axs[4].imshow(imgs[3]);axs[4].set_title('4');axs[4].axis('off')
plt.show()
图片: