AI 이미지/워크플로 따라하기

LoRA는 필요없다 - ComfyUI IP-Adapter

하늘이푸른오늘 2024. 2. 6. 14:05

스테이블 디퓨전에서 어떤 특정한 인물의 얼굴을 넣으려면 LoRA를 학습시키거나 또는 dreambooth 를 사용해 checkpoint모델을 학습 시켜야 합니다.하지만, 새로운 모델을 학습시키는 것은 매우 시간이 걸리는 일입니다. 그런데, 이렇게 학습시킬 필요 없이 어떤 얼굴을 즉시 삽입할 수 있다면 어떨까요?

이 ComfyUI 워크플로는 입력 이미지로부터 어떤 인물의 얼굴을 복사합니다. 마치 맞춤형 LoRA체크포인트 모델처럼 사용할 수 있지만, 학습 시킬 필요는 없는 겁니다. 심지어는 매우 빠르고 편리합니다.

소프트웨어

이 글에서는 스테이블 디퓨전용 GUI중에서도 빠르면서도 유연하여 사용자 저변을 급속히 확대하고 있는 ComfyUI를 사용합니다. ComfyUI가 처음이시라면, 설치 및 기본 사용방법초보가이드를 확인하시기 바랍니다. 

이 글에서는 IP-Adapter 중에서 FaceID Plus v2 모델을 사용합니다. FaceID 모델은 입력 이미지에서 얼굴을 추출하여 임베딩으로 변환한 뒤 IP-Adapter에 공급하고, IP-adapter 는 이미지 생성에 대한 조건부여(conditioning)을 제공합니다.

따라하기

1 단계: ComfyUI 워크플로 불러오기

아래의 json 파일이나 이미지를 다운로드받고, 이를 ComfyUI 메뉴중 [Load]를 눌러 선택하거나, 그냥 ComfyUI 화면에 Drag&Drop하면 워크플로를 사용할 수 있습니다. 

Instant-lora.json
0.02MB

대부분 그냥 그대로 사용할 수 있지만, 때때로 오류가 발생할 수 있습니다. 그러한 경우, 다음과 같은 작업이 필요할 수 있습니다.

2 단계: InsightFace 설치하기

FaceID 모델을 사용할 경우, 별도로 InsightFace를 설치해야 합니다. 

이를 위해서는 먼저 ComfyUI의 Python 버전부터 확인해야 합니다.  파일 탐색기를 열어 ComfyUI_windows_potable 폴더로 들어간 후, 주소에 cmd를 입력하고 Enter 키를 누릅니다.

그러면 터미널 창이 열리는데, 여기에 아래의 명령을 입력하고 엔터를 누릅니다.

.\python_embeded\python.exe --version

그러면 Python 3.10.x 또는 Python 3.11.x라고 나타날 것입니다. 이에 맞춰 아래 설치파일을 다운로드 받습니다.

이들 파일을 ComfyUI_windows_portable 폴더에 넣어줍니다.

다음으로 터미널로 돌아가 아래 명령을 수행해 줍니다.

Python 3.10.x 의 경우

.\python_embeded\python.exe -m pip install .\insightface-0.7.3-cp310-cp310-win_amd64.whl

Python 3.11.x의 경우

.\python_embeded\python.exe -m pip install .\insightface-0.7.3-cp311-cp311-win_amd64.whl

이러면 Insight Face 가 설치가 완료됩니다. 터미널을 새로 시작한다거나 화면을 Refresh시켜줄 필요 없습니다.

3단계: 입력 이미지

4개의 [Load Image] 노드에 이미징를 올려줍니다. 원하시면 이 파일을 다운로드 받아 사용하셔도 됩니다. 저는 그냥 인터넷에서 어렸을 적 아역배우로 너무 성공하는 바람에 고생한 비운의 여배우 김민희 님의 사진을 사용했습니다. 

4단계: 체크포인트 모델 선택

원하는 모델을 선택합니다. 원본 글에서는 Realistic Vision 모델을 사용했지만, 저는 동양인 여자가 많이 학습된 ChilloutMix 모델을 사용했습니다. 파일은 ComfyUI\models\checkpoints에 넣어주시면 됩니다(AUTOMATIC1111과 모델을 공유할 경우 여기를 읽어보세요). 파일을 다 받은 후에는 ComfyUI 화면을 새로고침(F5)해주세요.

5단계 : IP-adapter 모델 설정

IP adapter 모델 

Face ID Plus v2 IP-adapter 모델을 다운로드 받아, ComfyUI\models\ipadapter 폴더에 넣어줍니다(폴더가 없으면 그냥 새로 생성해서 넣어주시면 됩니다). 파일을 다 받은 후에는 ComfyUI 화면을 새로고침(F5)하고, 아래 그림과 같이 [Load IPAdapter Model] 노드에서 선택합니다.

CLIP Vision 모델

