Первый блин
Впервые нейросеть для создания видео я использовал в январе 2023 года. Узнав, что Stable Diffusion может генерировать изображения по запросу, сразу захотелось что-то эдакое сотворить. Просто так генерировать картинки неинтересно, поэтому было решено сделать клип на песню. Например, на песню "Кафе" группы Команда Кора.
Здесь использовался метод "img-to-img". Сперва был смонтирован сам клип, а затем каждый кадр был переделан нейросетью под определённый запрос. Частота кадров была поднята с 12 до 25 кадров в секунду с помощью оптического потока. Тогда я использовал Stable Diffusion на каком-то сайте (уже не вспомню, каком), о понятии "зерно" даже не слышал, и в итоге получилось то, что получилось.
Второй блин
Позднее я обновил свой компьютер, чтобы он дотягивал до необходимых нейросетям параметров, и поселил в нём уже локальную версию Stable Diffusion с разными моделями и LoRa, веб-интерфейсом, плагином для генерации видео Animate Diff и модулем для обучения нейросети. Как это всё устанавливалось, сколько бубнов было порвано, прежде чем оно начало работать - отдельная история. Но вот, наконец, нейросети ожили и заработали. Что со всем этим добром делать? Правильно, ещё один клип!
Музыканты из петербургской группы "Среда", с которыми мы познакомились на Закрытии мотосезона в Луге, любезно разрешили использовать одну из их песен - "Моё солнце".
После пяти дней страшных мучений кобра сдохла ничего не получилось. Я личность ни разу не творческая, у самого у меня фантазии не хватает, поэтому сюжет для клипа так и не смог придумать. Несколько вариантов было сделано, но после просмотра предварительных версий видео, все они были отправлены в корзину.
Чёртово колесо
Тогда "Среда" предложила другую песню - "Чёртово колесо". Именно этой песней они завершили своё выступление на Закрытии мотосезона, исполнив её на бис. Песня - хит.
С одной стороны, я удивился доверию с их стороны - не пожалеть такую песню ради эксперимента с нейросетями. С другой стороны, обрадовался - песня хайповая, известная, и если клип "взлетит", то и мне будет плюс. В общем, уровень ответственности был поднят.
Кроме того, в группе поменялся состав: вместо Андрея Дерибаса солистом стал барабанщик и автор текстов Александр Лукичёв (он же является инициатором создания группы и её руководителем), покинула группу скрипачка Татьяна Венгурцева, а женскому вокалу Снежаны Хатуевой был увеличен приоритет.
В связи с этим, "Среда" планировала перезаписать ряд песен в новом составе, и одной из них как раз являлась песня "Чёртово колесо", которая в новой версии получила название "Любовь, метро и ветер". Текст песни, впрочем, остался прежним.
Героиня
Также я узнал, что у героини песни есть реальный прототип, то есть песня не абстрактная фантазия, а рассказ о вполне реальном человеке. Сразу же было решено использовать внешность этого самого человека. Для этого было нужно обучить нейросеть на её фотографиях, благо на страничке ВК их оказалось более, чем достаточно. Проштудировав инструкцию, скачав несколько сотен фотографий, обработав их соответствующим образом в Adobe Photoshop (для обучения нейросети необходимы фотографии с разрешением 512х512 пикселей, с чётким объектом в центре кадра и размытым фоном), я скормил всё обучающему модулю Stable Diffusion. Разрешение у героини я, разумеется, спросить забыл. Но честно собирался это сделать перед релизом клипа.
Но то ли я не еду, то ли лыжи дурак, то ли смазанные любительские фото из ВК нейросеть не переваривает, то ли их оказалось слишком мало - добиться вменяемого результата мне не удалось. Вот некоторые из вариантов, и ведь это самые удачные генерации! Галерею можно листать:
Использовать такую криповую картинку в клипе, конечно же, было нельзя. Поэтому было решено подобрать запрос, наиболее соответствующий самой песне. Методом проб и ошибок за пару дней было подобрано такое описание героини:
"Высокая женщина с рыжими волосами, стрижка гаврош, короткая красная куртка без капюшона, белая футболка без рисунка, длинные синие джинсы".
Отрицательный запрос: "Капюшон, сумка, саквояж, рюкзак, портфель, косоглазие, асимметричное ухо, неидеальные глаза, искривленный нос, плавающая конечность, низкая детализация, деформированная структура, плохо прорисованные руки, лишние конечности, изуродованный, плохая анатомия, футболка с рисунком, рваные джинсы".
Перебором разных моделей была определена самая подходящая - 0001SoftRealistic_v187xxx на базе Stable Diffusion 1.5. Впрочем, героиня могла выглядеть и по-другому. Вот какие были варианты:
Анимация
Анимацией должен был заниматься плагин Animate Diff. Как оказалось, он тоже имеет ряд ограничений. Обучали модель анимации на видео с низкой частотой кадров - всего 8 в секунду. При этом кадры анимации создаются на одном полотне, а значит, большое количество кадров за раз сделать нельзя - с каждым кадром будет увеличиваться размер полотна. Все кадры рассчитываются одновременно, что влияет на использование видеопамяти. Лучшим вариантом оказалась генерация за раз полотна на 25 кадров: при частоте 8 кадров в секунду получалось 3,1 секунды за одну генерацию, что как раз соответствовало темпу музыки в песне. При необходимости кадры можно было закольцевать, чтобы увеличить продолжительность. Для каждого кадра использовалось от 40 до 50 сэмплов.
Некоторые кадры получались буквально с первого раза, некоторые - с десятого, иногда приходилось тратить на кадр сутки или более. Каждая генерация занимала от 5 до 8 минут с использованием видеокарты на 100%. Видеокарта у меня RTX 3080 Supreme X с двойным водоблоком и тремя радиаторами жидкостного охлаждения, но даже она не может быстрее.
В итоге получались такие вот анимации (чтобы анимация воспроизвелась, на неё надо нажать):
При этом полноценно анимировать, например, человека, Animate Diff пока не умеет. Человек может шевелиться, поворачиваться, но вот заставить его идти, бежать, прыгать и вообще как-то перемещаться в экранном пространстве он не может. Этот момент пришлось учитывать при создании запросов и дальнейшем монтаже.
Монтаж
В результате получилось суммарно 110 кадров 512х512 пикселей и частотой 8fps. Их нужно было нарезать под смысл и ритм песни, что несложно. Пара часов в Adobe Premier Pro и всё готово.
Затем картинку нужно было расширить до формата 16:9. С этим помогла ещё одна нейросеть - Fusion Brain. С её помощью для каждого кадра было сделано по 2 статичных фона, которые плавно переходят один в другой.
Затем этим фонам была придана динамика с помощью наложения размытой копии основной картинки.
Чего-то не хватало. Мультяшности! Не, нуачо? Загоняем все кадры с помощью пакетной обработки в программу AKVIS Sketch, ждём полчаса и получаем рисованный мультфильм.
Получившийся результат ещё одним слоем добавляем к клипу, прозрачностью оставляя мультяшность лишь по краям.
Накидываем эффектов, цветокорр, готово? Как бы не так!
Апскейл
У нас всё ещё картинка низкого разрешения и с малой частотой кадров. Теперь наступает время для апскейла - улучшения качества изображения. Здесь нам поможет ещё одна нейросеть - Topaz Video AI. Из картинки 1024х576 пикселей (да, теперь она у нас такая) Topaz делает видео с 8К разрешением 7680х4320 пикселей. Увеличить картинку я доверил алгоритму Proteus, а частоту кадров с 8 до 50 подняла модель Chronos.
Затем получившийся 8К результат нужно перегнать в более привычное разрешение FullHD 1920х1080. Почему? Потому что никакой апскейлер не сможет действительно вытянуть изображение в 8К, он может лишь постараться. Фактический результат всё равно будет в лучшем случае равносилен качеству хорошего FullHD. Так зачем же тратить лишний битрейт?
А что в итоге?
Руководитель группы "Среда" Александр Лукичёв, посмотрев результат, внёс пару правок: сделать героиню до прыжка чёрно-белой, уменьшить общую насыщенность картинки - Питер же всё-таки. Ну, это несложно. И вот, наконец, итоговый вариант:
Группа "Среда"
Автор, мужской вокал, ударные: Александр Лукичёв
Женский вокал: Снежана Хатуева
Бас-гитара: Александр Борохов
Ритм-соло-драйв гитара: Михаил Алымов
Креативный менеджер: Надежда Киреева
Звукорежиссёр: Николай Георгиев (NICHOLAY MIX)
Режиссёр, монтаж: Александр Итальянцев