Hi,
I am applying edge operation on 10% of images on the dataset. Suppose these are 6 classes.
How do I ensure that edge operation is applied to samples from each class?
(each class should have at least 1 images with edge operation applied to it)
Sample code below:
class cannyedge(object):
def __init__(self, threshold1 = 100, threshold2 = 200):
self.threshold1 = threshold1
self.threshold2 = threshold2
def __call__(self, sample):
prob = np.random.random_sample()
if prob < 0.1:
sample = np.array(sample)
edges = cv2.Canny(image=sample, threshold1=self.threshold1, threshold2=self.threshold2)
edge3c = np.zeros_like(sample)
edge3c[:,:,0] = edges
edge3c[:,:,1] = edges
edge3c[:,:,2] = edges
invedge = cv2.bitwise_not(edge3c)
return invedge
else:
return sample
color_jitter = transforms.ColorJitter(0.8, 0.8, 0.8, 0.2)
data_transforms = transforms.Compose([transforms.RandomResizedCrop(size=IMAGE_SIZE),
transforms.RandomHorizontalFlip(),
transforms.RandomApply([color_jitter], p=0.5),
transforms.RandomGrayscale(p=0.5),
transforms.RandomRotation(30),
cannyedge(),
transforms.ToTensor(),
] )