스테이블디퓨전

[스테이블디퓨전] ComfyUI-ControlNet 설치하기 (모델의 포즈를 내 마음대로 변경, ControlNet-Union)

푸푸놀이터 2024. 10. 6. 23:46

#푸푸놀이터

 

 

스테이블디퓨전으로 모델을 생성하다보면, 프롬프트만으로 해결하기 힘든 부분들이 있습니다. 원하는 포즈나 디테일한 표정, 그리고 잘 못 나온 부분만 수정하는 기능 등등, 스테이블디퓨전에는 이런 세세한 부분을 수정할 수 있는 기능들이 있습니다. 이번 포스팅은 그런 기능들 중 ControlNet 에 대해 알아보겠습니다.

 

ControlNet 의 대표적인 기능은 Open Pose입니다. 생성하려는 모델의 자세를 내가 원하는 자세로 만들 수 있게 보조해 주는 기능인데요. 처음 시작은 Open Pose 하나롤 시작되었지만 지금은 다양한 추가적인 기능을 통해 여러 조건을 만족하는 기능들을 사용할 수 있습니다. 

 

설치하는 방법부터 사용하는 방법까지 하나하나 천천히 기록해 보겠습니다. 보시면서 따라해보세요.

 

 

 

 


 

1. 파일 다운로드 및 설치하기

 

1) ControlNet - Union 은 기존 ControlNet의 기능을 통합하여 파일 용량을 줄인 버전이며, 지금은 SDXL만 지원하고 있습니다. 아래 링크를 통해 사이트로 이동해주세요.

 

https://huggingface.co/xinsir/controlnet-union-sdxl-1.0

 

xinsir/controlnet-union-sdxl-1.0 · Hugging Face

ControlNet++: All-in-one ControlNet for image generations and editing! ProMax Model has released!! 12 control + 5 advanced editing, just try it!!! Network Arichitecture Advantages about the model Use bucket training like novelai, can generate high resoluti

huggingface.co

 

 

 

2) Files and versions 를 눌러줍니다.

 

 

 

3) 파일을 다운로드 합니다. (저는 promax 버전으로 다운 받았습니다.)

 

  - diffusion_pytorch_model.safetensors : v1.0 초기 출기 버전입니다.

  - diffusion_pytorch_model_promax.safetensors : 12ea 컨트롤넷 + 5ea 고급편집이 추가된 최신 버전입니다.

 

 

 

 

4) 다운로드 받은 파일을 아래 폴더에 넣어줍니다.

 

>  ComfyUI_windows_portable  >  ComfyUI  >  models  >  controlnet  >  SDXL

 

 

 

 

5) ComfyUI 를 실행합니다. ControlNet Union sdxl 은 SDXL 모델만 사용가능합니다

 

 

 


 

2. 워크플로 셋팅하기

 

 

1) ComfyUI 기본셋팅으로 시작하겠습니다. Load Default 를 눌러서 기본 워크플로를 불러옵니다.

 


 

 

2) Checkpoint 를 선택

 

- ControlNet Union sdxl 은 SDXL 모델만 사용가능합니다. Checkpoint와 Lora를 선택할 때 주의하세요.

 

- 저는 Juggernaut XL 모델을 사용하였습니다. 필요하신 분은 아래 링크로 다운 받으실 수 있습니다.

- Juggernaut XL 모델은 실사이미지 생성에 많이 사용되는 모델입니다. 사실적인 사진같은 이미지 생성에 좋습니다.

 

https://civitai.com/models/133005?modelVersionId=782002

 

Juggernaut XL - Jugg_XI_by_RunDiffusion | Stable Diffusion XL Checkpoint | Civitai

UPDATE: Added Lightning Version for Version XI For business inquires, commercial licensing, custom models, and consultation contact me under jugger...

civitai.com

 

 


 

3) LoRA를 추가

 

- LoRA는 본인이 만들고 싶은 스타일에 맞춰서 자유롭게 선택합니다. 따로 스타일이 없다면 아래 내용을 참고하세요.


- 바탕을 더블 클릭하여, 노드 검색란에 "load lora" 또는 "lora" 라고 입력하고 "Load LoRA" 노드를 추가합니다.

 

 

