Обработка видео с помощью Stable Diffusion и EbSynth

31 июля 2023

2704

0

0

0

На первый взгляд, обработать видео в Stable Diffusion не особо сложно. Любое видео состоит из отдельных кадров, так что можно просто разбить видеоролик на отдельные кадры и отдать их нейросети на обработку. Но на практике оказывается, что всё не так просто. 

Даже в небольшом ролике может быть несколько сотен, или даже тысяч кадров, и обрабатывать их по одному просто утомительно.

Кадр видео с квадрокоптера, превращённый в картину маслом. Осталось сделать ещё тысячу таких, и ролик готов / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

Этот текст о том, как сделать процесс обработки большого количества картинок более быстрым, удобным и точным. Для этого будем обрабатывать в Stable Diffusion только небольшую часть кадров (примерно один из ста), а потом применять полученный стиль обработки к остальным кадрам при помощи программы EbSynth.

Шаг 1: разбиваем видео на отдельные изображения и выбираем ключевые кадры

Для начала нужно сохранить видео как последовательность кадров в формате .JPEG или .PNG, так как нейросеть Stable Diffusion работает с изображениями. Для этого можно использовать Adobe Premiere Pro, в настройках сохранения выбираем нужный формат и экспортируем.

Формат лучше выбрать JPEG качеством 60-70. И не забываем указать выходную папку, чтобы все кадры не оказались где-нибудь на рабочем столе / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

Теперь нужно отобрать ключевые кадры для последующей обработки в Stable Diffusion. Сделать это можно просто руками — заходим в папку с нашими кадрами, и выбираем, например, каждый сотый кадр (или каждый 50-й, или каждый 250-й). 

Всё зависит от того, насколько быстро меняется картинка на видео: чем больше на видео движения и изменений, тем чаще нужно выбирать ключевые кадры. Например, для статичного видео с пейзажем и бегущими облаками можно брать 1 из 300 или даже 1 из 500 кадров, а для динамичного видео с квадрокоптера можно использовать каждый двадцать пятый кадр.

Копируем (не переносим!) ключевые кадры в другую папку / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

Шаг 2: обрабатываем ключевые кадры в Stable Diffusion

Работать будем в сборке AUTOMATIC1111 — о том, как её установить и использовать, читайте здесь. Для работы понадобится расширение ControlNet. Для его установки переходим во вкладку Extensions, и в ней ищем пункт Install from URL. Вставляем адрес расширения на Гитхабе — https://github.com/Mikubill/sd-webui-controlnet, и жмём Install.

К расширению понадобятся модели для работы, скачать их можно здесь. Там их много, для работы в первую очередь понадобится модель Canny — control_v11p_sd15_canny.pth. Скачанный файл кладём в папку Stable Diffusion в папку \extensions\sd-webui-controlnet\models.

После установки перезапускаем Stable Diffusion / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

Расширение ControlNet помогает максимально сохранить композицию исходного изображения при обработке в Stable Diffusion. Для начала возьмём один из кадров нашего видео, и попробуем стилизовать его под картину в стиле Ван Гога без использования Control Net (о том, как работать с изображениями, мы писали в этом тексте).

Переходим во вкладку img2img, загружаем наш кадр, и получаем вот такое:

Чем больше степень стилизации, тем меньше картинка похожа на исходный кадр / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

А теперь задействуем ControlNet. Находится расширение внизу вкладки img2img. Перетаскиваем в область загрузки (1)тот же самый кадр, который открыт выше в разделе img2img. Включаем расширение галочкой Enable (2) и ставим галочку Low VRAM (мало видеопамяти), если у видеокарты меньше 8 Гб памяти. Выбираем препроцессор Canny и соответствующую модель (3). И наконец указываем, что ControlNet важнее, чем наш запрос (4).

Настроили, генерируем красивую картинку / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

