1. ComfyUI 시작하기 및 기본 개념 이해 [0]

thumbnail ComfyUI는 노드 기반 워크플로우를 통해 이미지 생성 과정을 시각적으로 구성하는 도구이며, 사용자 정의 노드와 모델 관리를 통해 무한한 가능성을 제공한다.

1.1. ComfyUI 인터페이스와 기본 기능 [0]

  1. ComfyUI의 첫 화면과 워크플로우 [1]
    1. ComfyUI를 처음 실행하면 기본 화면이 나타나며, 이는 워크플로우를 구성하는 시작점이다. [3]
    2. 워크플로우는 텍스트-이미지, 비디오 등 AI 기반 작업을 실행하는 데 사용된다. [12]
  2. 워크플로우 메뉴와 관리 [13]
    1. 상단 메뉴에서 이전 워크플로우를 열거나, JSON 파일로 저장 및 내보내기 할 수 있다. [14]
    2. 템플릿 탐색 기능을 통해 미리 설치된 다양한 워크플로우(기본, Stable Diffusion XL, 비디오 등)를 활용할 수 있다. [15]
    3. 온라인에서 다운로드한 워크플로우는 JSON 파일을 작업 공간으로 드래그 앤 드롭하여 불러올 수 있다. [19]
  3. 사용자 정의 노드와 오류 처리 [21]
    1. 워크플로우를 불러올 때 '누락된 노드 타입' 오류가 발생할 수 있으며, 이는 정상적인 상황이다. [21]
    2. 매니저 기능을 통해 누락된 사용자 정의 노드를 설치할 수 있다. [23]
    3. ComfyUI가 최신 버전이 아닐 경우 업데이트가 필요할 수 있으며, '업데이트 모두'는 ComfyUI와 사용자 정의 노드를 함께 업데이트하고, 'ComfyUI 업데이트'는 ComfyUI만 업데이트한다. [27]
  4. 모델 관리 및 큐 [38]
    1. 모델 관리자를 통해 ControlNet 모델 등 필요한 AI 모델을 검색하고 설치할 수 있다. [39]
    2. 큐는 이전에 렌더링했거나 현재 진행 중인 작업을 보여준다. [43]
    3. 워크플로우 실행은 '실행' 버튼을 누르며, '즉시 실행'으로 설정하면 계속해서 이미지를 생성할 수 있다. [44]
    4. '변경 시 실행' 옵션은 변경 사항이 있을 때마다 자동으로 이미지를 생성한다. [52]
  5. 작업 취소 및 노드 라이브러리 [55]
    1. '실행' 버튼 옆의 버튼은 대기 중인 작업을 취소하고, 빨간색 X는 현재 생성 중인 이미지를 취소한다. [57]
    2. 노드 라이브러리에는 모든 노드가 포함되어 있으며, 모델 라이브러리에는 설치된 AI 모델이 있다. [59]
  6. 워크플로우 탐색 및 설정 [63]
    1. 워크플로우는 JSON 파일로 로드할 수 있으며, 화면을 확대/축소하거나 스크롤하여 탐색할 수 있다. [64]
    2. '보기 맞춤' 기능은 작업 공간을 화면에 맞게 조정한다. [68]
    3. '선택 모드'와 '이동 모드'를 전환하여 노드를 선택하거나 작업 공간을 이동할 수 있다. 스페이스바를 누른 채 드래그하면 다른 종류의 이동 모드로 전환된다. [69]
    4. '링크 가시성 토글'은 노드 간 연결선(스파게티 줄)을 표시하거나 숨긴다. [73]
    5. '테마 토글'은 밝은 모드와 어두운 모드를 전환하며, '설정' 메뉴에서 ComfyUI 및 사용자 정의 노드 설정을 변경할 수 있다. [75]

1.2. ComfyUI의 장점과 사용자 정의 노드 [78]

  1. ComfyUI의 무한한 가능성 [82]
    1. ComfyUI는 무한한 가능성을 제공하며, 원하는 모든 것을 구축할 수 있다. [83]
    2. 필요한 기능이 없다면 사용자 정의 노드를 직접 만들어 추가할 수 있다. [85]
  2. 사용자 정의 노드의 역할 [86]
    1. 사용자 정의 노드는 ComfyUI에 기본적으로 존재하지 않는 기능을 추가할 때 사용된다. [86]
  3. 비용 및 하드웨어 요구 사항 [88]
    1. ComfyUI는 무료로 설치 및 사용 가능하지만, 고성능 하드웨어(GPU)가 필요하다. [88]
    2. 하드웨어 사양이 부족할 경우 Think Diffusion과 같은 클라우드 솔루션을 이용할 수 있다. [92]
  4. 워크플로우 공유의 용이성 [95]
    1. 생성된 이미지를 ComfyUI로 드래그하여 해당 워크플로우를 얻을 수 있다. [95]
    2. 워크플로우를 JSON 파일로 저장하여 친구와 공유하고, 친구는 이를 드래그 앤 드롭하여 사용할 수 있다. [97]

