Что такое LivePortrait?
LivePortrait — это эффективная платформа для анимации портретов, разработанная Kuaishou Technology, которая направлена на синтезирование реалистичных видео из одного исходного изображения. Она использует исходное изображение в качестве эталона внешности и получает движения (выражения лица и позу головы) из управляющего видео, аудио, текста или генерации.
В отличие от основных методов на основе диффузии, LivePortrait исследует и расширяет платформу на основе скрытых ключевых точек для эффективного баланса вычислительной эффективности и управляемости. Она фокусируется на лучшей обобщаемости, управляемости и эффективности для практического использования. LivePortrait имеет высокое качество генерации даже по сравнению с методами диффузии, оставаясь при этом чрезвычайно быстрой — около 12,8 мс на кадр на GPU RTX 4090 с PyTorch.
Для получения дополнительной информации посетите
Как работает LivePortrait
На высоком уровне LivePortrait принимает исходное изображение и управляющее видео в качестве входных данных. Она извлекает внешность из исходного изображения и движения из управляющего видео. Эти данные затем комбинируются с использованием модулей деформации и генерации для синтеза анимированного портретного видео, которое сохраняет идентичность исходного изображения, но следует движениям и выражениям управляющего видео.
Ключевые компоненты LivePortrait:
- Извлекатель признаков внешности: Кодирует информацию о личности и внешности из исходного изображения.
- Извлекатель движений: Извлекает признаки движений (ключевые точки лица) из кадров управляющего видео.
- Модуль деформации: Использует извлеченные движения для деформации признаков исходного изображения, выравнивая их с позой и выражением управляющего видео.
- Генератор изображений: Принимает деформированные признаки и синтезирует финальный фотореалистичный анимированный кадр.
- Модуль сшивания и ретаргетинга: Опционально сшивает сгенерированный портрет обратно на исходное изображение и позволяет контролировать конкретные области лица, такие как глаза и рот.
Эти модули эффективно спроектированы и работают вместе для создания высококачественной, управляемой анимации LivePortrait.
Как использовать ComfyUI LivePortrait
Благодаря узлу и рабочему процессу, создание реалистичных анимаций портретов в ComfyUI стало проще. Ниже приведен обзор ключевых компонентов и параметров рабочего процесса ComfyUI LivePortrait.
Ключевые шаги рабочего процесса ComfyUI LivePortrait Img2Vid
1. Загрузка моделей Live Portrait
- Добавьте узел "DownloadAndLoadLivePortraitModels"
- Установите точность на auto или fp16 для лучшей производительности
2. Выбор детектора лица для LivePortrait
- У вас есть выбор между узлами "LivePortraitLoadCropper" (InsightFace) и "LivePortraitLoadMediaPipeCropper"
- InsightFace более точен, но имеет некорпоративную лицензию, в то время как MediaPipe быстрее на CPU, но менее точен
- Оба выводят "cropper", который будет использоваться для обнаружения и обрезки лиц
3. Загрузка и предварительная обработка исходного изображения для LivePortrait
- Загрузите свое исходное портретное изображение с помощью узла "Load Image"
- Измените его размер до 512x512 с помощью узла "ImageResize"
- Подключите измененное изображение к узлу "LivePortraitCropper"
- Также подключите вывод "cropper" выбранного вами детектора лиц к этому узлу
- Ключевые параметры в узле "LivePortraitCropper"
"dsize": Устанавливает разрешение выходного изображения лица
- По умолчанию 512, что означает, что лицо будет обрезано до 512x512 пикселей
- Более высокие значения обрезают лицо в более высоком разрешении, но могут быть медленнее в обработке
- Более низкие значения будут быстрее, но могут потерять некоторые детали
"scale": Контролирует, насколько увеличено будет обрезка лица
- По умолчанию 2.3, более высокие значения увеличивают лицо ближе, более низкие значения включают больше головы/фона
- Вам нужно настроить это так, чтобы обрезка включала все лицо и немного фона, но не слишком много лишнего пространства
- Хорошая обрезка лица важна для качественной передачи движения
- Типичные значения варьируются от 1.8 до 2.5 в зависимости от кадрирования исходного изображения
"face_index": Если на изображении обнаружено несколько лиц, этот параметр выбирает, какое из них обрезать
- По умолчанию 0, что выбирает первое обнаруженное лицо
- Увеличьте это значение, если хотите выбрать другое лицо на изображении
- Обнаруженные лица упорядочены на основе настройки "face_index_order" (по умолчанию от большего к меньшему)
"vx_ratio" и "vy_ratio" (опционально): Эти параметры позволяют смещать обрезку по вертикали (vy) или горизонтали (vx)
- Значения варьируются от -1 до 1
- Например, установка vy на 0.1 сдвинет обрезку вверх на 10% от размера кадра
- Это может помочь, если автоматическая обрезка немного смещена
"face_index_order": Этот параметр устанавливает порядок обнаруженных лиц при выборе с помощью face_index
- По умолчанию "large-small", что упорядочивает от большего к меньшему лицу
- Также может упорядочивать слева направо, сверху вниз и т.д.
- Это актуально только если у вас несколько лиц на изображении
4. Загрузка и предварительная обработка управляющего видео для LivePortrait
- Загрузите свое управляющее видео с помощью узла "VHS_LoadVideo"
- Настройте num_frames с помощью примитива "frame_load_cap"
- Измените размер кадров видео до 480x480 с помощью узла "GetImageSizeAndCount"
- Вы можете опционально обрезать кадры управляющего видео с помощью другого узла "LivePortraitCropper"
5. Применение передачи движения для LivePortrait
- Добавьте узел "LivePortraitProcess"
- Подключите загруженный pipeline, crop_info исходного изображения, обрезанное исходное изображение и управляющие кадры к узлу "LivePortraitProcess"
- Ключевые параметры в узле "LivePortraitProcess"
"lip_zero": При включении этот параметр обнулит параметры губ, если они опустятся ниже определенного порога
- Это может помочь снизить неестественные движения губ и улучшить синхронизацию губ
- Рекомендуется включить это, если вы специально не хотите сохранить все движения губ
"lip_zero_threshold": Устанавливает порог, ниже которого параметры губ будут обнулены при включении "lip_zero"
- По умолчанию 0.03, более высокие значения обнулят больше движений губ, более низкие значения сохранят больше движений
- Настройте это, если хотите изменить, сколько движений губ будет подавлено
"stitching": При включении этот параметр будет смешивать анимированное лицо обратно на исходное изображение с помощью процесса сшивания
- Это может помочь создать более плавный переход между анимированным лицом и фоном
- Рекомендуется включить это для самых естественных результатов
"delta_multiplier": Масштабирует параметры движения множителем
- По умолчанию 1.0, более высокие значения усиливают движения, более низкие значения уменьшают их
- Может использоваться для настройки общей интенсивности движений лица
- Типичные значения варьируются от 0.8 до 1.5 в зависимости от желаемого эффекта
"mismatch_method": Устанавливает, как рабочий процесс обрабатывает несоответствия между количеством исходных и управляющих кадров
- Варианты: "constant", "cycle", "mirror" и "cut"
- "constant" удерживает последний кадр, "cycle" зацикливает, "mirror" воспроизводит вперед и назад, "cut" останавливается
- По умолчанию "constant", измените это, если хотите другое поведение, когда управляющее видео длиннее или короче исходного
"relative_motion_mode": Контролирует, как движение передается из управляющего видео на исходное изображение
- Варианты: "relative", "source_video_smoothed", "relative_rotation_only", "single_frame" и "off"
- "relative" по умолчанию и использует относительную передачу движения
- "off" отключит передачу движения полностью
- Экспериментируйте с различными режимами, чтобы увидеть, какие дают лучшие результаты для вашего конкретного случая
"driving_smooth_observation_variance": Контролирует плавность движения управляющего видео при использовании режима движения "source_video_smoothed"
- Более высокие значения сглаживают движение больше, более низкие значения сохраняют больше оригинального движения
- По умолчанию 0.000003, настройте это, если хотите изменить плавность передаваемого движения
6. Композиция результата (опционально) для LivePortrait
- Чтобы скомпоновать анимированное лицо обратно на исходное изображение, используйте узел "LivePortraitComposite"
- Подключите исходное изображение, обрезанное анимированное изображение, данные вывода LivePortrait и опциональную маску
- Это выведет полные кадры с анимированным лицом, смешанным в них
7. Настройка ретаргетинга (опционально) для LivePortrait
- Для более точного контроля над глазами и губами используйте узел "LivePortraitRetargeting"
- Включите ретаргетинг глаз и/или губ и настройте их множители
- Подключите информацию о ретаргетинге к "LivePortraitProcess"
Обратите внимание, что в этом рабочем процессе требуется модель Insightface. Модель Insightface (https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip) имеет некорпоративную лицензию.
Если вас интересует LivePortrait Vid2Vid, пожалуйста, используйте