- 저는 노드 총 3개 사용하여 진행하였습니다.  제가 추가한 Lora 는 아래 링크에 남겨놓겠습니다.

 

 

 (1) LCM-LoRA Weights - Stable Diffusion Acceleration Module - LCM for SDXL (Latest)

https://civitai.com/models/195519/lcm-lora-weights-stable-diffusion-acceleration-module

 

LCM-LoRA Weights - Stable Diffusion Acceleration Module - LCM for SDXL (Latest) | Stable Diffusion XL LoRA | Civitai

LCM-LoRA - Acceleration Module! Tested with ComfyUI, although I hear it's working with Auto1111 now! Step 1) Download LoRA Step 2) Add LoRA alongsi...

civitai.com

 

 

 (2) Sinfully Stylish (dramatic lighting) - v0.2 For SDXL

https://civitai.com/models/340248?modelVersionId=407532

 

Sinfully Stylish (dramatic lighting) - v0.2 For SDXL | Stable Diffusion XL LoRA | Civitai

Sept 16th - Sept 23rd: 150,000 Buzz on the line in the Sinfully Stylish Image Generation Contest: https://civitai.com/bounties/4474/exuberant-conse...

civitai.com

 

 

 (3) Detailed Perfection style XL - Perfection SDXL v1.0

https://civitai.com/models/411088?modelVersionId=458257

 

Detailed Perfection style XL + F1D + SD1.5 (Hands + Feet + Face + Body + All in one) - Perfection SDXL v1.0 | Stable Diffusion X

Update : Please if you see any of my models somewhere else report or let me know! Thnx Trained on base model xl 1.0 Update: SD1.5 version added. Pl...

civitai.com

 


 

4) 기본 노드 연결

 

 - 기존 노드와 추가한 로라 노드를 연결합니다. 연결 방법은 아래를 따라합니다.

 

 

Checkpoint 와 Load LoRA 연결 (Model 루트)

 

 (1) Load Checkpoint 의 MODEL 루트를 Load LoRA(1번) 노드의 model 루트와 연결합니다 (빨간색 선 참고)

 (2) Load LoRA(1번) 의 MODEL 루트를 Load LoRA(2번) 노드의 model 루트와 연결합니다 (노란색 선 참고)

 (3) Load LoRA(2번) 의 MODEL 루트를 Load LoRA(3번) 노드의 model 루트와 연결합니다 (파란색 선 참고)

 (4) Load LoRA(3번) 의 MODEL 루트를 KSampler 노드의 model 루트와 연결합니다 (녹색색 선 참고)

 

 

 

Checkpoint 와 Load LoRA 연결 (Clip 루트)

 

 (1) Load Checkpoint 의 CLIP 루트를 Load LoRA(1번) 노드의 clip 루트와 연결합니다 (빨간색 선 참고)

 (2) Load LoRA(1번) 의 CLIP 루트를 Load LoRA(2번) 노드의 clip 루트와 연결합니다 (노란색 선 참고)

 (3) Load LoRA(2번) 의 CLIP 루트를 Load LoRA(3번) 노드의 clip 루트와 연결합니다 (파란색 선 참고)

 (4) Load LoRA(3번) 의 CLIP 루트를 CLIP Text Encode 노드(위, 아래 두개)의 clip 루트와 연결합니다 (녹색색 선 참고)

 


 

5) 설정 값 셋팅

 

LoRA 설정

(1) LCM-LoRA Weights : (Strength_model : 0.7)

(2) Sinfully Stylish (dramatic lighting)  : (Strength_model : 0.7)

(3) Detailed Perfection style XL  : (Strength_model : 0.7)

 

KSampler 설정

(1) Control_before_genarate : (rendomize) - Seed 값을 랜덤으로 생성됩니다.

(2) Steps : (30)  - Lcm을 사용하기 때문에 스텝은 3~10까지만 사용해도 결과물은 나오지만 완성도가 떨어질 수 있습니다.

(3) cfg : (3.0) - cfg 값은 1.5 이상 ~ 6.0 이하로 사용하시는 것을 추천드립니다.

