바라보는 방향이 달라져도 일관된 AI 캐릭터를 생성해야 하는 경우가 있으신가요? 이 글에서는 아래와 같이 동일한 캐릭터의 9x9 그리드를 그리는 방법을 설명합니다. 여러 이미지에 동일한 캐릭터가 필요한 아트웤에 사용할 수 있습니다.
소프트웨어
이 글에서는 가장 널리 사용되고 있는 스테이블 디퓨전용 웹 UI인 AUTOMATIC1111과, 점점 사용자가 늘어나고 있는 ComfyUI 를 사용합니다.
AUTOMATIC1111
AUTOMATIC1111은 스테이블 디퓨전 모델의 웹 GUI 중에서 가장 대중적이고 널리 사용되고 있습니다. 설치 방법은 이 글은 보시고, 메뉴를 비롯한 기초적인 내용은 AUTOMATIC1111 가이드를 읽어보세요.
ComfyUI
ComfyUI 는 노드 링크식으로 워크플로를 생성할 수 있어 아주 유연한 웹 UI입니다. ComfyUI를 설치하는 방법 및 기본적인 사용법은 이 글을 참고하시고, 이 글을 보시면 기타 ComfyUI를 사용할 때 유용한 정보를 만나실 수 있습니다.
이 워크플로의 작동 원리
체크포인트 모델
이 워크플로는 일부 SDXL 모델에서만 작동합니다. 다른 체크포인트 모델의 경우 직접 실험해 보시고 사용하셔야 합니다. 그 이유는 학습데이터 때문으로 보이며, "character sheet"라는 프롬프트 키워드에 반응하는 모델에서만 사용가능합니다.
시야각 그리드 제어
적절한 모델을 선택했다면, ControlNet을 적용하기 위한 템플릿이 필요합니다. 이 기법은 Canny SDXL ControlNet을 사용하여 아래 오른쪽과 같이 캐릭터 시트의 외곽선을 복제합니다.
![]() |
![]() |
ControlNet은 위와같은 컨트롤 이미지를 사용합니다. 새로운 참조 이미지를 사용하고 싶을 경우에는 먼저 제어 이미지를 전처리(preprocessing) 하여 원하는 세부 사항이 잘 들어 있는지 확인해보시는 것이 좋습니다.
얼굴 복제
이 글에서는 IP-adapter Face ID Plus v2를 사용해 다른 참조이미지로부터 얼굴을 복제합니다. 이 IP-adapter는 얼굴만 복제합니다. Insight Face를 사용하여 참조 이미지에 포함된 얼굴의 특징을 추출하므로, 여러 방향에서 바라본 얼굴도 정확하게 생성할 수 있습니다.
얼굴 보정
전체적인 일관성을 유지하기 위해, 1024x1024와 같이 SDXL에 호환되는 이미지 사이즈를 사용해야 합니다. 하지만, 이 경우 얼굴 크기가 작기 때문에 올바르게 렌더링되지 않을 수 있습니다.
여기에서는 높은 해상도로 자동 인페인트하는 방식으로 이를 수정합니다.
AUTOMATIC1111
체크포인트 모델
이 글에서는 ProtoVision XL 모델을 사용합니다. 다운로드 받은 뒤, stable-diffusion-webui/models/Stable-Diffusion에 넣어주시면 됩니다.
확장
이 글에서는 ControlNet과 ADetailer 확장을 사용합니다. 각각의 URL은 아래와 같습니다.
AUTOMATIC1111에서는 Extensions>Install from URL로 들어가서 위의 URL을 [URL for extension's git repository] 입력란에 넣어주고 [Install] 버튼을 눌러줍니다.
설치가 끝나면 AUTOMATIC1111을 완전히 새로 시작해줍니다.
다시 시작된 후, txt2img 페이지 아래의 ControlNet 섹션으로 내려가서 ControlNet Unit이 3개가 있는지 확인합니다. 아니라면 Settings->ControlNet으로 들어가 Multi-ControlNet: ControlNet unit number 를 3으로 설정한 뒤 새로 시작해줍니다.
IP-adapter 및 콘트롤넷 모델
이 글을 실행시키기 위해서는 아래와 같은 2개의 모델이 필요합니다.
이 파일들을 stable-diffusion-webui/models/ControlNet 폴더에 넣어줍니다.
1단계: txt2img 설정
txt2img 페이지에서 아래와 같이 설정합니다.
프롬프트: character sheet, color photo of woman, white background, blonde long hair, beautiful eyes, black shirt
부정적 프롬프트: disfigured, deformed, ugly, text, logo
샘플링 방법: DPM++ 2M Karras
샘플링 단계: 20
CFG 척도: 7
씨드: -1
이미지 크기: 1024x1024
2단계: controlNet 설정
txt2img 페이지 아래쪽 ControlNet 영역으로 내려가서 아래와 같이 설정합니다.
ControlNet Unit 0
ControlNet Unit 0에서는 Canny 를 사용합니다.
아래의 이미지를 자신의 컴퓨터에 다운로드 받은 후, ControlNet의 [Single Image]의 이미지 캔버스에 불러옵니다.
기타 ControlNet 설정은 아래와 같습니다. 나머지는 기본값으로 두시면 됩니다.
- Enable: Yes
- Pixel Perfect: Yes
- Control Type: Canny
- Preprocessor: canny
- Model: diffusers_xl_canny_mid
- Control Weight: 0.4
- Starting Control Step: 0
- Ending Control Step: 0.5
ControlNet Unit 1
ControlNet Unit 1에서는 얼굴을 복제하기 위해 IP-adapter를 설정합니다.
아래의 이미지를 자신의 컴퓨터에 저장하고, ControlNet Unit 1의 이미지 캔버스에 불러옵니다. 원하시면 다른 이미지를 사용하셔도 됩니다.
아래는 기타 설정입니다.
- Enable: Yes
- Pixel Perfect: No
- Control Type: IP-Adapter
- Preprocessor: ip-adapter_face_id_plus (or ip-adapter-auto)
- Model: ip-adapter-faceid-plusv2_sdxl (or ip-adapter-faceid_sdxl for Colab)
- Control Weight: 0.7
- Starting Control Step: 0
- Ending Control Step: 1
3 단계: ADetailer 설정
이 워크플로는 ADetailer를 사용해 얼굴을 자동적으로 수정합니다. 먼저 txt2img 페이지 아래쪽 ADtailer 영역으로 내려가서 아래와 같이 설정합니다. 나머지는 기본 값을 사용합니다.
- Enable ADetailer: Yes
4 단계: 이미지 생성
이제 [Generate]버튼을 누르면 이미지 생성 프로세스가 시작됩니다. 최종적으로 아래와 같은 이미지를 얻을 수 있습니다.
아래는 송혜교님의 얼굴을 사용해 생성해본 결과입니다. 그런데.. 전혀 닮질 않았네요. ㅠㅠ
ComfyUI
소프트웨어 설정
아래의 워크플로 다운로드를 받아, 화면에 Drag&Drop 합니다. 또는 메뉴 Workflow -> Open에서 아래 파일을 불러와도 됩니다.
대부분 그냥 그대로 사용할 수 있지만, 때때로 오류가 발생할 수 있습니다. 그러한 경우, 다음과 같은 작업이 필요할 수 있습니다.
- 처음 사용할 때 - ComfyUI Manager 를 설치해야 합니다.
- ComfyUI를 오랜만에 사용할 때 - ComfyUI를 최신버전으로 업데이트해야 합니다.
- 노드가 없다고 (빨간색) 경고가 뜰 때 - 빠진 커스톰 노드를 가져오기해야 합니다.
- 불러오기 혹은 수행중 에러 발생시 - 커스톰 노드를 업데이트해야 합니다.
체크포인트 모델
이 워크플로는 ProtoVision XL 모델을 사용합니다. 다운로드 받은 후, comfyui/models/checkpoints 폴더에 넣어주면 됩니다. (Automatic1111 과 모델을 공유할 경우, 이 글을 참고하세요)
ControlNet 모델
아래의 콘트롤넷 모델을 다운로드 받아 comfyui/models/controlnet 폴더에 넣어줍니다.
IP-adpater 모델
FaceID Plus v2 모델 (ip-adapter-faceid-plusv2_sdxl.bin) 을 다운로드 받아, comfyui/models/ipadapter 폴더에 넣어줍니다. 폴더가 존재하지 않으면 새로 생성하면 됩니다.
그 다음 FaceID Plus v2 LoRA 모델(ip-adapter-faceid-plusv2_sdxl_lora.safetensors)을 다운로드 받아, comfyui/models/loras 폴더에 넣어줍니다.
1 단계: 체크포인트 모델 선택
[Load Checkpoint] 노드에서 ProtoVision XL 모델을 선택합니다.
2 단계: ControlNet을 위한 참조 이미지 업로드
아래의 이미지를 다운로드 받은 후,
ControlNet Canny preprocessor에 업로드 해줍니다.
3 단계: IP-adapter 이미지 업로드
아래의 이미지를 다운로드 받은 후,
IP-adpater 그룹의 [Load Image] 노드에 불러옵니다.
4 단계: 이미지 생성
이제 [Queue] 버튼을 누릅니다. 그러면 아래와 같이 두가지 종류의 이미지가 생성됩니다. 오른쪽은 얼굴이 수정된 이미지입니다.
이번에도 전지현씨 얼굴로 시험해 봤습니다. 역시나 전지현씨와는 거리가 먼 얼굴이 생성되었네요.
참고
얼굴을 수정하는 프로세스는 상당히 시간이 걸리는 편입니다. 그러므로 프롬프트 테스트를 할 때에는 [FaceDetailer] 노드를 뮤트(Cntl-M)시키고 작업한 뒤, 마음에 드는 결과물이 나오면 또다시 Cnt-M을 누르고 이미지를 생성하면 됩니다.
문제 해결
FaceID를 사용하다보면 생각보다 얼굴이 닮지 않은 경우가 발생합니다. 이 경우 아래와 같이 조치해볼 수 있습니다.
- IP adapter의 control weight를 올려본다
- 반대로 IP adapter의 control weight와 Canny ControlNet의 ending control step 을 낮춰본다.
이떄 두 가지 ControlNet의 weight 합이 1보다 너무 많이 커지지 않도록 해야 합니다. 많이 커지면 결함이 발생하게 됩니다.
참고: 전지현님 사진으로 테스트해봤습니다만, 비슷한 얼굴을 생성하는데는 실패했습니다. 아마도 "character sheet" 키워드를 지원하는 다른 모델로 대체하면서 시험해봐야 할듯 싶은데, 제 역량 부족이네요. ㅠㅠ
참고: 저는 시험해보지 않았지만, 실제 사람 사진보다는 AI로 생성한 이미지를 참조이미지로 넣어주면 훨씬 잘나오는 걸로 압니다.
이상입니다.
이 글은 stable-diffusion-art.com 의 글을 번역하면서 필요에 따라 수정하여 작성한 글입니다.
민, 푸른하늘
- ComfyUI로 설치 및 사용법 기초
- ComfyUI 투토리얼
- ComfyUI를 위한 유용한 정보
- ComfyUI와 SDXL 사용법(1) - 기초
- ComfyUI에서 ControlNet 사용법
- 편리한 ComfyUI 워크플로 모음
- LCM-LoRA - 초고속 스테이블 디퓨전
- Stable Video Diffusion(비디오 스테이블 디퓨전)
- Stable Diffusion 인공지능 이미지 생초보 가이드
- Stable Diffusion 대표 UI - AUTOMATIC1111 설치방법
- Automatic1111 GUI: 초보자 가이드(메뉴 해설)
- Stable Diffusion에 대한 기본적인 이론
- ChatGPT로 스테이블 디퓨전 프롬프트 만들기