在使用transforms.RandomErasing时会出现如下的错误:
'Image' object has no attribute 'shape'
这是因为随机遮挡是对 (c, h, w) 形状的 tensor 进行操作,一般在 ToTensor 之后进行,而使用PIL.Image读取图片后的形式是(H, W, C)形状的图片,所以直接用RandomErasing时会出现错误。
image=Image.open('test.JPG').convert('RGB')
image_era=transforms.RandomErasing(p=1, scale=(0.3, 0.5), value=0, inplace=False)(image)
plt.imshow(image_era)
解决办法:
import PIL.Image as Image
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
image=Image.open('data/Fireworks/test/8.JPG').convert('RGB')
plt.imshow(image)
plt