(4) sampler_name : (lcm) - 빠르게 이미지를 생성합니다.

(5) scheduler : (normal)

 


 

6) 프롬프트 작성

 

만들려는 이미지의 프롬프트를 작성합니다.

 

- CLIP Text Encode (Prompt) Positive

16 year old cute girl, long hair, pretty face, makeup, detailed face, standing, upper body, studio, simple background, high quality, realistic, raw, t-shirt, shorts,

 

- CLIP Text Encode (Prompt) Negative

nsfw, bad eyes, cgi, airbrushed, plastic, deformed, watermark

 

 

이렇게 셋팅이 끝났으면, Queue Prompt 를 눌러서 이미지를 생성합니다.

 

 


 

 

7) ControlNet 노드 설치

 

 (1) ComfyUI 를 실행시키고 Manager 를 열어줍니다.

 

 (2) Manager 에서 Custom Nodes Manager를 열어줍니다.

 

 

 

(3) 검색창에 "preprocessors" 라고 검색하면, ComfyUI's ControlNet Auxiliary Preprocessors 라는 노드가 검색됩니다. 이 노드를 설치 합니다. 

 

 

 

(4) 검색창에 "art venture" 라고 검색하면, comfyUI-art-venture 라는 노드가 검색됩니다. 이 노드를 설치 합니다. 

 

 

 

(5) 설치가 완료되면, ComfyUI 를 재시작 합니다.

 

 


 

8) 워크플로 추가

 

 

(1) 바탕을 더블 클릭하여, 노드 검색란에 "Apply Contolnet" 이라고 입력하고 "Apply ContolNet " 노드를 추가합니다.

 

 

- 꺼낸 Apply ControlNet 노드를 CLIP Text Encode 노드와 KSampler 노드 중간에 배치합니다.

 

 

 - CLIP Text Encode Positive CONDITIONINGCLIP 루트를 Apply ControlNet의 positive루트와 연결 (빨간색 원 참고)

 - CLIP Text Encode Negative CONDITIONINGCLIP 루트를 Apply ControlNet의 negative루트와 연결 (노란색 원 참고)

 - Apply ControlNet의 positive 루트를 KSampler노드의 positive루트와 연결 (파란색 원 참고)

 - Apply ControlNet의 negative 루트를 KSampler노드의 negative루트와 연결 (녹색 원 참고)

 


 

 

(2) 바탕을 더블 클릭하여, 노드 검색란에 "contolnet" 이라고 입력하고 "Load ControlNet Model" 노드를 추가합니다.

 

 

 

- Load ControlNet Model 노드의 CONTROL_NET루트를 Apply ControlNet의 control_net루트와 연결합니다.

- Load ControlNet Model 노드의 contol_net_name에서 ControlNet-Union을 선택합니다.

 


 

 

(3) 바탕을 더블 클릭하여, 노드 검색란에 "preprocessor" 이라고 입력하고 "ControlNet Preprocessor " 노드를 추가합니다.

 

 

 

 - Load Image 노드를 꺼내서 IMAGE루트를 ControlNet Preprocessors의 image루트에 연결합니다. (빨간색 원 참고)

 - Preview Image 노드를 꺼내서 image루트를 ControlNet Preprocessors의 IMAGE루트에 연결합니다.  (노란색 원 참고)

 - ControlNet Preprocessors의 IMAGE루트를 Apply ControlNet노드의 image루트와 연결합니다. (녹색 원 참고)

 

 


 

 

 

9) ControlNet 사용하기.

 

 

(1) ControlNet Preprocessors 노드의 preprocessors 를 눌러보면 여러가지 ControlNet 기능을 볼 수 있습니다. 여기서 depth를 선택해 줍니다. depth는 이미지의 깊이감(입체감)을 그대로 재현해줍니다. 

 

 

Queue Prompt를 누루고 결과를 기다리면, ControlNet Preprocessors 에서 입력된 이미지(Load Image)를 분석하고, Preview Image에 추출한 데이터를 보여줍니다. 그리고 추출한 데이터를 Apply ControlNet으로 보내서 최종이미지를 생성합니다.

 

 

 

