Здравствуйте, друзья!
Сегодня я хочу поделиться с вами одним из многих способов, как сделать ваши портреты живыми и выразительными с помощью ComfyUI.
Что нам для этого нужно. Естественно установленный и обновленный интерфейс ComfyUI. Если вдруг у вас его нет, то побродив по моим статьям вы точно найдете подробную инструкцию откуда его скачать и как установить. Не ленитесь :-)
Откройте свой ComfyUI, затем перейдите в раздел «Manager» и перейдите в раздел «Custom nodes manager». В поисковой строке введите «Advanced live portrait» и установите этот узел (см. скриншот).
Кроме того, если у вас ещё не установлен модуль «Video helper», то выполните его установку по аналогии с предыдущим.
После установки этих компонентов необходимо перезагрузить ComfyUI.
Давайте создадим простой рабочий процесс и попробуем разобраться как он работает.
Для начала нужно добавить узел «Load Image», чтобы мы могли загрузить наше изображение в рабочий процесс.
Чтобы видео\анимация получились качественными, важно использовать чёткое, качественное портретное изображение с хорошим освещением. Лицо персонажа, желательно, должно быть обращено прямо в камеру. Лучше всего, если персонаж будет иметь нейтральное выражение лица — это позволит добиться наилучшей анимации\видео и избежать ошибок и артефактов.
Далее, нужно загрузить и подключить узел, который позволит нам редактировать выражение лица на нашем изображении. Дважды щёлкните по пустому полю, и в строке поиска введите «Expression editor».
И последним звеном будет узел, который отвечает за отображение итогового изображения на экране. Чтобы это сделать, нужно добавить компонент «Image preview».
Когда рабочий процесс почти готов, осталось только последовательно подключить\соединить все три узла в соответствии с порядком, указанным на изображении ниже.
Переключите режим генерации Queue в режим изменения (стрелка рядом с надписью Queue, меняем на Change.
После этого загрузите изображение и нажмите «Queue».
Нужно немного немного подождать, пока Comfy скачает необходимые для работы модели. Налейте себе кофею но без фанатизма, модели небольшие и скачаются достаточно быстро.
Можно начинать изучение параметров и влияние их значений. Параметров управления достаточно много и учитывая, что таких узлов в процессе может быть больше одного, это значительно расширяет наши возможности при создании анимации и видео, но об этом мы поговорим позже.
Мне кажется нет смысла подробно объяснять очевидные вещи. При изменении значения любого параметра он будет применяться автоматически и вы практически в реальном времени сможете увидеть, чего вы там такого накрутили своему персонажу (кстати, мы с вами именно для этого изменили режим Queue на Queue (Change).
Думаю, вы потратите всего 5 минут, чтобы разобраться, за что отвечает каждый параметр. У меня за пару минут получилось вызвать эмоцию у этой девушки «не подходи ко мне, я обиделась», надеюсь и у вас не составит труда вызвать подобные эмоции у вашего персонажа для экспериментов.
В процессе изучения этого простого рабочего процесса вы должны понять, какие параметры отвечают за перемещение бровей или глаз, наклон головы или выражение лица, а также за то, как эти параметры влияют друг на друга.
Нам же нужна анимация или короткое видео, поэтому следующий процесс будет отличаться от предыдущего.
Не стану слишком затягивать статью, поэтому дальше постараюсь изложить всё более кратко. Если у вас остались вопросы или что-то не получается, вы можете задать их в моей группе ВКонтакте или Telegram. Ссылки на них будут в конце статьи.
Также вы можете скачать все рабочие процессы с моего бусти по этой ссылке (не забываем подписываться) а так же все видео сэмплы для примера можно скачать отсюда.
Для создания анимированного изображения, будь то GIF или MP4-видео, необходимо выполнить несколько шагов. Если начать с самого начала, то нужно дважды кликнуть, чтобы открыть поиск, и последовательно добавить узлы:
- «load image» — узел для загрузки изображения;
- «expression editor» — узел для редактирования изображения (можно добавить столько узлов, сколько потребуется);
- «advanced live portrait» — узел, который получает информацию от предыдущих узлов и позволяет задать параметры для каждого из них.
По быстрому кратко поясню, что означает эта куча цифр. Первый символ перед знаком равенства — это индекс движения. Это уникальный идентификатор, который позволяет однозначно определить конкретное движение.
После знака равенства следует значение, которое показывает длину кадра или насколько изменилась длина кадра.
Цифра после двоеточия указывает на количество кадров, оставшихся до начала следующего индекса движения.
Например, запись 1 = 5:0 означает, что движение с индексом 1 имеет длину 5 единиц и следующее движение начнётся сразу же. Запись 0 = 10:0 будет означать, что движение с индексом 0 имеет длину 10 единиц и следующее движение начнётся через 0 кадров ожидания. Если изменить 0 на 3, то ожидание перед воспроизведением следующего движения будет равно 3, т.е достаточно длинная пауза.
- «video combine» — это инструмент, который объединяет все изображения в анимированный файл или видео. В этом инструменте вы можете настроить параметры:
Frame Rate — количество кадров в секунду в видео.
Loop Count — количество повторений анимации (если это GIF-анимация). По умолчанию установлено значение 0, что означает бесконечное повторение анимации.
File Name — имя выходного файла.
Format — формат выходного файла (видео или анимация).
Для удобства я добавил в свой рабочий процесс инструмент, который позволяет одним кликом настроить размер области анимации во всех узлах отвечающих за анимацию. Это особенно полезно, когда у вас много узлов для анимации и каждый раз менять параметры в каждом узле занимает много времени.
Чем меньше значение Crop_factor, тем меньше область анимации, и вы можете столкнуться с ситуацией, когда часть волос не будет анимироваться.
Чтобы начать работу в этом режиме, необходимо выполнить следующие действия:
1. Выбрать изображение.
2. Определить для себя сценарий анимации.
3. Загрузить изображение в процесс.
4. Настроить каждый индекс движения по своему усмотрению.
5. Просмотреть превью и, если всё устраивает, нажать «Queue».
После завершения генерации на узле Video Combine нужно нажать правую кнопку мыши и сохранить анимацию или видео.
Теперь мы хотим оживить нашу картинку, используя уже существующее видео. Допустим, нам понравилась определенная эмоция или парад эмоций на лице человека на каком то видео, но добиться похожего эффекта с помощью предыдущей методики заняло бы слишком много времени. И опять в этом случае нам на помощь приходят ComfyUI и Live Portrait. Главное иметь нужное видео у себя на жестком диске.
Мы создаём процесс, который похож на предыдущий, но теперь нам нужно добавить в него элемент, который будет загружать еще и наше видео.
Чтобы добавить элементы, нужно дважды щёлкнуть в пустом поле и в строке поиска ввести по очереди названия узлов: load video (upload) — load image — advanced live portrait — video combine.
Соединяем добавленные узлы следующим образом:
После того как вы выбрали видео, которое вам понравилось, и загрузили его, а также загрузили изображение для анимации, выберите формат выходного файла и нажмите «Queue».
Ну и наконец последний и не менее интересный процесс - видео+изображение с возможностью изменить мимику и эмоции с помощью настроек которые мы рассмотрели выше.
Процесс выглядит следующим образом: load video (upload) - load image - expression editor - advanced live portrait - video combine (добавляйте узлы по одному, по порядку. Если вы введёте все названия узлов сразу, поиск не даст результатов.)
Порядок действий такой же как и в предыдущих процессах с одним отличием, что в этом процессе можно и нужно вносить коррективы в мимику с помощью узла "expression editor".
Можно настроить всё, что угодно, но не стоит забывать о том, что вы загрузили в качестве шаблона видео. Поэтому не нужно вносить кардинальные изменения или менять параметры мимики так, чтобы они противоречили тем, что есть на видео. В противном случае вы рискуете получить непонятную мазню.
На этом закончу. Надеюсь, этот материал будет полезен вам в работе над анимациями и короткими видео. Всего хорошего...
Ну и конечно же, если вам понравилась эта статья, буду рад вашим подпискам, комментариям и лайкам. Недавно я запустил Discord-канал и постараюсь поддерживать его насколько возможно, там вы сможете не только следить за новостями, но и общаться, делиться опытом и приобретать новые знания о нейросетях. Чтобы всегда быть в курсе моих новых материалов, подписывайтесь на мой Boosty, Telegram-канал и страницу "ВКонтакте". Пока что нас немного, но я надеюсь, что с течением времени сообщество станет больше. Это станет отличной мотивацией для меня активно работать и над другими социальными сетями.