Nandan Pandey
Nandan Pandey

Reputation: 158

Class Imbalance for image classification

I am working on multi-label image classification where some labels have very few images. How to handle these cases?

Upvotes: 1

Views: 314

Answers (3)

guibs35
guibs35

Reputation: 297

While you can augment your data as suggested in the answers, you can use different weights to balance your multi-label loss. If n_c is the number of samples in class c then you can weight your loss value for class c:

l_c' = (1/n_c) * l_c

Upvotes: 0

Sohaib Anwaar
Sohaib Anwaar

Reputation: 1547

Do Image Augmentation for your data-set. Image augmentation means add variation (noise, resize etc) to your training image in a way that your object you are classifying can be seen through naked eye.

Some code for Image augmentation are.

adding Noise

gaussian_noise=iaa.AdditiveGaussianNoise(10,20)
noise_image=gaussian_noise.augment_image(image)
ia.imshow(noise_image)

Cropping

crop = iaa.Crop(percent=(0, 0.3)) # crop image
corp_image=crop.augment_image(image)
ia.imshow(corp_image)

Sheering

shear = iaa.Affine(shear=(0,40))
shear_image=shear.augment_image(image)
ia.imshow(shear_image)

Flipping

#flipping image horizontally
flip_hr=iaa.Fliplr(p=1.0)
flip_hr_image= flip_hr.augment_image(image)
ia.imshow(flip_hr_image)

Now you just need to put that into your data generator and your problem for class imbalance will be solved

Upvotes: 1

Kohelet
Kohelet

Reputation: 404

Data augmentation, which means making 'clones' (reverse image/ set different angle/ etc.)

Upvotes: 1

Related Questions