February 21, 2021
Python BackEnd. Тестовое задание
Задание: необходимо разработать приложение, которое должно проводить распознавание образов на кадрах видеофайла с использованием нейронной сети, распознанные кадры сохранять в виде изображения и отдавать их через Nginx по ссылке. При этом в ходе распознавания должна делаться запись о результатах распознавания по каждому кадру в БД
Решаемые задачи:
- видео должно разбиваться на кадры, которые обрабатываются последовательно
- распознавание объектов на каждом кадре видео с помощью любой нейронной сети (распознавать можно любые объекты - людей, технику, предметы и т.д., нейронная сеть не является ключевой задачей, можно применить любую архитектуру)
- информация о распознавании должна заноситься в БД PostgreSQL
- кадры с распознаванием должны раздаваться в веб посредством Nginx
- деплой Nginx и PostgreSQL необходимо реализовать с помощью docker-compose
Примечания
- Не имеет принципиального значения каким образом будет выполнено распознавание объектов и какая модель нейронной сети применяется, например, можно использовать YOLO
- расширение входного видео файла не имеет значение, например, mp4
- пример кадра с распознаванием:
- формат таблицы в PostgreSQL:
Примерный пайплайн решения
исходное видео -> разбор на кадры -> кадр обрабатывается нейросетью -> распознанные объекты отображаются на кадре с помощью баундинг боксов -> кадр с б-боксами сохраняется в изображение в директорию проекта -> по каждому кадру делается запись в БД PostgreSQL -> сохраненные изображения доступны через веб-браузер -> postgresql и nginx разворачиваются на машине с помощью docker-compose
Будет плюсом
- использовать параллельную обработку кадров или нескольких видео
- настроить работу детектора (нейронной сети) с использованием GPU