4

Я был бы признателен за помощь в размышлении об этом. У меня есть классификатор, который может с хорошей точностью классифицировать изображения на собаку или кошку. У меня есть хороший набор данных для обучения классификатора. Пока нет проблем.машинное обучение: классификация изображений на 3 класса (собака или кошка или ни одна) с использованием сверточного NN

У меня около 20 000 собак и 20 000 изображений кошек.

Однако, когда я пытаюсь представить другие изображения, такие как автомобиль или здание или тигр, у которого нет ни собаки, ни кошки, я хотел бы, чтобы выход классификатора был «Niether». Сейчас очевидно, что классификатор пытается классифицировать все на собаку или кошку, что неверно.

Вопрос 1:

Как я могу это достичь? Нужно ли иметь 3 набора изображений, которые не содержат собаку или кошку, и обучить классификатор этим дополнительным изображениям, чтобы распознать все остальное как «Ничего»?

На высоком уровне примерно, Сколько изображений категории не для собак/кошек мне нужно, чтобы получить хорошую точность? Было бы около 50 000 изображений, так как домен с не-собакой/кошкой был настолько огромным? или мне нужно еще больше изображений?

Вопрос 2:

Вместо подготовку собственного классификатора, используя свои собственные данные изображения, можно использовать Imagenet обучена модель VGG16 Keras для исходного слоя и добавьте DOG/CAT/Ни классификатор сверху как полностью подключено слой?

See this example to load a pre-traied imagenet model

Спасибо большое за вашу помощь.

+0

Когда вы дойдете до разрешения, не забудьте проголосовать за полезные вещи и принять ваш любимый ответ (даже если вам нужно написать его самостоятельно), поэтому Stack Overflow может правильно архивировать вопрос. – Prune

ответ

1

Вопрос 2

Я возьму "киллеров" эвристика первый. Да, используйте существующую подготовленную модель. Просто конгломератируйте все классификации собак в свой класс 1, кошек в класс 2, а все остальное - в класс 0. Это решит практически все ваши проблемы.

Вопрос 1

Проблема заключается в том, что ваша первоначальная модель была обучена, что все в мире (все 40,000 изображений) либо собака или кошка. Да, вам нужно обучить третий набор, если только ваш метод обучения не является самоограничивающим алгоритмом, таким как SVM с одним классом (выполняется один раз для каждой классификации). Даже тогда я ожидаю, что у вас возникнут проблемы с исключением рыси или волка.

Вы совершенно правы, что вам понадобится много примеров для класса «ни», учитывая высокую размерность входного пространства: это не столько количество изображений, сколько их размещение только «над границей» «от кошки или собаки. Мне будет интересен проект, чтобы определить, как это сделать с минимальным дополнительным вводом.

Короче говоря, не просто захватите 50K изображений из мира ImageNet; выберите те, которые дадут вашей модели лучшую дискриминацию: другие примеры кошачьих и собачьих, другие объекты, которые вы найдете в похожих средах (конечная таблица, полевой грызун и т. д.).

+0

Спасибо. Очень полезно. –

+0

Думая о моей проблеме дальше, Будет ли ответ каким-то другим, Если я могу уменьшить вывод только на 2 класса вместо 3, чтобы классифицировать как Dog & Cat в 1 класс, такие как BEST_ANIMAL, так и все остальное в «Other» bucket? –

+0

Только слегка; вам все равно нужно отличить собаку от других вещей. Я почти уверен, что SVM 1-класса не будет обрабатывать его должным образом, поскольку он сделает один класс, который включает в себя все ваши примеры, и, вероятно, будет включать в себя много других вещей, которые напоминают кошек и собак - таких как Lynx , кошка с более собачьими ушами (если вы неслучайная обучающая программа). – Prune

Смежные вопросы