Вы слышали о пересъемках фильмов? Во время монтажа фильмов/телепередач часто случаются ситуации, когда кадры либо не на своем месте, либо оборудование попадает в кадр, либо происходит что-то подобное — вплоть до того, что всю сцену приходится снимать во второй раз. Вот куда уходят миллионы.

Представьте себе, что вы можете сделать эти исправления с длинными кадрами, содержащими много шума и окклюзии! В 2020 году лаборатория VGG в Оксфордском университете сделала именно это со своей статьей Многоуровневый нейронный рендеринг для повторной синхронизации людей в видео, и это совершенно невероятно.

Давайте посмотрим на техническое определение восстановления времени:

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

С точки зрения обычных людей, мы в основном хотим настроить (или даже удалить!) тайминги между критическими компонентами в данном видео.

В общих чертах, в этой статье это достигается путем разложения видеопотока на слои. Этот слой содержит не только фактическое лицо, но и каузальные компоненты видеопотока — практически все, с чем взаимодействует пользователь. Их статья в процессе повторной синхронизации видео использует и расширяет исследования в широком наборе областей, включая:

  1. Управление человеческими позами в видео
  2. Матирование изображений и видео
  3. Представление слоя видео
  4. Нейронный рендеринг
  5. Отслеживание камеры
  6. Апсемплинг результата

Вот классная демонстрация невероятных результатов, полученных от этой архитектуры:

Итак, как это работает?

Давайте сначала кратко опишем стандартную конвейерную обработку целевого видео от начала до конца. Во-первых, входное видео разбивается на слои в зависимости от их конфигурации RGBA. Затем они обновляются, чтобы ассоциироваться с отдельными лицами. UV-карты всего тела строятся с использованием методов оценки позы относительно закрытых и незакрытых частей людей на видео. После того, как каждый человек явно смоделирован, система самостоятельно определяет любые особенности, на которые влияют указанные субъекты в видео. Например, тень человека следует за ним, когда он перемещается по экрану. Если тень не синхронизирована, а человек, выходное видео искажается и, следовательно, непригодно для использования. Примечательно, что сопоставление признаков является выученным представлением и не требует внешней модификации, кроме начального обучения. Эти изученные функции являются текстурными картами.

Эти текстурные карты с выбранным фоном теперь передаются нейронному рендереру. Нейронный рендерер является координационным центром системы. Используя карты текстур, средство визуализации изучает коррелированные особенности сцены, возвращая представления слоев для каждого объекта, который будет повторно синхронизирован в видео.

Карты RGBA теперь сочетаются с обычным наложением задним планом, где окончательный результат получается путем последовательного наложения слоев друг на друга. Теперь у нас есть выходное видео, разложенное по корреляции. Затем мы можем передать это в стандартное приложение для редактирования видео, чтобы настроить время слоя, чтобы выровнять или исправить видео! Технический термин для этого — «магия».

Теперь, когда у нас есть хороший обзор конвейера с одним запуском, давайте обратимся к отдельным факторам, которые способствовали развитию целевой системы.

Интересно отметить, что эта система явно не синтезирует новые позы.

Следующие подзаголовки представлены в порядке использования и объясняют как сложность проблемы, так и интуицию, лежащую в основе решения.

Матирование изображений и видео

Первая цель — разработать входные данные для нейронного рендерера. Это включает в себя разделение видео на слои для каждого человека. В этой статье предлагается разделить их путем построения UV-карты изображения. Однако стандартные методы для этого не создают карты всего тела в кадрах, где целевой человек частично или полностью закрыт другими людьми или объектами. Это было исправлено путем изменения предварительно обученной структуры для создания UV всего тела, приближения характеристик тела к методам оценки ключевых точек; они не требовали каких-либо дополнительных модификаций. Обратите внимание, что на этом этапе наши слои отображают только человека, а не его связанные функции, такие как тени или отражения. Эти UV-карты затем передискретизируются для создания глубоких текстурных карт, которые служат входными данными для нейронного рендерера.

Нейронный рендеринг