2. AI 이미지 생성 이론과 ComfyUI 노드 이해 [101]

AI 이미지 생성의 핵심은 RGB 우주와 잠재 공간(Latent space)이라는 두 가지 우주 간의 데이터 변환 과정이며, 노드는 이러한 변환을 수행하는 기능 단위이다.

2.1. AI 이미지 생성의 이론적 배경: 두 개의 우주 [101]

  1. RGB 우주와 잠재 공간(Latent Space) [104]
    1. AI 이미지 생성은 RGB 우주(우리가 볼 수 있는 현실 세계)와 잠재 공간(AI가 작업하는 내부 우주)이라는 두 가지 개념을 기반으로 한다. [114]
    2. 잠재 공간에서는 노이즈를 사용하여 이미지를 생성하거나 변형한다. [119]
    3. 이러한 우주 간의 데이터 이동은 '우주 포털' 역할을 하는 VAE 인코더/디코더를 통해 이루어진다. [128]
  2. 데이터 변환 과정 [121]
    1. 입력 이미지(RGB 우주)는 VAE 인코더를 통해 잠재 공간으로 전달된다. [123]
    2. 잠재 공간에서 노이즈가 추가된 이미지는 AI 모델에 의해 처리되어 새로운 이미지가 생성된다. [130]
    3. 생성된 잠재 공간의 데이터는 VAE 디코더를 통해 다시 RGB 우주로 변환되어 우리가 볼 수 있는 결과물이 된다. [135]
    4. 이 과정은 이미지뿐만 아니라 텍스트 등 다양한 데이터를 다룰 수 있다. [139]

2.2. 노드(Node)의 개념과 종류 [143]

  1. 노드의 정의와 기능 [143]
    1. 노드는 특정 기능을 수행하는 ComfyUI의 기본 구성 요소이다. [144]
    2. 노드는 'N' 키를 누르거나 왼쪽 메뉴를 통해 접근할 수 있으며, 다양한 종류의 노드를 찾을 수 있다. [148]
    3. 예시로 '이미지 로드' 노드, '프롬프트' 노드, '클립에서 컨디셔닝으로 변환' 노드, '확산 모델 로드' 노드 등이 있다. [147]
  2. 노드 연결과 데이터 흐름 [163]
    1. 노드는 서로 연결되어야 하며, 연결선은 데이터의 흐름을 나타낸다. [169]
    2. '이미지 저장' 노드와 같이 데이터를 다음 단계로 보내는 노드도 있다. [172]
    3. 각 노드는 입력(input)과 출력(output)을 가지며, 데이터는 왼쪽에서 오른쪽으로 흐른다. [177]
  3. 노드 연결선의 색상 코드 [188]
    1. 연결선의 색상은 데이터의 종류를 나타낸다. [188]
    2. 노란색: 클립(Clip) - 텍스트를 AI 언어로 변환한다. [189]
    3. 빨간색: VAE(Variational Autoencoder) - RGB 우주와 잠재 공간 간의 변환을 담당한다. [191]
    4. 파란색: RGB 이미지 - 우리가 볼 수 있는 이미지 데이터이다. [192]
    5. 분홍색: 잠재 공간 이미지 - AI 우주 내의 이미지 데이터이다. [194]
    6. 주황색: 컨디셔닝(Conditioning) - AI 우주 내에서 텍스트 및 기타 제어 정보를 포함한다. [196]
    7. 녹색: 일반 텍스트 - 프롬프트나 파일 경로 등 단순 텍스트이다. [199]
    8. 보라색: AI 모델 - Safetensor, SFT, GGUF 등 다양한 형식의 AI 모델을 나타낸다. [203]
    9. 청록색: ControlNet - 이미지 출력을 제어하는 데 사용된다. [208]

3. 기본적인 텍스트-이미지 워크플로우 이해 [211]

텍스트-이미지 워크플로우는 AI 모델, 프롬프트, 잠재 공간 이미지 정보를 사용하여 최종 이미지를 생성하는 과정이며, Stable Diffusion XL 모델을 예시로 설명한다.

