2

Я использую структуру Caffe для обучения CNN. Моя цель - выполнить простое распознавание объектов для нескольких базовых категорий объектов. Поскольку предварительно подготовленные сети не являются альтернативой для моего предлагаемого использования, я подготовил собственный учебно-испытательный набор с примерно 1000 изображениями для каждого из 2-х классов (например, стулья и автомобили).Отрицательные примеры учебных образов для CNN

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

1) Добавление третьего класса, а также около 1000 отрицательных примеров, показывающих любые объекты, кроме стула и автомобиля.

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

Поскольку для захвата случайных изображений в качестве негативных примеров из Интернета было не так много времени, я уже проверил свое первое решение с примерно 1200 отрицательными примерами. Это помогло, но проблема остается, возможно, потому, что ее было слишком мало? Я обеспокоен тем, что, если я увеличиваю число отрицательных примеров, дисбаланс числа примеров для каждого класса приводит к менее точному обнаружению исходных классов. После некоторых исследований я нашел один человек с подобной проблемой, но не было никакого решения: Convolutional Neural Networks with Caffe and NEGATIVE IMAGES

Мой вопрос: Кто-нибудь имел такую ​​же проблему и знает, как с этим бороться? Каким образом вы порекомендовали бы, добавив больше отрицательных примеров или более категорий объектов, или у вас есть какая-либо другая рекомендация?

ответ

2

Проблема не уникальна для Caffe или ConvNets. Любой метод машинного обучения использует этот риск. В конце концов, все классификаторы принимают вектор в некотором пространстве ввода (обычно очень высокомерном), что означает, что они разделяют это пространство ввода. Вы приводили примеры двух разделов, которые помогают оценить границу между ними, но только эту границу. Оба раздела имеют очень, очень большие границы, именно потому, что входное пространство настолько высокое.

ConvNets пытаются попытаться добиться высокого размера данных изображения, имея достаточно маленькие ядра свертки. Реалистичные негативные данные помогают в обучении тех, и ярлык не имеет особого значения. Вы даже можете использовать входное изображение в качестве цели (т. Е. Тренировать его как автокодер) при обучении ядер свертки.

Одна общая причина, почему вы не хотите комментировать все контрпримеры, потому что они могут быть слишком разнообразными. Если у вас есть класс A с некоторым значением функции из диапазона [-1, + 1] в некотором масштабе, с контрпримерами B [-2, -1] и C [+ 1, + 2], комбинируя B и C вместе создает диапазон [-2, + 2] для контрпримеров, которые перекрывают реальный реальный диапазон. Учитывая достаточное количество данных и достаточно мощные классификаторы, это не фатально, но, например, SVM может плохо с этим справиться.