Разработчики из Google Research обучили алгоритм созданию карты глубины для видео, в котором двигаются и люди, и камера. Это может помочь в создании приложений для смартфонов, способных, к примеру, менять глубину резкости на роликах, рассказывают авторы в блоге Google AI. Доклад об алгоритме будет представлен на конференции CVPR 2019.
Карта глубины представляет собой изображение, в котором пиксели отражают не цвет и яркость, а расстояние до объекта. Карты глубины используются как в исследовательских проектах, к примеру, для создания 3D-моделей из 2D-набросков, так и в потребительских приложениях. Например, именно благодаря этому работает функция изменения глубины резкости на фотографиях и создания искусственного размытия за объектом в современных смартфонах. Однако подобные алгоритмы работают либо со статичным изображением, либо с роликами, на которых подвижная камера перемещается относительно статичных объектов, а двигающиеся объекты обычно фильтруются подобными алгоритмами.
Исследователи из Google Research под руководством Вильяма Фримена (William Freeman) создали алгоритм, справляющийся с более сложной задачей — созданием карты глубины для роликов, на которых двигаются как камера, так и объекты. Поскольку исследователи сконцентрировались на конкретной задаче с двигающимися людьми, а не любыми объектами, они столкнулись с проблемой создания большого и подходящего датасета. В качестве данных для обучения они использовали ролики людей, участвовавших во флешмобе Mannequin Challenge, ставшим популярным в 2016 году. Во время флешмоба люди в кадре замирали в естественных положениях, а оператор ходил между ними.
Разработчики использовали около двух тысяч роликов с YouTube в качестве предварительных данных для создания датасета. Их они обработали классическими методами создания карт глубины, применяемыми для роликов со статичными объектами, такими как метод воссоздания структуры из движения (SfM) и метод мультиракурсного стерео (MVS). Во время обучения алгоритм получал рассчитанные карты глубины для карт в качестве эталонных примеров, на которые он ориентируется.
Для того, чтобы алгоритм мог работать с динамическими сценами, исследователи применили следующую схему. При обработке каждого кадра видео алгоритм берет соседний кадр, рассчитывает на основе этих двух изображений оптический поток, отражающий движение объектов в кадре, и на основе него создает первичную карту глубины. Кроме того, отдельная нейросеть для семантической сегментации выделяет на кадре области с людьми. В результате основная нейросеть получает для обработки набор из цветного кадра, маски с вырезанными людьми и карту глубины с наложенной маской. На их основе она создает полноценную карту глубины с улучшенными данными для статичных объектов, таких как стены в помещении, и «вписанными» данными в областях с людьми.
Исследователи продемонстрировали множество результатов работы алгоритма, а также показали примеры его применения. В качестве одного из таких примеров они научили алгоритм брать кадр из видео и создавать анимацию с новыми ракурсами, на которой камера «двигается» посреди застывших людей.
В прошлом году разработчики из Facebook использовали функцию создания карты глубины в современных смартфонах для быстрого создания 3D-панорам. Просматривая такую панораму, пользователь может перемещать смартфон и видеть, как объекты в кадре реалистично перемещаются вместе с ним.
Григорий Копиев