Система распознавания и подсчета количества объектов
Введение
Системы компьютерного зрения все шире используются для решения повседневных задач в самых различных сферах, начиная от промышленности, заканчивая медициной. Алгоритмы распознавания образов позволяют идентифицировать объекты, определять их тип, предоставляют необходимую качественную и количественную информацию. Целью данного проекта было создание системы подсчета количества объектов (людей, машин), используя технологии компьютерного зрения.
Установка
Для начала нужно установить все необходимые библиотеки:
pip install opencv-contrib-python imutils matplotlib dlib
Библиотека dlib устанавливается достаточно долго, так что не стоит пугаться того, что процесс зависает.
Затем скачать программу из репозитория:
git clone https://github.com/mmkuznecov/objects_counting_from_clever.git
Примеры работы
Система может быть адаптирована для разных условий, съёмка может производиться как из статичного положения:
Так и в динамическом полёте:
Использование
Подключитесь к Клеверу и проверьте, передается ли изображение с камеры. Для использования скрипта просто перейдите в папку, куда был скачан скрипт и пропишите в консоли, где op - название выходного видео:
python count.py -o op.avi
По умолчанию программа будет считать количество людей. Для того чтобы прописать распознавание только определенного объекта, нужно приписать в конце тип объекта для распознавания, например, следующая команда позволит распознавать машины:
python count.py -o op.avi -t car
Полный список распознаваемых объектов приведен ниже:
background, aeroplane, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, diningtable, dog, horse, motorbike, person, pottedplant, sheep, sofa, train, tvmonitor
Итогом работы программы будет записанное видео с метками, отмечающими распознавание объектов и их номер, а также .png изображение, на котором показана информация о времени записи видео, количестве распознанных объектов в разное время.
По вопросам пишите в Telegram @mmkuznecov.
Версия с HD-Link
Если имеется настроенная система HD-Link для передачи видео в хорошем качестве на большие расстояния, можно использовать следующие скрипты для обработки поступающего видео.
Для установки и настройки оборудования можно обратиться к документации. Там можно найти подробную информацию о настройке конфигурации, а также ссылку для скачивания образа для Raspberry Pi. Подключиться к GroundPi можно либо по Ethernet, либо по Wi-Fi, предварительно настроив в образе соответствующие параметры подключения. Во втором случае, после подключения к питанию GroundPi, должна появиться сеть Open.HD. Пароль для подключения к ней wifiopenhd
Для поштучного подсчета
Для запуска этой версии необходимо скачать программу из репозитория:
git clone https://github.com/mmkuznecov/HD_Link_counting.git
На пк должен быть установлен Python. Для установки всех необходимых модулей, нужно перейти в папку, куда была скачана программа и, чтобы установить все необходимые модули, прописать в консоли:
pip install -r requirements.txt
Перед тем, как запускать программу, надо убедиться, что ПК связан с GroundPi по Ethernet или Wi-Fi.
Если работать из под операционной системы Windows, чтобы запустить работу программы, достаточно дважды кликнуть по файлу run.bat.
На обработанных кадрах отображается количество распознанных с начала работы объектов (Total), а также количество объектов в конкретном кадре (Objs on frame).
Пример работы:
На изображении есть еще один параметр - Status, но он был убран.
Для обработки больших групп людей
Скачиваем программу из репозитория:
git clone https://github.com/mmkuznecov/HD_Link_crowd.git
Аналогичным образом устанавливаем все необходимые модули через requirements.txt, проверяем подключение, запускаем программу. Также надо будет скачать модель и поместить ее в папку.
Через определенные промежутки времени, программа сохраняет снимки, полученные с камеры, при этом обрабатывет их и выводит данные о количестве людей.
Пример работы:
Оригинал изображения:
Тепловая карта плотности скопления людей:
В итоге получается примерно 1562 человека: