Генерация видео в Шедевруме

Яндекс запустил новую диффузионную end-to-end-модель преобразования текста в видео в приложении Шедеврум. Расскажем, как она работает и чем отличается от прошлого подхода.

Как было раньше и как стало сейчас

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

В новом подходе используется end-to-end-text2video-модель. На вход она получает текст, в котором могут быть указаны субъект, объект и описание действия. Модель сама учитывает связь между кадрами, из-за чего получается более согласованный результат.

Этапы генерации видео

Генерация базовых кадров. На этом этапе создаётся видео с низкой частотой кадров и разрешением. Из нормального распределения сэмплируются зашумлённые кадры, которые впоследствии постепенно преобразуются в связное видео.

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

Повышение разрешения. Модель работает в латентном пространстве, поэтому для повышения разрешения сгенерированные латенты подаются в декодер VAE. В него для большей согласованности фреймов добавили motion-блоки.

Обучение

Процесс обучения модели text2video начинается с адаптации уже существующей text2image-модели. Чтобы не обучать её с нуля, что требует большого количества разнообразных данных, разработчики решили дообучить проверенную модель для генерации изображений, добавив в неё временные блоки (motion-блоки) для работы с видео. Чтобы снизить нагрузку на память и ускорить обучение, использовались техники mixed precision и torch.FSDP.

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

Более подробно об устройстве и модели и её создании — читайте в статье на Хабре. А здесь в комментариях делитесь своими впечатлениями!

ML Underhood