Автоматизация видеосъёмки в прямом эфире (проект)

Материал из Wiki - Факультет компьютерных наук
Версия от 22:17, 19 октября 2017; Dkorolev (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Ментор Королев Денис
Учебный семестр Осень 2017
Учебный курс 2-й курс
Проект можно развивать на летней практике
Максимальное количество студентов, выбравших проект: 5-10



Что это за проект?

По потоку RTSP, получаемому от управляемой (PTZ) IP видеокамеры, нужно определять человека в кадре и посредством команд ONVIF управлять камерой, чтобы человек оставался в кадре. При этом, движения должны быть плавными (но настойчивыми, чтобы не терять цель), а композиция кадра должна быть выдержана по заданным правилам. Требуется обеспечить устойчивость к ситуациям, когда снимаемый человек отвернулся или сел за стол, наклонился, и т.д. При появлении новых людей в кадре следует удерживать фокус на первом. Результатом является а) сервис на виртуальной linux-машине, имеющий REST API для передачи адресов-паролей камер и потоков, а также возвращения контрольного потока со служебными метками, и б) автономно устанавливаемая его версия в виде службы в Windows.

Чему вы научитесь?

Трекинг человека в кадре. Актуальная задача для многих применений. В данном случае "фишка" проекта -- в художественной съёмке. Здесь нет ничего гениального, просто следовать правилам, а правила опираются на знание, как расположена фигура человека в кадре и куда он смотрит или хотя бы повернул голову. Но, чтобы это смотрелось хорошо, нужно правильно управлять перемещением камеры, поэтому: Управление камерой через ONVIF с плавным и одновременным изменением координат. Следует учитывать, что работать придется без опорного изображения, полагаясь только на поток с камеры. То есть, выходящего за кадр актера придётся догонять, "отъезжать" и предпринимать все возможные действия, чтобы не потерять совсем. Желательно, чтобы при этом зрителей не укачало.

Основной challenge проекта -- учесть возможные помехи (человек отвернулся или наклонился, сел за стол -- тогда полагаться на иные, чем только распознанное лицо, характеристики изобржаения, следить за контурами и т.д.), при этом, обеспечить движение, которое можно показывать в прямом эфире, не боясь, что камера будет дергаться или снимать "мимо".

Полезная возможность в контексте решаемой задачи -- автоматически брать заданный план (крупность человека в кадре).

Сервис должен запускаться как на удаленном Linux-сервере, так и иметь локальную версию для Windows (в виде службы), при этом, взаимодействие с сервисом должно обеспечиваться через REST API и через веб-интерфейс. Помимо базовых команд (запуск, остановка автотрекинга, ручной выбор композиции и крупности плана), пользователь должен иметь возможность видеть обнаруженных программой людей (если их в кадре больше одного) и переключать фокус трекера на одного из них.

Какие начальные требования?

В зависимости от роли в проекте:

  • Навыки работы с распознаванием лица и фигуры человека или, хотя бы, желание этому научиться и навыки программирования (С++ или Python - для работы с OpenCV)
  • Программирование UI

Какие будут использоваться технологии?

  • OpenCV
  • Потоковая передача RTSP
  • ONVIF-управление PTZ-камерой
  • REST API для интеграции с клиентами сервиса.

Темы вводных занятий

1. Архитектура проекта. API, внешние связи и зависимости.

2. Специфические технологии и используемые инструменты.

3. Доступные ресурсы, организация доступа.

4. Разделение ролей

Направления развития

Все предлагаемые темы не являются чисто учебными, все они -- из рабочей практики и имеют выход в коммерческие сервисы, дополняя уже имеющийся функционал. Общая практика работы "на развитие" -- преуспевший в разработке некоего проекта студент (если хочет) становится "хостом" проекта и ведет его развитие дальше уже находясь в договорных отношениях с компанией. При этом, тема автосъёмки применима как к автономным съёмочным комплексам, так и в формате сервиса совместно с VPN-подключением.

Оператор телевизионной съёмки в большинстве случаев -- это привод к камере, который должен не терять объект из кадра и держать композицию согласно правилам. Это не относится к киносъёмке и различным творческим задачам, но подавляющее большинство материала на ТВ -- это говорящие головы. А в интернет-трансляциях -- и подавно (конференции, выступления и тд -- это просто видеорегистрация). Как говорили в IBM, "машина должна работать, а человек -- думать". Вам предлагается перевести на автоматику ещё одну профессию, оставив человеку заниматься более творческими задачами.

Критерии оценки

Про работу и оценки почитайте здесь: https://d.pr/143bq

Постарайтесь отнестись к этому с пониманием. Очень часто бодрое начало длится 3-4 недели и потом наступает тишина. Очень хочется, чтобы проекты доводились до запуска, а вы получали опыт успешной разработки и, возможно, работу в этих проектах уже в другом статусе. Но пока это для вас учебная работа, поэтому будем придерживаться описанных по ссылке правил и критериев. Спасибо!

Ориентировочное расписание занятий

Более точное расписание будет ясно после утверждения графика факультативов, пока ориентируемся на вторник, среду или пятницу во второй половине дня (после 15-16 часов).

На самом деле, для общения (как индивидуального, так и группового) удобно использовать средства видеосвязи -- это не заменяет очных встреч, но отлично дополняет их за счет возможности оперативно решать задачи "здесь и сейчас", сидя за удобным вам рабочим местом. Практически все темы проектов подразумевают работу в сети.

Как записаться?

В общем доступе есть порядка двадцати проектов, относящихся к области видеотехнологий (стриминг, доставка потоков и т.д.). Чтобы всем было проще, эти проекты объединим в четыре группы и при записи на проект выбирайте группу, а конкретный проект и вашу роль в нем мы обсудим уже в рабочем порядке.

800px-Projects.PNG