Теперь при запуске генерации сперва сработает ControlNet и создаст контурный рисунок нашего кадра, который и будет служить подсказкой для Stable Diffusion — она «раскрасит» его согласно нашему запросу. В итоге город в кадре остался вполне узнаваемым, и при этом нейросеть стилизовала его под работу Ван Гога.

Результат работы ControlNet (слева) и итоговая картинка (справа) / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

Теперь можно обработать в таком стиле все ключевые кадры. Чтобы не загружать их руками по одному, воспользуемся пакетной обработкой. Для этого понадобится вкладка Batch раздела img2img (1).

В ней нужно указать папку с исходными ключевыми кадрами (2) и папку для сохранения уже обработанных. Поле ControlNet Input Directory (3) оставляем пустым — в этом случае ControlNet будет брать в качестве образца те же ключевые кадры из папки Input Directory (2).

И не забываем уменьшить количество одновременно генерируемых кадров (4), чтобы нейросеть не создавала несколько копий одного и того же кадра / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

Теперь опускаемся ниже, в раздел ControlNet и переключаем его тоже на пакетную обработку (1). Поле Input Directory (2) снова оставляем пустым.

Остальные настройки не меняем / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

Жмём «Generate», и ждём, пока нейросеть обработает все ключевые кадры. Тут может возникнуть вопрос: а почему бы не обработать таким образом все кадры видео, а не только отобранные ключевые? Причин на это две.

Во-первых, это время. Минутный ролик с частотой 25 кадров в секунду состоит из 1500 кадров. Если обрабатывать их все на мощном компьютере с видеокартой уровня GeForce RTX 4090, на один кадр уйдёт 4-6 секунд, а на все 1500 кадров понадобится 2-3 часа. Не так и много. Но если нейросеть работает на менее мощной видеокарте (например, GeForce GTX 1650), то на один кадр может уйти больше минуты, а обработка 1500 кадров займёт больше суток.

Во-вторых, как ни странно, если обработать все кадры в Stable Diffusion, видео будет некрасивым. Сгенерированные кадры отличаются друг от друга, и склеенное из них видео будет выглядеть дёрганным. 

Пример видео, в котором все кадры были обработаны в Stable Diffusion: 

Именно поэтому в Stable Diffusion мы обработали только ключевые кадры, а применить полученный стиль обработки к остальным кадрам и получить плавные переходы и красивое видео поможет другая нейросеть — EbSynth. И к тому же это будет гораздо быстрей.

Шаг 3: обрабатываем все кадры в EbSynth

Чтобы обработать все кадры, понадобится ещё один нейросетевой инструмент — программа EbSynth. Скачать её можно с официального сайта, а использовать бета-версию можно бесплатно (в том числе и для коммерческих целей).

Устанавливать программы не надо, достаточно распаковать zip-архив и запустить исполняемый файл EbSynth.exe. Откроется окно программы. В поле ketframes (1) перетаскиваем папку с обработанными в Stable Diffusion ключевыми кадрами. В поле Video (2) — папку, в которой хранятся все кадры исходного видео. И убеждаемся, что при обработке будет задействована видеокарта (3).

Остальные настройки оставляем по-умолчанию (на мощном компьютере при желании можно поменять значение Synthesis Detail на High, чтобы качество обработки стало максимально высоким) / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

После этого жмём кнопку «Run All». Работает EbSynth довольно быстро: даже на компьютере с довольно слабой видеокартой GTX 1050 Ti обработка 1000 кадров разрешением 1920х1080 заняла около получаса.

Ключевой кадр, сгенерированный Stable Diffusion за 30 секунд (слева) и один из кадров на его основе, созданный в EbSynth за 3 секунды (справа) / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

Шаг 4: собираем готовое видео из обработанных кадров

После обработки можно прямо из EbSynth создать проект Adobe After Effects с помощью соответствующей кнопки.

Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт

После этого все обработанные изображения автоматически откроются на таймлайне After Effects, и останется только их экспортировать, превратив набор отдельных кадров в видео.

Получаем вот такое видео:

31 июля 2023

2704

0

0

0

Самые новые

Самые читаемые