#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:
-
Первый метод — каскады HAAR в виде объектов AdaBoost в качестве классификатора. Быстрее, но хуже всего — LBP вместо HAAR.
-
HOG линейный SVM. И многое другое: CoHOG, DPM,…
-
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.