SD 1.5 CLIP Vison 모델을 다운로드 받습니다. 파일명을 clip_vision_ViT_H_sd15.safetensors로 바꿔주고 ComfyUI\models\clip_vision 폴더에 넣어줍니다. 파일을 다 받은 후에는 ComfyUI 화면을 새로고침(F5)하고, 아래 그림과 같이 [Load CLIP Vision] 노드에서 선택합니다.

Face ID Plus v2 LoRA 모델

Face ID 계통의 IP-adapter 는 LoRA모델과 함께 사용하는 것이 좋습니다(자세한 내용은 여기를 읽어보세요) ip-adapter-faceid-plusv2_sd15_lora.safetensors  파일을 다운로드 받아 ComfyUI\models\loras 폴더에 넣어줍니다. 파일을 다 받은 후에는 ComfyUI 화면을 새로고침(F5)하고, 아래 그림과 같이 [LoraLoaderModelOnly] 노드에서 선택합니다.

6단계 : 이미지 생성

이제 메뉴에서 [Queue Prompt]를 누르면 이미지가 생성됩니다. 김민희 배우님 얼굴이 너무 잘 살아있어 기분이 좋네요.

모델 : Realistic Vision
프롬프트: closeup photo of a woman wearing kimono in a Japanese garden, high quality, diffuse light, highly detailed, 4k

다른 인물 실험

김태리님

다른 배우님들로도 생성해봤습니다. 기모노를 입은 모습이 예쁘긴 하지만 그래도 좀 아니다 싶어서, 아래는 프롬프트를 "closeup photo of a beautiful woman, in office, high quality, diffuse light, highly detailed, 4k"으로 바꾸고, 김태리 배우님 사진을 사용했습니다. 좀어리게 보이지만 예쁘게 잘나왔네요.

조인성님

여배우들만 소환하니 뭐라할 것 같아 조인성 배우님 사진을 사용해봤습니다. 아래는 RealisticVision 모델을 사용하고, 프롬프트는 "closeup photo of a man, in office, high quality, diffuse light, highly detailed, 4k" 로 해서 생성한 결과입니다. 여기도뭔가 혼혈인 분위기네요.

아래는 ChilloutMix 모델을 사용한 결과인데... 어딘가... 어색하다 싶네요.

마지막으로 henMixReal 모델을 사용했을 때입니다. 그나마 제일 닮은 것 같기는 한데, 훨씬 어려진 모습이네요. ㅎㅎ

송혜교님

그런데 송혜교 배우님 사진을 사용하고 프롬프트는 "a beautiful woman"으로 생성했는데, 예쁘긴 하지만 얼굴은 좀 글쎄다 싶네요. 

모델을 Realistic Vision으로 바꾸니 많이 나아졌는데, 그래도 딴사람 같습니다.

모델을 IP-adapter 모델을 Face ID Plus v2 SDXL로 바꾸고, 체크포인트 모델을 JuggernautXL로 바꿔서 실험해봤더니 더 참담하네요.

아래는 몇번 실험을 거쳐 그나마 괜찮다고 생각한 결과물입니다. IP-adapter 모델은 SD1.5 Face ID  입니다. 

테스트 결과 요약

이상에서 볼 수 있는 것처럼, 김민희 배우님처럼 IP-Adapter를 적용하여 거의 현실인물과 구분이 불가능할 정도로 잘 생성되는 분도 있지만, 송혜교님 처럼 이런 저런 설정을 많이 바꿔도 닮은 얼굴을 만들기 힘든 경우처럼 다양한 경우가 발생합니다. 이렇게 보면, IP-adapter만으로 LoRA를 완전히 대체할 수 있다는 건 좀 과장되었다 해야할 것 같습니다. 그렇다고는 해도, 일단 얼굴이 잘 복제되면 그 다음부터는 아주 쉽게 사용할 수 있으니 상당한 장점이 있다고 해야 할 것 같고요.

특히 위의 실험에서 볼 수 있는 것처럼 어떤 인물인지, 어떤 사진을 사용했는지, 체크포인트 모델아니 IP-adapter 모델을 어떤 것으로 사용했는지에 따라 결과물의 차이가 심하므로, 여러번 테스트가 필요합니다. 위에서 송혜교님의 경우엔 비슷한 얼굴을 생성하기 아주 힘들었지만, 좀더 실험해보면 괜찮은 조합을 찾을 수 있지 않을까 싶네요.

참고로, 아래는 제가 좋아하는 SD1.5용 Efficient 노드를 수정해서 IP-Adapter를 적용할 수 있도록 수정한 워크플로입니다. 그림이나  json 파일을 다운로드 받아서 사용하시면 됩니다.

IP-Adapter_Efficient.json
0.02MB

이상입니다. 이 글은 https://stable-diffusion-art.com/instant-lora-workflow-comfyui/ (회원전용)을 수정하여 작성한 글입니다. 많은 도움이 되셨기를~

민, 푸른하늘

====