Как оживить Кандинский матрицами вращений для генерации видео (часть 1-я)
Данная публикация о задаче text2video основана на моей недавней дипломной работе в магистратуре МФТИ и это моя первая статья.
Первоначально тема моей магистерской работы формулировалась как — генерация видео на основе текстового описания и Stable Diffusion. К работе я приступил в начале октября 2023 года. К этому времени еще было мало публикаций на тему генерации видео и готового кода для решения задачи text2video. Тогда мне запомнились 2 проекта: Text2video-zero и ANIMATEDIFF.
В проекте Text2video-zero уже была статья от марта 2023 г в которой авторы предложили добавить временную ось в структуру диффузионной модели U-net, и учить модель генерировать сразу пакет кадров, обучая также на пакете последовательных изображений из видео. Что вполне логично.
На сайте Stable Diffusion был заявлен проект ANIMATEDIFF, описывающий тестируемые командой подходы по генерации видео путем влияния на шум и за счет включения в готовые модели Text-2-Image различных LoRa адаптеров для модели Unet, которые должны обучаться, при заморозке основных слоев Unet, чтобы учитывать имеющиеся изменения в последовательных кадрах.
Мне было интересно найти что-то свое, да и в целом, мое погружение в диффузионные модели еще было в самом начале на тот момент, и я решил пойти от самого простого.
В чем же проблема при генерации видео из текста ?
В отличие от генерации картинки, нам необходимо получить серию максимально близких изображений, в которых есть малые изменения заданные самим текстом.
Как видно из слайда, это не такое очевидное решение.
По сути — глагол «моет» и должен дать связанные изменения, а от слов «мама» и «рама» картинки не должны меняться. Но как это сделать?
Пиксельное и Clip пространства видео
Сначала я глянул на пиксельное пространство. На слайде видны как кадры, так и изменения между ними. И от последнего кадра можно прийти к первому вычтя изменения.
Далее стало интересно, а что же происходит с Clip векторами кадров и вытянутых в вектора матриц пикселей (flat векторы). А точнее как схожи эти типы векторов между разными кадрами. Для этого просто построил матрицы корреляций кадров между собой.
![корреляция кадров между собой](https://habrastorage.org/r/w1560/getpro/habr/upload_files/cfd/708/a3e/cfd708a3e8f260c79baf478c1f121be1.png)
корреляция кадров между собой
Давайте изучим их пристальнее.
Корреляционная матрица пиксельного пространства демонстрирует более широкий диапазон значений корреляции, с заметным снижением их по сравнению с пространством CLIP. Это указывает на большую чувствительность пространства пикселей к мелким изменениям между кадрами.
Корреляционная матрица пространства CLIP показывает более стабильные и гладкие переходы между соседними кадрами. Это указывает на то, что CLIP эмбеддинги абстрагируют высокоуровневую информацию из изображений, в то время как пространство пикселей более чувствительно к низкоуровневым деталям.
Но вот если глянуть изменения только соседних кадров. То видна взаимосвязь двух пространств в переходах между соседними кадрами. Это проявляется в том, что оба пространства улавливают основные изменения в видео, но с разной степенью чувствительности к деталям
Я предположил, что можно сформировать некий тензор смещений на основе матрицы корреляций клип пространства изображений, которым можно подействовать на текстовые вектора или на сам стартовый шум.
Формирование тензора смещений
Модель Clip училась сближать вектора текстового пространства и пространства изображений. Так, что можно было ожидать что-то разумное от подобных манипуляций
Далее я сформулировал свою гипотезу которую заложил в основу своих исследований — Управляемые изменения текстовых эмбеддингов, могут привести к формированию малых изменений в генерируемых изображениях для формирования видеоряда.
Первые опыты
Вначале я решил поэкспериментировать с модифицированием шума, действуя на него подобной тождественной матрицей близкой к единичной от генерации к генерации, при сохранении изначального шума, зафиксировав seed.
условный пример формирования тензора смещения шума
При некоторых параметрах матрицы стали получаться подобные малые изменения. Что явно давало намек, что идея не бесполезна.
Модификация шума в SD 1.4
Как перейти к текстам?
Из курса NPL мне запомнилось, что в пространстве эмбеддингов Word2Vec тоже действует геометрическая связь между векторами эмбеддингов и есть угловая схожесть векторов.
В итоге стало напрашиваться понятие поворота эмбеддинга. А поворот сразу вывел на формулу поворота Родригеса для 3D пространства.
где
Она широко применяется в 3D графике, робототехнике и много где еще. А сама формула еще называется — матрица вращений. Казалось бы, а причем тут 3D пространство и повороты объекта в нем. Мне всегда задают этот вопрос. Многое, что я пишу далее, уже поиски ответов на этот вопрос, но меня двигала просто интуиция, что преобразования в пространствах любой размерности должны подчиняться неким общим принципам и должны быть в них инварианты и законы их трансформации.
Матрицы вращений многомерного пространства
Для перехода в N мерное пространство нужно уже погружение в Теорию групп. Где через понятие Абелевой группы возможно экспоненциальное отображение алгебры Ли в группу Ли и применение генераторов поворотов. Многомерное вращение раскладывается на произведение двумерных вращений. Каждое двумерное вращение влияет только на два измерения, в которых она действует, оставляя остальные без изменений.
При работе с генераторами А в виде кососимметричных матриц, использование показательной функции является основой плавного перехода от алгебры к геометрии, в частности, от бесконечно малых преобразований к конечным приращениям. Это важно в физике и технике, где резкие изменения могут привести к нежелательному поведению, например, к механическим сбоям или нереалистичной анимации в графике.
где n1 и n2 — n-мерные ортогональные единичные векторы
Экспоненциальное представление матрицы вращений через разложение в ряд Тейлора и перегруппировки слагаемых приведет к формуле матрицы N мерных вращений. На слайде представлена основная формула для матрицы вращения между двумя векторами в многомерном пространстве, состоящая из 3 х слагаемых,
по порядку:
— тождественная матрица — слагаемое гарантирует, что компоненты вектора, выровненного по оси вращения, не будут затронуты вращением.
— кососимметричное слагаемое — слагаемое имеет решающее значение для создания поворота в плоскости, перпендикулярной оси, образованной векторами n_1 и n_2. Этот член отвечает за реальный эффект вращения.
— симметричное слагаемое — слагаемое корректирует компоненты, параллельные оси вращения и их вклад в общее вращение.
Опыты с матрицами вращений
Обнаружение формулы для N мерных вращений заложило основы для первых экспериментов с вращением текстовых эмбеддингов.
применение матриц вращений к эмбеддингам
На слайде схематично представлено, что изменения в текстовые вектора используемые для генерации в диффузионной модели передаются через матрицу вращения, получаемую от векторов соответствующих кадров. Как видно из слайда, для тестирования i+1 вектор получается путем добавления к i-му вектору малой добавки от матричного произведения матрицы вращения на тот же i-й вектор, а малость вклада определяется коэффициентом g. Это схоже с теорией возмущения.
Первые опыты проводились на моделях Stable Diffusion 1.4, 1.5. Брался видеоролик, далее из Clip векторов соседних кадров считалась матрица вращений, которая далее применялась текстовому эмбеддингу перед генерацией изображения. На слайде представлены удачные примеры.
эксперименты с SD 1.4(5)
Далее меня заинтересовала модель Кандинский 2.2, которая построена на unclip подходе. Где есть диффузионная модель, которая фактически работает как Image-2-Image. А текстовая информация сосредоточена в моделе Prior, которая учится выдавать из проекций текстовых векторов уже вектора максимально близкие к векторам изображений. Схожая структура и в моделе DALLE.
В Кандинский 2.2 эмбеддинги после модели Prior имеют большую схожесть с эмбеддингами изображений, что должно было в теории лучше работать с подходом из многомерных вращений.
Генерация Кандинским 2.2 совместно с матрицей вращений
На слайдах далее представлены некоторые примеры генераций Декодером Кандинский 2.2 из измененных эмбеддингов модели Prior матрицами вращений получаемых из изменений в стороннем видеоряде.
![влияние стороннего видеоряда на эмбеддинги для генерации картинок](https://habrastorage.org/getpro/habr/upload_files/825/71d/7e8/82571d7e80578545902a85e076a02d72.gif)
влияние стороннего видеоряда на эмбеддинги для генерации картинок
влияние стороннего видеоряда на эмбеддинги для генерации картинок
Эксперименты с применением матриц вращений и модели Кандинский 2.2 проводились с текстом, с шумом и комплексно.
справа модификация шума от кадра к кадру на основе прошлой генерации
Еще примеры генерации видеоряда.
В итоге, в опытах с матрицами вращений продемонстрирована возможность по передаче информации об изменениях между латентными пространствами разной модальности.
Исследования показали, что:
управление генерациями через матрицы вращений возможно;
контроль и управление изменениями может стать основой для разработки методики машинного обучения.
Результаты меня вдожновили, так как они показали направления поиска моего далее. О результатах раскажу в следующей части.
Послущать мой доклад по вышеизложенному материалу можно на моем канале, который только начал наполнять. Исследования данного этапа представлены в моем репозитории.
Буду рад вопросам и комментариям как по теме, так и по стилю изложения, так как только учусь писать статьи. Продолжение следует.