I tried to apply RandomErase transform for every images using the following code
my_transforms = transforms.Compose([
transforms.Resize((192,192)),
transforms.RandomErasing(p=1),
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
dataset = datasets.ImageFolder(root=DATA_PATH, transform=my_transforms)
I tried to display first image from the dataset using following line
plt.imshow(dataset[0][0].permute(1,2,0))
And I get this error
AttributeError: 'Image' object has no attribute 'shape'
mxahan
(Zahid Hasan)
2
You need to send the
dataset = datasets.ImageFolder(root=DATA_PATH, transform=transform)
data_loader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True, drop_last=True, **kwargs)
You can iterate over the dataset to find the instances
image_sample = next.itere(data_loader)
Still getting the same error. If I remove transforms.RandomErasing(p=1) from my transforms it works. But I need to put random erasing each image.
RandomErasing is a transform on a Tensor, not an Image, per the docs.
You should try again with the transforms in this order:
transforms.ToTensor(),
transforms.RandomErasing(p=1),
Hope this helps!
Yes, that works. Thanks a lot.