Американские разработчики научили нейросеть заменять фон на видео с более высокой точностью, чем аналоги. Особенность алгоритма заключается в том, что помимо видео он требует один кадр, в котором человек или другой объект съемки покинул поле зрения и таким образом показал фон. Статья будет представлена на конференции CVPR 2020.
Как правило, для съемки роликов с заменой фона используют подсвеченный зеленый экран на заднем плане (экран может быть и другого цвета, однако такое название исторически закрепилось за этой технологией). Благодаря яркой и однородной поверхности экрана его легко отделить от переднего плана. Однако такая схема съемки и монтирования подходит далеко не для всех роликов.
Если же необходимо снимать на улице или в помещении без зеленого экрана, но замена фона все же нужна, например, во время видеозвонка, можно воспользоваться алгоритмами отделения фона. Они определяют область кадра с человеком по форме, цвету, контрасту или другим характеристикам, и накладывают вокруг заданный фон. Для бытовых применений качества таких алгоритмов достаточно, но все же они имеют заметные визуальные артефакты, особенно при работе со специфичными объектами. К примеру, они гораздо хуже справляются с отделением заднего плана на фоне волос.
Исследователи из Вашингтонского университета под руководством Иры Кемельмахер-Шлицерман (Ira Kemelmacher-Shlizerman) предложили новую архитектуру нейросети и метод ее обучения, позволяющий проводить практически идеальную замену фона. Для работы алгоритму нужен видеоролик с человеком или другим объектом и условно неподвижным ракурсом (алгоритм способен работать с роликами, снятыми с рук), а также фотография с того же ракурса до или после того, как человек вышел из кадра.
Помимо текущего кадра ролика алгоритм получает на вход фотографию с фоном и без человека, маску, на которой человек отделен от фона с помощью алгоритма сегментации, а также соседние кадры. Маска с выделенным человеком необходима для того, чтобы по сути указать нейросети на основной объект в кадре, который не нужно вырезать. А соседние кадры помогают улучить точность вырезания благодаря тому, что человек даже в статичном состоянии все равно немного двигается.
В результате нейросеть учитывает разные каналы данных и качественно отделяет человека от фона. На выходе нейросеть выдает два изображения: цветное изображение с вырезанным человеком и маску в альфа-канале, совместив которые вместе с фоновым кадром можно получить практически идентичный исходному кадру.
Для обучения разработчики выбрали двойную схему. Сначала они обучили копию нейросети на датасете Adobe Matting, который состоит из нескольких сотен пар из вырезанного объекта и соответствующей ему альфа-маски. Эти пары исследователи объединили с фоновыми изображениями из датасета MS-COCO.
Обучив копию нейросети на этих искусственных данных, они перешли к обучению основной сети на реальных данных. Они давали обеим нейросетям (копии и основной) настоящие видеоролики и фотографии с фоном. Обученная на искусственных данных нейросеть выступала учителем для основной нейросети, которая стремилась к минимальной разнице между своим результатом и результатом сети-учителя. После получения переднего плана и альфа-маски эти данные совмещались с новым фоном и отдавались нейросети-дискриминатору, задачей которой было определять, что перед ней именно совмещенное изображение, а не настоящая фотография.
В результате разработчики получили нейросеть, которая способна работать с разными фонами и справляться с типичными для таких алгоритмов сложными случаями: несплошными объектами (например, волосы) и совпадением цвета переднего плана с задним. Код для запуска алгоритма опубликован на GitHub.
Нейросетевые алгоритмы для работы с видеороликами уже применяются не только в исследовательских работах, но и в распространенном программном обеспечении. Например, в прошлом году Adobe добавила в видеоредактор After Effects функцию автоматического удаления объектов.