ComfyUI  >  워크플로우  >  LivePortrait | 초상화 애니메이션 | Img2Vid

LivePortrait | 초상화 애니메이션 | Img2Vid

이 ComfyUI LivePortrait Img2Vid 워크플로우는 효율적인 LivePortrait 프레임워크를 통합하여 정지 초상화 이미지를 생동감 있게 만듭니다. 얼굴 표정, 머리 움직임, 눈과 입과 같은 세부 사항을 완벽하게 제어하여 매우 현실적인 애니메이션 비디오를 만들 수 있습니다.

ComfyUI LivePortrait 워크플로우

ComfyUI LivePortrait Workflow
이 워크플로우를 실행하고 싶으신가요?
  • 완전히 작동 가능한 워크플로우
  • 누락된 노드 또는 모델 없음
  • 수동 설정 불필요
  • 멋진 시각 효과 제공

ComfyUI LivePortrait 예제

ComfyUI LivePortrait 설명

LivePortrait란 무엇인가요?

LivePortrait는 단일 소스 이미지로부터 생동감 있는 비디오를 합성하기 위해 Kuaishou Technology에서 개발한 효율적인 초상화 애니메이션 프레임워크입니다. 소스 이미지를 외형 참조로 사용하고, 드라이빙 비디오, 오디오, 텍스트 또는 생성으로부터 움직임(얼굴 표정과 머리 자세)을 유도합니다.

주류 확산 기반 방법과 달리, LivePortrait는 계산 효율성과 제어 가능성을 효과적으로 균형 잡기 위해 암묵적 키포인트 기반 프레임워크를 탐구하고 확장합니다. 실제 사용을 위해 더 나은 일반화, 제어 가능성 및 효율성에 중점을 둡니다. LivePortrait는 확산 방법과 비교해도 높은 생성 품질을 가지고 있으며, PyTorch를 사용하는 RTX 4090 GPU에서 프레임당 약 12.8ms로 매우 빠릅니다.

자세한 내용은 를 방문하세요.

LivePortrait 작동 방식

고수준에서 LivePortrait는 소스 이미지와 드라이빙 비디오를 입력으로 받습니다. 소스 이미지에서 외형을 추출하고 드라이빙 비디오에서 움직임을 추출합니다. 그런 다음 이들을 왜곡 및 생성 모듈을 사용하여 합성하여 소스 이미지의 정체성을 유지하면서도 드라이빙 비디오의 움직임과 표정을 따르는 애니메이션 초상화 비디오를 만듭니다.

LivePortrait의 주요 구성 요소는 다음과 같습니다:

  1. 외형 특징 추출기: 소스 이미지에서 정체성과 외형 정보를 인코딩합니다.
  2. 움직임 추출기: 드라이빙 비디오 프레임에서 움직임 특징(얼굴 키포인트)을 추출합니다.
  3. 왜곡 모듈: 추출된 움직임을 사용하여 소스 이미지 특징을 왜곡하여 드라이빙 자세와 표정에 맞춥니다.
  4. 이미지 생성기: 왜곡된 특징을 받아 최종 포토리얼리스틱 애니메이션 프레임을 합성합니다.
  5. 스티칭 및 리타게팅 모듈: 선택적으로 생성된 초상화를 원본 이미지에 다시 스티칭하고 눈과 입과 같은 특정 얼굴 영역을 제어할 수 있게 합니다.

이 모듈들은 효율적으로 설계되어 고품질, 제어 가능한 LivePortrait 애니메이션을 가능하게 합니다.

ComfyUI LivePortrait 사용 방법

노드와 워크플로우 덕분에, ComfyUI에서 현실적인 초상화 애니메이션을 만드는 것이 더 쉬워졌습니다. 다음은 그의 ComfyUI LivePortrait 워크플로우의 주요 구성 요소와 매개변수에 대한 설명입니다.

ComfyUI LivePortrait Img2Vid 워크플로우의 주요 단계

1. 라이브 초상화 모델 로드

  • "DownloadAndLoadLivePortraitModels" 노드를 추가합니다
  • 최상의 성능을 위해 정확도를 auto 또는 fp16으로 설정합니다

2. LivePortrait용 얼굴 검출기 선택

  • "LivePortraitLoadCropper"(InsightFace)와 "LivePortraitLoadMediaPipeCropper" 노드 중에서 선택할 수 있습니다
  • InsightFace는 더 정확하지만 비상업적 라이선스를 가지고 있으며, MediaPipe는 CPU에서 더 빠르지만 덜 정확합니다
  • 둘 다 얼굴을 검출하고 자르기 위한 "cropper"를 출력합니다

3. LivePortrait용 소스 이미지 로드 및 전처리

  • "Load Image" 노드를 사용하여 소스 초상화 이미지를 로드합니다
  • "ImageResize" 노드를 사용하여 512x512로 크기를 조정합니다
  • 크기 조정된 이미지를 "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" 노드를 사용하여 드라이빙 비디오를 로드합니다
  • "frame_load_cap" 프리미티브를 사용하여 num_frames를 조정합니다
  • "GetImageSizeAndCount" 노드를 사용하여 비디오 프레임을 480x480으로 크기 조정합니다
  • 다른 "LivePortraitCropper" 노드를 사용하여 드라이빙 비디오 프레임을 선택적으로 자를 수 있습니다

5. LivePortrait에 움직임 전송 적용

  • "LivePortraitProcess" 노드를 추가합니다
  • 로드된 파이프라인, 소스 이미지 crop_info, 자른 소스 이미지 및 드라이빙 프레임을 "LivePortraitProcess" 노드에 연결합니다
  • "LivePortraitProcess" 노드의 주요 매개변수

"lip_zero": 활성화되면 특정 임계값 이하로 떨어지는 입 매개변수를 0으로 설정합니다

  • 이는 부자연스러운 입 움직임을 줄이고 립 싱크를 개선하는 데 도움이 될 수 있습니다
  • 모든 입 움직임을 보존하려는 경우가 아니라면 활성화하는 것이 좋습니다

"lip_zero_threshold": "lip_zero"가 활성화된 경우 입 매개변수가 0으로 설정될 임계값을 설정합니다

  • 기본값은 0.03이며, 더 높은 값은 더 많은 입 움직임을 0으로 설정하고, 더 낮은 값은 더 많이 보존합니다
  • 입 움직임 억제 정도를 변경하려면 이 값을 조정합니다

"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에 관심이 있는 경우 를 사용하세요.

더 많은 ComfyUI 워크플로우를 원하시나요?

RunComfy

© 저작권 2024 RunComfy. All Rights Reserved.

RunComfy는 최고의 ComfyUI 플랫폼으로서 ComfyUI 온라인 환경과 서비스를 제공하며 ComfyUI 워크플로우 멋진 비주얼을 제공합니다.