Releases: Koldim2001/TrafficAnalyzer
Prod_v1.0.1
Анализ трафика на круговом движении
Production версия с множеством камер, базой данных временных рядов Influx и дашбордами в Grafana
Данная программа осуществляет анализ входящего трафика на участке кругового движения. Алгоритм определяет загруженность примыкающих дорог и выводит интерактивную статистику.
Установка и запуск:
Необходимо в главной директории создать файл с переменными окружения, которые будут прокинуты в контейнеры Grafana и Influx. Для этого создайте файл .env
и положите подобный текст с паролями и логинами к сервисам:
INFLUXDB_ADMIN_USER=admin
INFLUXDB_ADMIN_PASSWORD=admin
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=admin
KAFKA_USERNAME=traffic
KAFKA_PASSWORD=traffic-secret
Далее запустите проект с помощью этой команды:
docker compose -p traffic_analyzer up -d --build
Для того, чтобы попасть на дашборд надо после запуска компоуза перейти на этой ссылке. Ввести логин admin
и пароль admin
.
У каждой камеры свой дашборд между которыми можно переходит по кнопке:
Обновление v1.0.0 -> v1.0.1 добавило поддержку SASL для кафки. Теперь внешне к кафке можно только по паролю подключиться
Ex:
from kafka import KafkaConsumer
from json import loads
topic = "statistics_1"
bootstrap_servers = "127.0.0.1:9092"
kafka_consumer = KafkaConsumer(
topic,
bootstrap_servers=bootstrap_servers,
group_id="jup",
value_deserializer=lambda x: loads(x.decode("utf-8")),
security_protocol="SASL_PLAINTEXT",
sasl_mechanism="PLAIN",
sasl_plain_username="traffic", # your username
sasl_plain_password="traffic-secret", # your password
)
for message in kafka_consumer:
message = message.value
print(message)
Prod_v1.0.0
Анализ трафика на круговом движении
Production версия с множеством камер, базой данных временных рядов Influx и дашбордами в Grafana
Данная программа осуществляет анализ входящего трафика на участке кругового движения. Алгоритм определяет загруженность примыкающих дорог и выводит интерактивную статистику.
Установка и запуск:
Необходимо в главной директории создать файл с переменными окружения, которые будут прокинуты в контейнеры Grafana и Influx. Для этого создайте файл .env
и положите подобный текст с паролями и логинами к сервисам:
INFLUXDB_ADMIN_USER=admin
INFLUXDB_ADMIN_PASSWORD=admin
GF_SECURITY_ADMIN_USER=admin
GF_SECURITY_ADMIN_PASSWORD=admin
Далее запустите проект с помощью этой команды:
docker compose -p traffic_analyzer up -d --build
Для того, чтобы попасть на дашборд надо после запуска компоуза перейти на этой ссылке. Ввести логин admin
и пароль admin
.
У каждой камеры свой дашборд между которыми можно переходит по кнопке:
TrafficAnalyzer_prod_v3.1.1_multiple_cameras_influx
Версия полностью под докер компоуз на большое количество камер, где используется БД Influx для хранения статистики
Установка:
docker-compose -p traffic_analyzer up -d --build
Работа с программой:
Перед запуском необходимо в файле configs/app_config.yaml указать все желаемые параметры. Далее можно запускать код.
Чтобы запустить проект с определенным видео, необходимо указать путь к нему в докер компоузе переменной окружения
Каждая новая камера добавляется как +1 инстанс бекенда traffic_analyzer_camera_N в котором надо указать лишь разные scr и конфигурации через переменные окружения
В Grafana у каждой камеры свой дашборд между которыми можно переходит по кнопке:
Дополнительные варианты запуска:
main_stream_optimized.py - вариант под риалтайм стрим, обеспечивающий актуальные кадры без буфера (так как в отдельном процессе гонятся кадры а в главном процессе всегда берется в обработку лишь самый последний актуальный)
main_stream_optimized_v2.py - доработанная версия main_stream_optimized.py с ключевой фичей что при падении люого из процессов завершатся сразу оба и кнтроль жизни ведется через process.is_alive()
TrafficAnalyzer_prod_v3.1.0_multiple_cameras_triton
Версия полностью под докер компоуз на большое количество камер где инференс сети производится на с помощью Triton сервера
Установка:
docker-compose -p traffic_analyzer up -d --build
Необходимо в главной директории создать файл с переменными окружения, которые будут прокинуты во все контейнеры. Для этого создайте файл secrets.txt
и положите подобный текст с паролями:
POSTGRES_DB=traffic_analyzer_db
POSTGRES_USER=user
POSTGRES_PASSWORD=pwd
GF_SECURITY_ADMIN_USER=admin
GF_SECURITY_ADMIN_PASSWORD=admin
Работа с программой:
Перед запуском необходимо в файле configs/app_config.yaml указать все желаемые параметры. Далее можно запускать код.
Чтобы запустить проект с определенным видео, необходимо указать путь к нему в докер компоузе переменной окружения
Каждая новая камера добавляется как +1 инстанс бекенда traffic_analyzer_camera_N в котором надо указать лишь разные scr и конфигурации через переменные окружения
Каждый новый контейнер не требует наличия gpu. Весь инференс на видеокарте осуществляется отдельным сервисом-контейнером triton. В нем крутится модель yolo в onnx формате и по gRPC можно слать на данный сервис запросы в виде изображений и получать ответ сети. Благодаря этому можно проще масштабировать решение на огромное количество камер.
В Grafana у каждой камеры свой дашборд между которыми можно переходит по кнопке:
TrafficAnalyzer_prod_v3.0.1_multiple_cameras
Версия полностью под докер компоуз на большое количество камер
Установка:
docker-compose -p traffic_analyzer up -d --build
Необходимо в главной директории создать файл с переменными окружения, которые будут прокинуты во все контейнеры. Для этого создайте файл secrets.txt
и положите подобный текст с паролями:
POSTGRES_DB=traffic_analyzer_db
POSTGRES_USER=user
POSTGRES_PASSWORD=pwd
GF_SECURITY_ADMIN_USER=admin
GF_SECURITY_ADMIN_PASSWORD=admin
Каждая новая камера добавляется как +1 инстанс бекенда traffic_analyzer_camera_N в котором надо указать лишь разные scr и конфигурации через переменные окружения
У каждой камеры свой дашборд между которыми можно переходит по кнопке:
Анализ трафика на круговом движении
Доработанная версия кода из видео с Ютуба - https://www.youtube.com/watch?v=u9EtqHz4Vqc
Все сервисы запускаются в докере кроме главного бэкенда который надо запустить через локальное окружение на компе. Чтоб работало на винде стоит поставить Visual C++ Build tools. Тогда все библиотеки встанут без проблем.
Данная программа осуществляет анализ входящего трафика на участке кругового движения. Алгоритм определяет загруженность примыкающих дорог и выводит интерактивную статистику.
PS: Итоговая версия к релизу с возможностью вести логирование в постграс + визуализировать результаты на дашборде графана + выводить в веб-интерфейс результаты обработки кадров (риалтайм стриминг с помощью Flask)
Пример того, как можно запустить проект и иметь возможность одновременно смотреть стрим по порту 8100 и наблюдать интерактивный дашборд в Grafana по порту 3111:
TrafficAnalyzer_prod_v2.2.0
Версия полностью под докер компоуз
Установка:
docker-compose -p traffic_analyzer up -d --build
Данная программа осуществляет анализ входящего трафика на участке кругового движения. Алгоритм определяет загруженность примыкающих дорог и выводит интерактивную статистику.
Теперь можно передавать все данные прямо через переменные окружения в конфиг hydra + все секреты хранить в файле secrets.txt. Вынес grafana.db чтобы автоматом поднимался готовый дашборд + прокинул в него сразу видео стрим. Код написан под одну камеру но готов к расширению сразу на много (стоит добавить новые инстасы докера с новыми переменными окружения)
TrafficAnalyzer_prod_v2.1.1
Версия полностью под докер компоуз
Установка:
docker-compose -p traffic_analyzer up -d --build
Данная программа осуществляет анализ входящего трафика на участке кругового движения. Алгоритм определяет загруженность примыкающих дорог и выводит интерактивную статистику.
PS: Итоговая версия к релизу с возможностью вести логирование в постграс + визуализировать результаты на дашборде графана + выводить в веб-интерфейс результаты обработки кадров (риалтайм стриминг с помощью Flask)
Пример того, как можно запустить проект и иметь возможность одновременно смотреть стрим по порту 8100 и наблюдать интерактивный дашборд в Grafana по порту 3111:
Анализ трафика на круговом движении
Данная программа осуществляет анализ входящего трафика на участке кругового движения. Алгоритм определяет загруженность примыкающих дорог и выводит интерактивную статистику.
PS: Итоговая версия к релизу с возможностью вести логирование в постграс + визуализировать результаты на дашборде графана + выводить в веб-интерфейс результаты обработки кадров (риалтайм стриминг с помощью Flask)
Пример того, как можно запустить проект и иметь возможность одновременно смотреть стрим по порту 8100 и наблюдать интерактивный дашборд в Grafana по порту 3111:
Анализ трафика на круговом движении
Данная программа осуществляет анализ входящего трафика на участке кругового движения. Алгоритм определяет загруженность примыкающих дорог и выводит интерактивную статистику.
PS: Итоговая версия к релизу с возможностью вести логирование в постграс + визуализировать результаты на дашборде графана
По данной версии кода есть туториал на ютубе:
Подробный туториал по проекту - ссылка на видео