Классифицировать визуально различные объекты как один класс - PullRequest
0 голосов
/ 03 мая 2018

Мы строим нейронную сеть для классификации объектов и имеем большой набор данных изображений для 1000 классов. Один из классов «банан» и содержит 1000 изображений банана. Некоторые из этих изображений (около 10%) состоят из пюре из бананов, которые визуально очень отличаются от остальных изображений в этом классе.

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

Я пытаюсь понять, как присутствие визуально различимого подкласса влияет на распознавание данного класса.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Проблема здесь проста. Вам нужна ваша нейронная сеть для изучения обеих групп изображений. Это означает, что вам необходимо распространять информацию об ошибках. Если у вас есть правдивая информация о банановом пюре, обратное размножение, безусловно, полезно. Это помогает первым слоям изучать два набора функций.

Обратите внимание, что хорошая особенность нейронных сетей заключается в том, что вы можете распространять обратно любой вектор ошибок. Если ваш вывод имеет 3 узла banana, non-mashed banana, mashed banana, вы в основном обходите бинарный выбор, подразумеваемый в вашем вопросе. Вы всегда можете отбросить выходные узлы во время вывода.

0 голосов
/ 03 мая 2018

Здесь нет стандартного ответа; вашей сети может быть очень сложно обобщать классы, если их подклассы различаются в пространстве признаков, и в этом случае идеальным решением было бы введение нескольких фиктивных классов, которые вы объединяете в один с помощью постобработки. Вы также можете предварительно подготовить модель с различными классами (чтобы построить представления, которые различают их), а затем вытолкнуть конечный сетевой уровень (классификатор) и заменить его свернутым классификатором, который будет соответствовать начальным меткам. Это позволило бы иметь различающие представления, которые просто классифицируются как правило. В любом случае я бы посоветовал вам создавать специфичные для подкласса метки и проверять ошибки для каждого подкласса во время обучения с оригинальными классами; таким образом, вы сможете количественно оценить полученную ошибку прогнозирования и избежать чрезмерного проектирования вашей сети в случае, если она сможет самостоятельно изучить задачу без более строгого контроля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...