Во-первых, примечание относительно метода классификации для использования. Если вы намерены использовать пиксели изображения как функции, нейронная сеть может быть подходящим методом классификации. В этом случае я думаю, что лучше было бы обучить одну и ту же сеть различать различные объекты, а не использовать отдельную сеть для каждого, поскольку это позволит сети сосредоточиться на самых дискриминационных функциях.
Однако, если вы намерены извлекать синтетические объекты из изображения и основывать на них классификацию, я бы предложил рассмотреть другие методы классификации, например. SVM. Причина в том, что нейронные сети обычно имеют множество параметров для настройки (например, размер сети и архитектура), что делает процесс построения классификатора более продолжительным и сложным.
В частности, в отношении вопросов, связанных с NN, я бы предложил использовать прямую сеть, которую относительно легко построить и обучить, с уровнем вывода softmax, который позволяет назначать вероятности различным классам. Если вы используете единую сеть для классификации, вопрос об отрицательных примерах не имеет значения; для каждого класса другие классы были бы его негативными примерами. Если вы решите использовать разные сети, вы можете использовать те же самые встречные примеры (например, другие классы), но, как правило, я предлагаю показывать не более 2-10 отрицательных примеров на один положительный пример.
EDIT: Основываясь на комментариях ниже, кажется, проблема заключается в том, чтобы решить, как подгонка данного изображения (рисунка) к данному понятию, например. как похожим на дерево является пользовательский рисунок дерева.
В этом случае я бы предложил радикально другой подход: извлечь визуальные функции из каждого чертежа и выполнить классификацию knn на основе всех прошлых пользовательских чертежей и их классификаций (возможно, плюс предопределенный набор, созданный вами). Вы можете оценить сходство либо по номинальному расстоянию до примеров одного класса, либо по распределению классов ближайших совпадений.
Я знаю, что это не обязательно то, что вы просите, но это кажется мне более простым и более прямым, особенно учитывая тот факт, что количество примеров и классов будет постоянно расти.
Существует много методов машинного обучения для выполнения описанной задачи, но вы специально ссылаетесь на нейронные сети - это намеренно? – etov
@etov Это те, с которыми я больше всего знаком. Я хочу узнать о других, если они более подходят для этой задачи. –