February 21, 2021

Python BackEnd. Тестовое задание

Задание: необходимо разработать приложение, которое должно проводить распознавание образов на кадрах видеофайла с использованием нейронной сети, распознанные кадры сохранять в виде изображения и отдавать их через Nginx по ссылке. При этом в ходе распознавания должна делаться запись о результатах распознавания по каждому кадру в БД

Решаемые задачи:

  • видео должно разбиваться на кадры, которые обрабатываются последовательно
  • распознавание объектов на каждом кадре видео с помощью любой нейронной сети (распознавать можно любые объекты - людей, технику, предметы и т.д., нейронная сеть не является ключевой задачей, можно применить любую архитектуру)
  • информация о распознавании должна заноситься в БД PostgreSQL
  • кадры с распознаванием должны раздаваться в веб посредством Nginx
  • деплой Nginx и PostgreSQL необходимо реализовать с помощью docker-compose

Примечания

  • Не имеет принципиального значения каким образом будет выполнено распознавание объектов и какая модель нейронной сети применяется, например, можно использовать YOLO
  • расширение входного видео файла не имеет значение, например, mp4
  • пример кадра с распознаванием:
пример кадра из видео с нанесенными баундинг боксами объектов, который должен быть сохранен в изображение
  • формат таблицы в PostgreSQL:

Примерный пайплайн решения

исходное видео -> разбор на кадры -> кадр обрабатывается нейросетью -> распознанные объекты отображаются на кадре с помощью баундинг боксов -> кадр с б-боксами сохраняется в изображение в директорию проекта -> по каждому кадру делается запись в БД PostgreSQL -> сохраненные изображения доступны через веб-браузер -> postgresql и nginx разворачиваются на машине с помощью docker-compose

Будет плюсом

  • использовать параллельную обработку кадров или нескольких видео
  • настроить работу детектора (нейронной сети) с использованием GPU

Пример стека