Методы обнаружения и отслеживания объектов в реальном времени без использования нейронной сети

#python #opencv #machine-learning #object-detection

#python #opencv #машинное обучение #обнаружение объектов

Вопрос:

Для дипломной работы бакалавра мне нужно подсчитать людей, использующих видеокамеру, и это как можно более правильно. Для решения этой проблемы я использую Python вместе с OpenCV. Я знаю, что нейронные сети, такие как CNN, являются лучшим решением для попытки сделать это. Теперь проблема здесь в том, что для моей диссертации я не должен использовать нейронные сети.

Я довольно часто изучал эту тему, но я продолжаю находить обнаружение объектов и отслеживание с помощью нейросетевых моделей в Tensorflow и Keras (Yolo, Mobilenet). Единственными методами «старой школы», которые я нашел, являются: вычитание фона со средней шириной и высотой человека и метод, использующий HOG с SVM. Есть ли какие-либо другие алгоритмы, которые я могу использовать? (например, knn или случайный лес вместо SVM)

Еще один вопрос, который у меня все еще есть, и я тоже не могу найти реального ответа, заключается в том, как использовать это в видео вместо изображения. Вы разбиваете видео кадр за кадром, а затем обнаруживаете человека? Или есть другой подход для этого, который я еще не нашел? Я чувствую, что распознавание и обнаружение объектов для каждого кадра будет довольно интенсивным для машины, на которой он запущен.

Будет ли также возможно обнаружить несколько человек в одном кадре?

Я действительно надеюсь, что кто-нибудь сможет помочь мне с этим вопросом, поскольку я уже довольно давно застрял на этой части своей диссертации. Я хочу снова добиться некоторого прогресса! Заранее большое спасибо!

Комментарии:

1. Существует много литературы по оценке плотности толпы времен, предшествовавших CNN — попробуйте поискать «опрос по оценке плотности толпы» в Google Scholar для отправной точки. В статьях, опубликованных ранее 2010 года, вероятно, не используются нейронные сети. Я просмотрел несколько опросов, и похоже, что существует множество различных подходов, например, с использованием анализа текстур, но я бы предположил, что ни один из них не может превзойти современную сеть, такую как Faster-RCNN или Yolo

Ответ №1:

  1. Первый метод — каскады HAAR в виде объектов AdaBoost в качестве классификатора. Быстрее, но хуже всего — LBP вместо HAAR.

  2. HOG линейный SVM. И многое другое: CoHOG, DPM,…

  3. ICF (встроенные функции канала) лес.

Это все самое важное.

Правка 1: И вы можете использовать дополнительные функции (цвета, особенности симметрии) и технику сокращения: PCA, PLS и т.д. Например, линейный SVM очень быстр, но не устойчив к шуму. Некоторые исследователи использовали уменьшение размера вектора объектов и получили лучшие результаты. Хорошая статья «Обнаружение транспортного средства с использованием частичных наименьших квадратов»: https://anikem.github.io/papers/Kembhavi_VehicleDetection_PAMI2011.pdf Но DNNs показали гораздо лучшие результаты.

Комментарии:

1. Я посмотрю на них! Большое спасибо

2. Извините, что снова беспокою вас, но я узнал об этих алгоритмах. Единственное, чего я не могу найти, это зачем использовать эти «комбинации». Почему бы не использовать HOG для извлечения объектов с лесом в качестве классификатора? Почему это всегда связано с классификатором опорных векторов? почему бы не HAAR SVM. Чего я не вижу?

3. Это эволюция. Остаются только самые стабильные комбинации. HAAR с интегральным изображением или LBP AdaBoost работает очень быстро, это была революция в компьютерном зрении: распознавание улыбок, лиц, глаз в фотокамерах. HOG linear SVM был очень надежен для объектов со структурой: лица (в библиотеке dlib), пешеходы, номерные знаки и т.д. CoHOG использовался в Toshiba для автомобильного зрения. ICF был очень хорош для GPU до расширения DNN.