0

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

James Z
  • 12,209
  • 10
  • 24
  • 44
Nandan Pandey
  • 148
  • 1
  • 11

3 Answers3

1

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

Kohelet
  • 394
  • 1
  • 6
1

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

Sohaib Anwaar
  • 1,517
  • 1
  • 12
  • 29
0

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
guibs35
  • 237
  • 2
  • 11