Классовый дисбаланс для классификации изображений - PullRequest
0 голосов
/ 21 июня 2020

Я работаю над классификацией изображений с несколькими ярлыками, когда на некоторых ярлыках очень мало изображений. Как поступать в таких случаях?

Ответы [ 3 ]

1 голос
/ 21 июня 2020

Сделайте увеличение изображения для вашего набора данных. Увеличение изображения означает добавление вариаций (шум, изменение размера и т. Д. c) к тренировочному изображению таким образом, чтобы классифицируемый вами объект можно было увидеть невооруженным глазом.

Некоторые коды для увеличения изображения:

добавление шума

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

Обрезка

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

Сдвиг

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

Переворачивание

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

Теперь вам просто нужно поместить это в свой генератор данных, и ваша проблема дисбаланса классов будет решена

1 голос
/ 21 июня 2020

Увеличение данных, что означает создание «клонов» (обратное изображение / установка другого угла / et c.)

0 голосов
/ 27 августа 2020

Хотя вы можете увеличивать свои данные, как это предлагается в ответах, вы можете использовать разные веса, чтобы сбалансировать потерю нескольких меток. Если n_ c - количество образцов в классе c, тогда вы можете взвесить свое значение потери для класса c:

l_c' = (1/n_c) * l_c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...