Нейронный слой принимает предоставленные карты людей и статический фон. Задача нейронного визуализатора состоит в том, чтобы присоединить к соответствующим слоям оставшиеся коррелированные элементы, как описано ранее. Затем перед ним ставится задача воссоздать полное видео из подготовленных полнофункциональных слоев с нуля, сходимость функций потерь оценивает оптимальную производительность. Каждый слой вычисляется в отдельном прямом проходе и не взаимосвязан. Мы подробнее остановимся на функции потерь при описании режима обучения системы.

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

Отслеживание камеры

До сих пор мы называли фоновый слой статичным изображением. Однако это не относится к большинству отснятых материалов в практических реальных сценариях — ниже описывается предлагаемое решение для обеспечения оптимального вывода даже в таких случаях.

Незначительная стабилизация

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

Заметное панорамирование

В случае преднамеренного панорамирования камеры описанный выше метод не работает. Вместо этого движение камеры оценивается от кадра к кадру и присваивается точкам данных в системе координат (x, y, z). Затем эта система координат используется при построении UV-карт, и исходное движение камеры сохраняется.

Композитинг результата

Результат скомпонован задом наперед. Вы можете интерпретировать это как стопку бумаги: сначала вы помещаете фон, затем человека, самого дальнего от камеры, и так далее и тому подобное, поднимаясь по слоям, пока не будет получено полное изображение.

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

Авторы этого исследования также создали интерактивный инструмент, который позволяет настраивать повторную синхронизацию отслеживаемых объектов, а также удалять людей из определенных кадров, удаляя целевые отдельные слои. Слои также можно заморозить на определенное время с помощью указанного интерактивного инструмента.

Один из моих любимых компонентов этого исследования — то, как они разработали свою функцию потерь.

Потери при обучении делятся на три подфункции, а именно: реконструкция, маска и ошибки регуляризации. Их комбинация, как описано в приведенном ниже уравнении, обеспечивает окончательную потерю ошибки.

Поскольку в дальнейшем применяется нелинейная оптимизация, примененные веса отрицательно влияют на полученные результаты. Мы подробно остановимся на их использовании и влиянии на отдельные функции потерь, как описано ниже:

Потеря реконструкции

Поскольку основной задачей средства визуализации является успешное обратное проектирование целевого изображения из источника, крайне важно свести это к минимуму.

Потеря регуляризации

Методы регуляризации используются, чтобы помочь методу оптимизации лучше обобщать. Этот принцип распространяется и на этот предлагаемый метод и предназначен для поощрения отчетливых вариаций в альфа-слое.

Начальная загрузка для потери маски

Термин «начальный загрузчик» не относится напрямую к традиционному определению загрузчика, вместо этого он играет на определении в том смысле, что это начальный запуск, фундаментальный для успеха системы. Платформа целенаправленно подгоняет изображение под целевую сеть, в результате чего демонстрируются эффекты реконструкции признаков. Переобучение приводит к тому, что коррелированные элементы изучаются гораздо быстрее, чем независимые элементы, тогда как отсутствие градиента побуждает систему прикреплять эти элементы к разным слоям. Это генерирует представление целевого слоя.

Сначала применяется тяжелый вес, чтобы убедиться, что именно этот вес уменьшается первым, так что сеть развивает свои смещения в сторону правдоподобного решения. Затем он медленно уменьшается, в конечном итоге полностью отключаясь, поскольку он сходится со своим локальным минимумом.

Детальная апсемплинг

В результирующем пост-нейронном рендеринге не хватает деталей. Они обошли это, используя обычную технику повышения частоты дискретизации: беря остаток во входном видео и применяя его к слоям, некоторые детали восстанавливаются.

Действительно, об этом! Если вам это показалось интересным, ознакомьтесь с их бумагой, веб-сайтом и исходным кодом. Это невероятно.

Благодарности

Спасибо, @Jacob Zietek за отличный отзыв о черновике блога!

Первоначально опубликовано на https://dagshub.com 6 февраля 2023 г.