Хакатон EVRAZ AI Challenge, 29-31 октября 2021 г. Решение команды Mountain fighters.
На основе YOLOv4 (https://github.com/tranleanh/darkeras-yolov4), с предобученными весами https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights. Для работы в jupyter
- Клонировать данный репозиторий
- Разместить датасет в каталоге data_task2 рядом с репозиторием (не копировать в репозиторий)
- Скачать в папку
\EVRAZ-AI-Challenge-Mountain-fighters\darkeras-yolov4\weights
файлyolov4.weights
по ссылке https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights. - Запустить jupyter notebook или jupyter lab в каталоге репозитория.
- Открыть
\EVRAZ-AI-Challenge-Mountain-fighters\darkeras-yolov4\Mountain-fighters team ML RnD.ipynb
Примеры размеченных изображений в каталоге /visualized_recognition
Решение представляет собой cистемy для контроля опасных зон агломашины.
Нейронная сеть на основе YOLOv4 позволяет оценить положение рабочего на площадке со значением целевой функции 0.4.
Прототип веб-приложения позволяет воспроизводить в режиме реального времени кадры с камер, каталогизировать нарушения техники безопасности (при подключении модуля машинного обучения).
Демо решение расположено по адресу [http://178.154.255.145/#/camera](http://178.154.255.145/#/camera (логин admin, пароль 1234, демо-приложение доступно до вечера 2 ноября 2021 г.)
Для запуска локально, см. Развертывание через docker-compose
В интерфейсе присутствует три основных вкладки: Дашборд, Нарушения и Камеры. Во вкладке камеры отображаются изображения с камер в режиме реального времени.
Вкладка Дашборд содержит статистику по камерам, сотрудникам и нарушениям.
Во вкладке Нарушения отображаются нарушения в соответствии с выбранными фильтрами, также здесь можно просматривать фотографии нарушений.
Система предусматривает два режима использования:
- Использование в качестве полноценной системы. В таком случае изображения с камер следует присылать следующим запросом:
Метод: POST
Путь: /rest_api/frame/
Параметры:
- camera_code - код камеры
- dttm - дата и время изображения в формате %Y-%m-%dT%H:%M:%S
- photo - файл с изображением
Система будет анализировать полученные изображения и определять нарушение.
Кадры во вкладке Камеры будут автоматически обновляться
- Использование только в качестве определения нарушения и/или выявления людей в кадре. Для этого предусмотрен следующий запрос:
Метод: POST
Путь: /rest_api/frame/detect/
Параметры:
- photo - файл с изображением
В ответ придет результат анализа.
- Установить docker
- Установить docker-compose
- В папке compose создать файлы .env и .uwsgi.env и заполнить их в соответствии с примерами
- Запустить файл build.sh с правами суперпользователя
sudo ./build.sh
- Настроить внешний nginx, который будет пересылать все запросы на порт приложения
Все команды необходимо выполнять в папке compose
- Остановить все контейнеры
sudo docker-compose stop
- Перезапустить контейнер
sudo docker-compose restart {container_name}
- Запуск manage.py shell
sudo docker-compose exec web python manage.py shell