{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Как с помощью Computer Vision посчитать количество клиентов в офисе​?

Разберем реальный кейс клиентопотока с помощью Computer Vision.

Стояла задача проанализировать и подсчитать поток клиентов в офисе. Для похожих задач существует множество решений, как с использованием сверточных нейронных сетей (Convolution Neural Network, CNN), таких как YOLO (You Only Look Once), SSD (Single Shot Detection), R-CNN и т.д. Но так как входными данными были видео фрагменты различного разрешения и формата, в зависимости от модели регистраторов и выставленных настроек, было принято решение попробовать метод Background Subtraction. Так же хотелось попробовать данный алгоритм, потому что до этого не сталкивался с ним и было интересно на что он способен.

Данный метод основывается на фоне, как видно из названия. Основой является сравнение следующего кадра с предыдущими на наличие изменений. То есть, если фон не менялся или не сильные изменения (колыхание листва, движение облаков и т.д.), то данный метод, не выделит данные области на кадре и видео. Так же существует огромное количество внутренних алгоритмов, на которые основывается Background subtraction, которые по-разному определяют изменения. Некоторые алгоритмы, очень чувствительные к изменениям, то есть: небольшой дождь, несильные изменения крон деревьев из-за ветра - все эти объекты будут заметны на маске алгоритма. Другие алгоритмы строят маски очень грубо, объединяя множество пикселей в одни объекты, то есть два рядом движущихся человека, будут определятся как один человек, поэтому важно подобрать нужный алгоритм для вашей задачи и попробовать различные настройки (количество кадров для сравнения, граница для отсекания областей и т.д.)

Так же существуют различные настройки внутри алгоритма, которые позволяют улучшить качество, и конечная маска выглядит намного лучше, для определения объектов.

После дополнительных настроек и написания дополнительного кода, для выделения изменяемых областей и дальнейшего подсчета клиентопотока, получилось добиться хорошего результата в плане подсчета количества людей, так же это был первый опыт работы с методами библиотеки CV2 python, без использования нейронных сетей.

К сожалению, данный метод имеет свои недостатки, это выделение некоторых артефактов, плюс имеет ограниченный функционал и узкую сферу использования, но как опыт и знакомство с возможностями Computer Vision отличная возможность.

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

0
Комментарии
-3 комментариев
Раскрывать всегда