그 전 시간에는 ComfyUI의 워크플로우에서 기본적인 노드생성만을 설명하느라 ComfyUI 장점과 단점에 대한 얘기를 하지 못했다. WebUI나 Forge가 있는데 굳이? 하는 사람도 있을테니 말이다. 또한 기본 노드 외에 디테일한 이미지 조절을 위한 커스텀 노드들을 편하게 설치하거나 관리할 수 있는 ComfyUI Manager 설치 방법도 추가해보았다.
1. ComfyUI 장점과 단점
장점 | 단점 |
|
|
결론적으로 전체적인 구조와 원리를 알고 세부적인 컨트롤을 하고 싶어하는 성향의 사람들이라면 ComfyUI 로 하는 작업이 꽤나 흥미로울것이라 생각한다.
2. ComfyUI 기본 사용법
ComfyUI 사용법을 알기 위한 가장 좋은 방법은 샘플을 사용하는 것이다. 이 글에서도 간단한 text-to-image 워크플로우를 구성하면서 ComfyUI에 대해 설명해보려 한다. 이를 통해 가장 핵심적인 것을 이해하면, 직접 튜닝할 수 있는 방법도 차차 알게 될것이다.
기본적인 제어 방법
- ComfyUI에선 마우스만으로 거의 모든 제어가 가능하다.
- 마우스휠 (또는 두손가락 벌리기)을 사용해서 확대 또는 축소
- 빈 캔버스를 마우스로 클릭하고 드래그하면 캔버스를 이동
- 노드와 노드사이를 링크로 연결때는 마우스를 드래그&드롭(물론 서로 호환되는 경우에만 연결이 되고 아니면 그냥 취소)
- Cont-Enter 를 치면 현재 설정이 대기열(Queue)로 들어가게 됨
3. ComfyUI 기본 워크플로우 구성 노드 설명
이 기본 화면에는 여러개의 사각박스(노드)와, 이들 박스를 서로 연결하는 링크로 구성된다. 이들 노드는 세 부분으로 구성된다.
- 입력 슬롯: 노드 왼쪽에 있는 점으로, 여기에 링크가 연결됨.
- 출력 슬롯: 노드 오른쪽에서 링크가 연결되는 점.
- 파라미터: 블록 아래쪽에 있는 여러가지 필드들.
링크는 바로 각각의 노드의 출력 슬롯과 입력슬롯을 연결해주는 선을 말한다.
Load Checkpoint 노드- 체크포인트 모델을 선택하는 곳이다. (ComfyUI 폴더의 모델>체크포인트 폴더에 있는 파일이 리스트업 되고 기존 WebUI폴더의 모델도 연결해두었다면 리스트업 된다.)
Clip Text Encoder 노드- 기본적으로 입력된 프롬프트를 토큰으로 변환한 후, 이를 임베딩(embeddings)으로 인코딩하는 역할을 한다. 두개의 노드가 있는데 위쪽은 긍정 프롬프트, 아래쪽은 부정프롬프트를 넣는다. 쓰는 방식은 WebUI와 동일함.
Emptry latent image 노드
text-to-image 프로세스는 잠재 공간(latent space)에서 랜덤(무작위) 이미지를 처리하여 이미지를 생성하는데 Embty Latent Image 노드는 바로 이 랜덤 이미지를 생성해서 샘플러 노드에 전달하는 기능을 한다.
width와 height는 실제 이미지의 크기와 동등하므로, 최종 이미지의 크기를 여기에서 결정한다(확대기(Upscaler)를 사용할 경우 달라짐). 따라서 이 노드에서 width와 height를 변경하면 생성되는 이미지의 크기를 설정할 수 있다.
또한 batch_size는 한번에 생성하는 이미지의 수를 결정한다.
KSampler 노드
KSampler는 스테이블 디퓨전을 통한 이미지 생성에서 가장 핵심이다. 샘플러는 무작위 랜덤 이미지로부터 텍스트 프롬프트에 맞도록 노이즈를 순차적으로 제거하면서 이미지를 생성하는 기능을 하는데 그 중에서 KSampler란 이 저장소에서 구현한 샘플러를 말한다.
- 씨드(Seed): 잠재 이미지의 초기 잡음을 제어하는 무작위 씨드 값으로 이 번호를 사용하여 초기 랜덤 이미지를 구성한다.
- control_after_generate: 이미지를 생성한 후, 씨드 값을 어떻게 할지를 결정한다.
randomize - 무작위로 바뀌게 할 수도 있음, increment & decrement - 1씩 증가 및 감소, fixed 같은 값으로 고정 - 단계수(steps) : 샘플링 단계의 수 : 높은 값을 입력할 수록 결함이 줄어들지만 시간은 오래걸린다. 모델마다 적정값이 있으므로 참고해서 정한다.
- 샘플러 이름(sampler name): 다양한 샘플러 리스트 중 하나를 선택한다. 모델과 잘 맞는 샘플이 있으므로 알아보고 정하면 생성 결과가 더 좋다.
- 스케줄러(Scheduler): 각 단계별로 노이즈를 얼마나 제거할지를 결정한다. 매 단계별로 일정한 분량 만큼 제거하는 알고리즘도 있고, 처음엔 많이 제거하고 뒤로 갈수록 제거하는 양이 줄어드는 알고리즘도 있다.
- Denoise(잡음 제거량): 최초의 잡음을 얼마나 제거할지를 결정하는데 1은 전체를 제거한다는 뜻이다.
4. 텍스트-이미지(Txt2Img) 작업 방법
먼저 ComfyUI를 사용해서, 텍스트 프롬프트를 입력해 이미지를 생성하는 방법을 알아보자.
ComfyUI를 처음으로 실행시키면 아래와 같은 화면이 나타난다. 이 화면이 아닐 경우, [Load Default] 버튼을 누르면 이 화면으로 초기화 된다.
1. Load checkpoint에서 모델을 선택한다.
2. CLIP Text Encode(Prompt) 에 긍정과 부정 프롬프트를 입력한다.
3. Empty Latent image 노드에서 사이즈와 생성 갯수를 입력한다.
4. KSampler에 있는 각각의 항목을 선택한다.
5. Queue Prompt 버튼을 눌러서 이미지를 생성한다.
위에 설명한 방법이나 구성 노드는 가장 기본적인 워크플로우 구성이라고 할 수 있다. 모델에 따라 그에 필요한 커스텀 노드를 추가로 생성하면서 작업을 하다보면 복잡해지는 워크플로우를 보면서 내가 이것을 왜 시작했을까 하는 현타가 올 수도 있다. 그럴땐 잠시 Webui로 옮겨갔다 오는것도 방법.^^
ComfyUI Manager 설치 방법
ComfyUI Manager는 다른 커스톰 노드 혹은 모델들을 설치하고 관리해주는 커스텀 노드이다. 수많은 커스톰 노드를 쉽게 관리할 수 있어 거의 필수적라고 할 수 있으니 시작 전 미리 깔고 시작하면 되겠다.
ComfyUI 내에 있는 custom_nodes 폴더를 우클릭 메뉴에서 터미널을 열면 된다.
그 다음 아래의 명령을 실행시킨다.
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
그 다음 ComfyUI를 새로 시작되면 ComfyUI Manager 가 적용되는것을 알 수 있다. Manager 버튼을 누르면 다음과 같은 ComfyUI Manager Menu가 나타난다.
- [Install Custom Nodes] 커스톰 노드를 설치/제거할 수 있다.
- [Install Missing Custom Nodes] 현재 워크플로에 있지만, 빠진 노드를 설치해준다. 특히 다른 사람이 생성한 워크플로를 가져와서 사용할 경우, 그 사람이 사용했던 커스톰 노드중에서 자신에게 없는 노드를 자동으로 설치해 줘서 매우 유용하다.
- [Install Model] 체크포인트 모델, AI 확대기 모델, VAE, LoRA, ControlNet 모델 등을 설치.
- [Update ComfyUI] ComfyUI를 업데이트한다.
- [Fetch Updates] 커스톰 노드의 업데이트를 확인하고 재시작해야 적용된다.
- [Alternatives of A1111] 잘 모르겠는데, AUTOMATIC1111 확장중에서 ComfyUI에서 사용가능한 것을 검색하고 설치한다.
- [ComfyUI Community Manual] 매뉴얼을 볼 수 있다.
- [Install Custom Nodes] 메뉴를 누르면 아래와 같은 화면이 난다. 여기에서 사용가능한 커스톰 노드를 찾아보고 설치/제거할 수 있다.
오늘은 가장 기본적인 워크플로우와 노드설명, 그리고 매니저 설치법을 공유해보았다. 정리해서 올릴려니 내용이 너무 많아서 자꾸 아쉬움이 생긴다. 하지만 하나씩 하나씩!!
'스터디' 카테고리의 다른 글
ComfyUI 메뉴얼 2-Custom Node 추천 및 설치 방법 (1) | 2024.11.28 |
---|---|
ComfyUI 메뉴얼 1 기본 사용법과 설정 (0) | 2024.11.26 |
M1 M2 M3 맥북에 ComfyUI 설치하기 (1) | 2024.11.20 |
윈도우용 아이클라우드 파일명 깨짐 현상 해결 방법 (0) | 2024.09.10 |
스테이블 디퓨전 Webui - 시비타이 모델 etherRealMix_4 (0) | 2024.08.08 |