3.1. 텍스트-이미지 워크플로우의 구성 요소 [211]

  1. 워크플로우의 기본 흐름 [211]
    1. AI 모델 로드: Safetensor 형식의 AI 모델을 불러온다. [213]
    2. 텍스트 변환: 클립(Clip) 노드를 사용하여 "고양이 모자"와 같은 텍스트 프롬프트를 AI가 이해할 수 있는 언어로 변환한다. [213]
    3. 긍정 및 부정 프롬프트: 원하는 결과(긍정 프롬프트)와 원하지 않는 결과(부정 프롬프트)를 지정한다. [214]
    4. 잠재 이미지 생성: '빈 잠재 이미지' 노드를 통해 이미지의 크기(예: 1024x1024 픽셀)를 지정하여 빈 캔버스를 만든다. [220]
    5. 이미지 생성: K Sampler (로봇 빌더)가 잠재 공간에서 모델, 프롬프트, 잠재 이미지를 바탕으로 이미지를 생성한다. [220]
    6. 이미지 디코딩: VAE를 통해 잠재 공간의 이미지를 RGB 우주로 변환하여 최종 결과물을 얻는다. [227]
  2. Stable Diffusion XL 모델 활용 [231]
    1. 이 워크플로우는 Stable Diffusion XL 모델을 사용하며, 이는 오래되었지만 여전히 유효한 모델이다. [231]

3.2. Flux 모델과 이전 모델의 차이점 [233]

  1. Flux 모델의 특징 [233]
    1. Flux 모델은 Stable Diffusion XL과 같은 이전 모델과 이론은 같지만, 노드 구성이 다를 수 있다. [233]
    2. Flux 모델은 '확산 모델 로드' 노드를 사용하며, 클립과 VAE가 모델 자체에 포함되어 있지 않아 별도로 로드해야 할 수 있다. [258]
  2. 노드 설정의 유연성 [238]
    1. 이전 모델에서는 K Sampler 내부에 모든 설정이 있었지만, Flux 모델에서는 설정이 외부 노드에서 올 수 있다. [239]
    2. '시드'와 같은 설정을 노드 내부가 아닌 외부 입력으로 변환하여 워크플로우를 더 유연하게 만들 수 있다. [241]
    3. '입력을 위젯으로 변환' 기능을 통해 설정을 사용자 인터페이스로 만들 수 있다. [253]
  3. 모델별 클립 및 VAE 포함 여부 [261]
    1. 일부 모델(예: Stable Diffusion XL)은 클립과 VAE를 내장하고 있지만, Flux 모델은 그렇지 않아 별도로 로드해야 한다. [261]
    2. 노드의 입력이 연결되지 않으면 오류가 발생하므로, 모든 연결이 올바르게 되어 있는지 확인해야 한다. [268]

4. K Sampler의 상세 설정과 이미지 변환 [271]

K Sampler는 이미지 생성의 핵심 엔진이며, 시드, 스텝, CFG, 샘플러, 스케줄러, 디노이저 등의 설정을 통해 이미지의 결과물을 조절할 수 있다.

4.1. K Sampler의 기본 기능과 설정 [271]

  1. K Sampler의 역할 [271]
    1. K Sampler는 잠재 공간에서 이미지를 생성하는 '로봇 빌더' 또는 '기계' 역할을 한다. [281]
    2. 노드의 색상은 시각적인 구분을 위한 것이며, 변경 가능하다. [283]
  2. 시드(Seed) [288]
    1. 시드는 이미지 생성 시 사용되는 초기 노이즈의 무작위 설정을 결정하며, 시드 값에 따라 다른 이미지가 생성된다. [289]
    2. 일반적으로 '무작위화'로 설정하여 매번 새로운 이미지를 생성하며, '고정'으로 설정하면 동일한 시드로 같은 이미지를 반복 생성할 수 있다. [295]
    3. 특정 프롬프트에 대해 더 나은 이미지를 얻는 시드가 있을 수 있지만, 이는 무작위성 때문이며 특정 시드가 본질적으로 더 좋다고 할 수는 없다. [304]
    4. 다른 설정을 변경하며 같은 시드를 사용하면 해당 시드 내에서 변화를 확인할 수 있다. [311]
  3. 스텝(Steps) [316]
    1. 스텝은 이미지 생성 과정에서 로봇 빌더가 작업하는 횟수를 의미하며, 스텝 수가 많을수록 더 많은 디테일을 얻을 수 있다. [317]
    2. 일반적으로 모델별 권장 스텝 수가 있으며, 20 스텝이 좋은 기준점이 될 수 있다. [319]
  4. CFG (Classifier Free Guidance) [321]
    1. CFG는 프롬프트를 얼마나 엄격하게 따를지를 결정하는 '청사진'과 같은 역할을 한다. [321]
    2. CFG 값이 낮으면 AI가 창의성을 발휘하여 프롬프트에서 벗어날 수 있고, 값이 높으면 프롬프트를 더 충실히 따른다. [324]
    3. Stable Diffusion 모델의 경우 4~7 사이, Flux 모델의 경우 1로 설정하는 것이 일반적이다. [339]
    4. Flux 모델은 'Flux 가이드'를 사용하며, 이는 CFG를 대체한다. [341]
  5. 샘플러(Sampler) [345]
    1. 샘플러는 다양한 종류가 있으며, 각각 다른 방식으로 이미지를 생성한다. [345]
    2. 마치 다양한 망치가 각기 다른 용도로 사용되는 것처럼, 샘플러도 각기 다른 특징과 사용 사례를 가진다. [351]
    3. 대부분의 경우, 모델 또는 워크플로우 제작자가 권장하는 샘플러를 사용하면 된다. [357]
  6. 스케줄러(Scheduler) [360]
    1. 스케줄러는 빌더가 노력을 분배하는 방식을 결정하며, 이미지 생성 초반과 후반의 작업 방식에 영향을 준다. [361]
    2. 모델 또는 워크플로우 제작자가 권장하는 스케줄러를 사용하면 된다. [364]