완성된 결과물을 비교해보겠습니다. 같은 포즈와 깊이감이 잘 표현된 것을 확인 할 수 있습니다.

원본이미지 Depth로 생성한 이미지

 

 

ControlNet에는 Depth 말고도 다양한 기능들이 있습니다. 본래 기능을 사용하기 위해서는 각 기능들에 해당하는 파일들을 전부 다운 받아서 설치해야했기 때문에 용량도 많아지고 노드 관리도 쉽지 않았습니다. 하지만, ControlNet-Union 은 이런 기능들을 전부 모아 놓고 용량도 작아서 사용하기 편합니다. 현재 SDXL 과 FLUX 모델이 사용가능합니다. 

 


 

 

10) ControlNet 기능 설명

 

ControlNet은 Stable Diffusion의 확장 기능 중 하나로, 이미지 생성 과정에서 특정한 입력을 추가하여 보다 세밀한 제어를 가능하게 합니다. ControlNet은 이미지의 구조나 모양, 동작 등을 구체적으로 지정할 수 있는 다양한 입력 방식을 지원하며, 이를 통해 더 정교하고 원하는 결과에 가까운 이미지를 생성할 수 있습니다. 아래에서 ControlNet의 주요 기능을 설명드리겠습니다.

 

 

1. Canny

  • Canny는 가장자리 검출 알고리즘입니다. 이미지를 생성할 때, Canny 엣지 맵을 사용하여 이미지의 주요 윤곽을 따라 생성합니다. 주로 경계선이나 물체의 형태를 유지하면서 그 내부를 채우는 방식으로 동작합니다.

2. Lineart

  • Lineart는 선화 기반으로 이미지를 생성하는 기능입니다. 일반적으로 만화나 스케치 스타일의 이미지에서 유용하며, 선화 이미지를 입력으로 사용해 그 위에 세부적인 채색이나 텍스처를 입힌 이미지를 생성합니다.

3. Scribble

  • Scribble은 단순한 낙서나 간단한 선을 입력으로 사용해 이미지를 생성합니다. 사용자가 대략적인 형태를 선으로 그리면, 이를 기반으로 완성된 이미지를 만들어냅니다. 사용자의 창의적인 아이디어를 시각화하는 데 유용한 기능입니다.

4. HED (Holistically-Nested Edge Detection)

  • HED는 이미지에서 경계를 탐지하는 알고리즘으로, 이미지 전체의 중요한 윤곽을 감지하여 보다 복잡한 이미지를 생성할 수 있습니다. 이는 Canny와 비슷하지만, 더 세밀하고 다양한 윤곽선을 감지할 수 있습니다.

5. PIDI (PIDinet)

  • PIDI는 엣지 감지에 특화된 경량 신경망입니다. 이 기능을 통해 경계선이 강조된 이미지를 생성하거나 윤곽을 더 명확하게 표현할 수 있습니다. PIDI는 속도와 효율성을 중시하는 환경에서 유용하게 사용됩니다.

6. OpenPose

  • OpenPose는 사람의 포즈를 감지하는 기능입니다. 주로 사람의 신체 관절이나 자세를 기반으로 이미지를 생성하며, 인체 동작을 세밀하게 제어할 수 있습니다. 예를 들어, 특정 포즈를 한 캐릭터 이미지를 생성하는 데 매우 유용합니다.

7. Depth

  • Depth 기능은 이미지의 깊이 정보를 활용하여 3D 같은 입체감을 가진 이미지를 생성합니다. 이를 통해 이미지의 원근감이나 물체의 상대적 위치를 더 현실감 있게 표현할 수 있습니다.

8. Seg (Segmentation)

  • Seg는 이미지 내의 각 객체나 영역을 구분하는 기능입니다. 이미지를 여러 섹션으로 나누고, 각 섹션별로 다른 텍스처나 스타일을 적용해 복합적인 이미지를 생성할 수 있습니다.

 

 

 

이 기능 이외도 더 많은 기능들이 있으니, 아래 링크를 통해 확인해보시고 다양한 기능을 사용해 보세요.