HOG Person Detector: ложноположительные обнаружения на вычтенных фоновых изображениях
Я работаю над проектом, который требует обнаружения людей на сцене.
Первоначально после запуска детектора HOG на исходных кадрах определенный фоновый объект был обнаружен как человек на всех кадрах, что дало мне 3021 ложное срабатывание.
Поэтому я сделал логичный шаг, чтобы удалить статический фон, применив фоновый вычитатель (BackgroundSubtractorMOG2) ко всем кадрам. Полученные кадры выглядели так:
Затем эти изображения маски были добавлены (используя bitwise_and) к исходному изображению, поэтому белые пиксели заменяются пикселями, составляющими человека.
Образец:
Затем я запустил детектор HOG на этих изображениях, который дал такие результаты:
Как вы можете видеть, есть много ложных срабатываний по некоторым причинам. Я думал, что вычитание фона даст мне лучшие результаты, чем использование HOG на исходных изображениях.
Может кто-нибудь сказать мне, почему в этом методе так много ложных срабатываний? А что можно сделать, чтобы улучшить обнаружение на вычитаемых фоновых изображениях?
1 ответ
Проблема в том, что вы изменили природу своего изображения, удалив фон. Итак, детектор HOG был обучен с нормальными изображениями, без искусственных черных пикселей, и теперь вы кормите его искусственно измененными изображениями, поэтому вполне нормально, что он будет работать странным образом (до сих пор не понимаю, что обнаружение наверху изображение хотя..)
Если вы хотите использовать детектор HOG поверх вычитания фона, вам следует обучить классификатор HOG с помощью функций, взятых из изображений, вычтенных из фона.
Одна вещь, которую вы можете попробовать (если это не снижает производительность вашего приложения), это использовать детектор HOG на обоих изображениях, с фоновым изображением и без него, и принимать только те обнаружения, которые существенно перекрываются на обоих, это может удалить некоторые ложные срабатывания из оба изображения.
PS: HOG был специально разработан для работы с необработанными изображениями, обнаруживая сильные края и проверяя их на модели SVM. Удаляя фон, мы создаем искусственные края, которые как бы побеждают цель использования HOG. Но я думаю, что вы можете использовать его для удаления ложных обнаружений, выполнив то, что я предложил в предыдущем абзаце.