4.2. 디노이저(Denoiser)와 이미지 변환 [365]

  1. 디노이저의 역할 [365]
    1. 디노이저는 이미지의 얼마나 많은 부분을 재구성할지를 결정하는 중요한 설정이다. [365]
    2. 0에서 1 사이의 값으로, 0은 아무것도 재구성하지 않고, 1은 모든 것을 처음부터 다시 만든다. [368]
    3. 0.5는 이미지의 50%를 유지하고 50%를 새로 만드는 것에 해당한다. [372]
  2. 이미지-투-이미지(Image-to-Image) 변환 [374]
    1. 디노이저 값은 이미지 생성 시 기존 이미지의 몇 퍼센트를 유지하고 몇 퍼센트를 새로 만들지를 결정한다. [374]
    2. 예를 들어, 고양이 이미지를 입력하고 디노이저 값을 0.6으로 설정하면, 기존 고양이 이미지의 40%를 유지하고 60%를 새로 생성하여 개 이미지를 만들 수 있다. [376]
    3. 디노이저 값이 0이면 원본 이미지가 그대로 유지되고, 1이면 완전히 새로운 이미지가 생성된다. [384]
    4. 디노이저 값은 모델에 따라 다르며, 일반적으로 0.5~0.7 사이가 많이 사용된다. [400]
    5. 이미지-투-이미지 워크플로우는 입력 이미지를 받아 잠재 공간에서 처리한 후, 프롬프트와 디노이저 값을 바탕으로 새로운 이미지를 생성한다. [406]
    6. 부정 프롬프트는 원하지 않는 요소를 제거하는 데 사용되며, Flux 모델에서는 일반적으로 사용하지 않는다. [414]

5. 고급 워크플로우 활용 및 팁 [419]

고급 워크플로우를 이해하고 활용하기 위해서는 노드 연결 개념을 파악하는 것이 중요하며, 이미지 저장, 미리보기, 노드 추천 기능 등을 통해 작업 효율을 높일 수 있다.

5.1. 이미지 저장 및 미리보기 [419]

  1. 이미지 저장 [419]
    1. '이미지 저장' 노드를 사용하여 생성된 이미지를 파일로 저장할 수 있다. [420]
    2. 저장 경로와 파일 이름을 지정할 수 있으며, 지정된 폴더에 이미지 파일이 저장된다. [424]
  2. 이미지 미리보기 [430]
    1. '미리보기 이미지' 노드를 연결하면 이미지를 저장하지 않고도 결과물을 확인할 수 있다. [430]
    2. 이미지 저장 노드를 사용하지 않을 경우, 미리보기 노드를 대신 사용할 수 있다. [435]

5.2. 노드 추천 및 크기 설정 팁 [436]

  1. 노드 추천 기능 [436]
    1. 연결되지 않은 노드나 빈 슬롯에 다른 노드를 드래그 앤 드롭하면, 해당 위치에 적합한 노드들을 추천해준다. [436]
    2. 이를 통해 필요한 노드를 쉽게 찾고 연결할 수 있다. [441]
  2. 크기 설정 시 고려사항 [445]
    1. 모델에 맞는 네이티브 해상도를 사용하는 것이 좋다. [448]
    2. Stable Diffusion XL 및 Flux 모델은 1024x1024 픽셀이 일반적이며, SD 1.5 모델은 512x512 픽셀이 적합하다. [448]