PuLID란 무엇인가요?
PuLID(Pure and Lightning ID customization)는 텍스트 투 이미지 생성 모델에서 튜닝 없는 ID(정체성) 맞춤화를 위한 새로운 방법입니다. 이는 모델의 원래 기능을 방해하지 않으면서 특정 ID(예: 사람의 얼굴)를 사전 학습된 텍스트 투 이미지 모델에 임베딩하는 것을 목표로 합니다. 이를 통해 텍스트 프롬프트를 사용하여 속성, 스타일, 배경 등을 수정하면서도 특정 사람의 이미지를 생성할 수 있습니다.
PuLID는 두 가지 핵심 구성 요소를 통합합니다:
- 표준 확산 브랜치와 함께 몇 단계의 디노이징만으로 ID에 따라 고품질 이미지를 빠르게 생성하는 "Lightning T2I" 브랜치입니다. 이를 통해 생성된 얼굴의 충실도를 개선하기 위해 정확한 ID 손실을 계산할 수 있습니다.
- ID 조건부 경로와 비조건부 경로 사이의 대조적 정렬 손실입니다. 이는 모델의 원래 프롬프트 따르기 및 이미지 생성 기능을 오염시키지 않고 ID 정보를 임베딩하는 방법을 모델에 지시합니다.
PuLID는 어떻게 작동하나요?
PuLID의 아키텍처는 기존의 확산 학습 브랜치와 새로운 Lightning T2I 브랜치로 구성됩니다:
- 확산 브랜치에서 PuLID는 반복적인 디노이징의 표준 확산 학습 프로세스를 따릅니다. ID 조건은 목표 학습 이미지에서 잘라냅니다.
- Lightning T2I 브랜치는 최근의 빠른 샘플링 방법을 활용하여 순수한 노이즈에서 시작하여 단 4번의 디노이징 단계만으로 ID 프롬프트에 따라 고품질 이미지를 생성합니다.
- Lightning T2I 브랜치 내에서 두 개의 경로가 구성됩니다. 하나는 텍스트 프롬프트에 의해서만 조건화되고, 다른 하나는 ID와 텍스트 프롬프트 모두에 의해 조건화됩니다. 이러한 경로의 UNET 특징은 대조적 손실을 사용하여 정렬됩니다:
- 의미론적 정렬 손실은 ID 조건부 여부에 관계없이 텍스트 프롬프트에 대한 모델의 반응이 유사하도록 합니다. 이는 모델의 원래 프롬프트 따르기 능력을 보존합니다.
- 레이아웃 정렬 손실은 ID 삽입 전후의 생성된 이미지 레이아웃의 일관성을 유지합니다.
- Lightning T2I 브랜치는 깨끗하고 디노이즈된 출력 얼굴을 생성하므로 생성된 얼굴 임베딩과 실제 ID 임베딩 사이의 정확한 ID 손실을 계산할 수 있습니다. 이는 생성된 ID의 충실도를 향상시킵니다.
ComfyUI PuLID는 어떻게 사용하나요?
ComfyUI PuLID 워크플로우를 사용하여 모델에 ID 맞춤화를 적용하려면 "Apply PuLID" 노드에서 여러 가지 핵심 매개변수가 관련됩니다:
"Apply PuLID" 필수 입력:
- model: 특정 ID로 맞춤화할 기본 텍스트 투 이미지 확산 모델입니다. 일반적으로 Stable Diffusion과 같은 사전 학습된 모델입니다.
- pulid: 로드된 PuLID 모델 가중치로, ID 정보가 기본 모델에 어떻게 삽입되는지 정의합니다. 서로 다른 PuLID 가중치 파일은 ID 충실도나 모델의 원래 생성 스타일 보존을 우선시하도록 학습될 수 있습니다.
- eva_clip: ID 참조 이미지에서 얼굴 특징을 인코딩하기 위해 로드된 Eva-CLIP 모델입니다. Eva-CLIP은 의미 있는 얼굴 특징 임베딩을 생성합니다.
- face_analysis: ID 참조 이미지에서 얼굴을 인식하고 잘라내기 위해 로드된 InsightFace 모델입니다. 이는 관련 얼굴 특징만 인코딩되도록 합니다.
- image: 모델에 삽입할 특정 ID를 묘사한 참조 이미지입니다. 동일한 ID의 여러 이미지를 제공하여 ID 임베딩을 개선할 수 있습니다.
- method: ID 삽입 방법을 선택하며, "fidelity", "style", "neutral" 옵션이 있습니다. "fidelity"는 생성 품질이 저하되더라도 ID 참조와의 최대 유사성을 우선시합니다. "style"은 ID 충실도를 낮추면서 모델의 원래 생성 기능 보존에 중점을 둡니다. "neutral"은 둘의 균형을 맞춥니다.
- weight: ID 삽입의 강도를 0(효과 없음)에서 5(매우 강함)까지 제어합니다. 기본값은 1입니다. 가중치가 높을수록 ID 충실도가 향상되지만 모델의 원래 생성을 무시할 위험이 있습니다.
- start_at: PuLID ID 맞춤화 적용을 시작할 디노이징 단계(0에서 1 사이의 백분율)입니다. 기본값은 0으로, 첫 번째 디노이징 단계부터 ID 삽입을 시작합니다. ID 삽입을 디노이징 프로세스의 나중에 시작하도록 증가시킬 수 있습니다.
- end_at: PuLID ID 맞춤화 적용을 중지할 디노이징 단계(0에서 1 사이의 백분율)입니다. 기본값은 1로, 디노이징이 끝날 때까지 ID 삽입을 적용합니다. ID 삽입을 최종 디노이징 단계 전에 중지하도록 줄일 수 있습니다.
"Apply PuLID" 선택적 입력:
- attn_mask: ID 맞춤화가 적용되는 위치를 공간적으로 제어하기 위한 선택적 그레이스케일 마스크 이미지입니다. 마스크의 흰색 영역은 전체 ID 삽입 효과를 받고, 검은색 영역은 영향을 받지 않으며, 회색 영역은 부분적인 효과를 받습니다. ID를 얼굴 영역에만 국한시키는 데 유용합니다.
"Apply PuLID" 출력:
- MODEL: PuLID ID 맞춤화가 적용된 입력 모델입니다. 이 맞춤화된 모델은 이미지 생성을 위해 다른 ComfyUI 노드에서 사용할 수 있습니다. 생성된 이미지는 프롬프트를 통해 제어 가능하면서도 ID를 묘사합니다.
이러한 매개변수를 조정하면 ID 충실도와 생성 품질의 원하는 균형을 달성하기 위해 PuLID ID 삽입을 미세 조정할 수 있습니다. 일반적으로 "neutral" 방법으로 가중치 1을 사용하면 신뢰할 수 있는 시작점이 되며, 결과에 따라 조정할 수 있습니다. start_at과 end_at 매개변수는 디노이징에서 ID가 적용되는 시점을 추가로 제어할 수 있으며, attn_mask를 통해 효과를 국한시킬 수 있습니다.
자세한 내용은 을 참조하세요.