본문 바로가기

ComfyUI

Stable Diffusion과 ComfyUI 기본 가이드: 용어 설명

안녕하세요,

인공지능(AI)과 머신러닝의 발전으로 이제 우리는 상상 속의 이미지를 현실로 만들어낼 수 있는 시대에 살고 있습니다. 이번 포스팅에서 다룰 내용은 바로 Stable DiffusionComfyUI입니다. 이 두 가지 기술은 이미지 생성 분야에서 혁신을 불러일으키고 있으며, 예술, 디자인, 광고 등 다양한 분야에서 널리 사용되고 있습니다. Stable Diffusion과 ComfyUI의 기본적인 작동 원리와 사용되는 용어에 대해 알아보겠습니다.

 


반응형

 

1. Stable Diffusion 모델 작동원리

Stable Diffusion의 작동 원리는 이미지 생성에서 주요한 개념인 "확산 과정(Diffusion Process)"을 기반으로 합니다. 이 과정은 다음과 같은 단계로 요약될 수 있습니다:

  1. 노이즈 추가 (Forward Diffusion Process)
    • 초기 이미지: 원본 이미지가 주어진 경우, 이 이미지에 점진적으로 노이즈를 추가합니다. 이 과정은 여러 단계로 이루어지며, 각 단계마다 조금씩 더 많은 노이즈가 추가됩니다.
    • 노이즈의 단계적 증가: 각 단계마다 이미지는 점점 더 무작위적인 노이즈로 변하고, 최종적으로는 완전히 노이즈가 가득한 이미지가 됩니다.
  2. 노이즈 제거 (Reverse Diffusion Process)
    • 역확산 과정: 최종 노이즈 이미지에서 시작하여 점진적으로 노이즈를 제거하며 원본 이미지로 복원합니다. 이 과정은 초기 이미지와 반대 방향으로 진행되며, 각 단계에서 노이즈가 조금씩 줄어듭니다.
    • 모델 학습: 모델은 각 단계에서 노이즈를 어떻게 제거할지 학습합니다. 이를 통해 무작위 노이즈 이미지를 점진적으로 원본 이미지로 변환할 수 있게 됩니다.
  3. 잠재 공간(Latent Space)과 컨디셔닝(Conditioning)
    • 잠재 공간 (Latent Space): Stable Diffusion은 고차원 데이터를 저차원 잠재 공간으로 변환하여 학습합니다. 이 잠재 공간에서 데이터를 압축하고 중요한 특징을 추출합니다.
    • 컨디셔닝 (Conditioning): 모델은 텍스트 프롬프트와 같은 추가 입력 정보를 사용하여 이미지를 생성합니다. 예를 들어, 특정 텍스트 설명에 따라 이미지를 생성하도록 모델을 훈련시킬 수 있습니다.
  4. 샘플링 기법
    • 노이즈 제거 과정을 어떻게 수행할지 결정합니다. 모델 학습과정에서 학습된 모델을 사용하여 노이즈를 제거하게 됩니다.
    • 샘플러 사용: 모델은 다양한 샘플링 기법을 사용하여 확률 분포에서 샘플을 추출합니다. DDIM, PLMS, PNDM 등의 샘플러가 사용됩니다.
    • 샘플링 과정: 샘플러는 이미지 생성 과정에서 확률 분포를 기반으로 샘플을 추출하며, 이를 통해 생성된 이미지의 품질과 다양성을 조절합니다.

 

 

2. Stable Diffusion 모델의 이미지 생성 순서

사용자가 프롬프트를 입력하면 아래의 순서로 이미지를 생성하게 됩니다.

 

  1. 사용자의 프롬프트 입력
  2. 프롬프트 인코딩 (텍스트 프롬프트 → 잠재 벡터)
  3. 초기 노이즈 생성
  4. 역확산 과정 (여러 과정 반복)
    • 컨디셔닝 적용  (잠재 벡터 사용함으로써 생성중인 이미지를 사용자 프롬프트와 일치하도록 유도)
    • 노이즈 예측 제거 (남은 노이즈를 예측하며 제거)
  5. 최종 이미지 생성

 

 

 

3. Stable Diffusion 기본 모델

보통 많이 사용하는 기본 모델로는 "Stable Diffusion 1.5 모델"과 " Stable Diffusio XL 모델"이 있습니다. 해당 모델을 사용할 경우 가장 최적의 사이즈는 아래와 같습니다:

  • SD1.5 (최적 사이즈: 512px)
    • 512 x 512
    • 512 x 768
    • 768 x 512
  • SDXL (최적 사이즈: 1024px)
    • 1024 x 1024
    • 1152 x 896
    • 1280 x 768

 


728x90

 

4. ComfyUI 란

 

ComfyUI는 Stable Diffusion 기반의 이미지 생성 모델을 위한 그래픽 사용자 인터페이스(GUI) 도구입니다. ComfyUI는 주로 사용자가 이미지 생성 프로세스를 보다 직관적이고 쉽게 조작할 수 있도록 돕습니다. 기본적으로는 노드 기반 인터페이스를 제공하며, 사용자가 이미지 생성의 각 단계를 시각적으로 연결하고 조작할 수 있도록 합니다.

 

 

5. ComfyUI 용어 설명

ComfyUI의 대표적인 노드들을 살펴보며 나타나는 용어들에 대해 설명하겠습니다.
 

1) 메뉴 창 (아래 이미지의 빨간색 표시 참조)

메뉴창

ComfyUI의 메뉴창은 사용자 인터페이스의 중요한 부분으로, 다양한 기능과 설정에 빠르게 접근할 수 있도록 도와줍니다. 이를 통해 현재 설정한 노드를 실행하거나, 설정을 저장하고 불러올 수 있습니다. 또한, 다른 사람이 설정한 노드 형태를 그대로 가져올 수도 있습니다.

 

 

2) Load Checkpoint (아래 이미지의 빨간색 표시 참조)

Load Checkpoint

 

Checkpoint는 이미지가 학습된 AI 모델을 설정하는 노드입니다. 특정한 이미지를 생성하거나, 특정 작업을 수행하기 위해 필요한 가중치 값을 저장한 모델을 의미합니다. 이 모델을 사용하면 실사에 가까운 이미지나 애니메이션에 가까운 이미지를 선택하여 생성할 수 있습니다.

Stable Diffusion에 사용되는 AI 모델들은 다양하며, 이는 모델이 저장된 형식, 플랫폼, 또는 프레임워크에 따라 달라집니다. 이러한 차이는 모델의 구조, 가중치, 그리고 메타데이터가 어떻게 저장되고 로드되는지에 영향을 미칩니다.

1) 메인 모델 (Checkpoint)
이 파일에는 전체 Stable Diffusion 모델의 가중치와 구조가 포함됩니다. 텍스트 프롬프트를 기반으로 이미지를 생성하는 데 필요한 핵심 모델입니다. 이 모델은 UNet, VAE 디코더, 텍스트 인코더와 같은 구성 요소로 구성됩니다.

[확장자명 : .ckpt]
스테이블 디퓨전에서 가장 많이 사용되는 모델 파일 형식입니다. 모델의 가중치와 학습 상태를 저장하는 파일로, 모델을 로드할 때 이 파일을 사용합니다.
.ckpt 파일은 일반적으로 큰 용량을 가지며, 모델의 전체 상태를 포함하고 있어 모델을 정확하게 복원할 수 있습니다. 주로 모델의 훈련 중간에 상태를 저장하거나, 훈련이 완료된 모델을 배포할 때 사용됩니다.

[확장자명 : .safetensors]
최근에 많이 사용되기 시작한 모델 파일 형식입니다. 이름에서 알 수 있듯이, 안전하고 빠른 모델 로딩을 지원하는 포맷입니다.
.safetensors 형식은 보안 및 무결성을 강조하여 설계되었으며, 모델 데이터를 안전하게 저장하고 로딩하는 데 중점을 둡니다. .ckpt 파일과 달리 불필요한 데이터를 포함하지 않으며, 보안상 민감한 정보가 노출될 위험을 줄입니다.


2. VAE 모델
[확장자: .safetensors / .ckpt]
VAE 모델은 이미지의 잠재 표현(latent representation)과 관련된 정보만을 포함합니다. VAE는 디코더 역할을 하며, 잠재 벡터를 이미지로 변환하거나 이미지를 잠재 벡터로 변환하는 작업에 사용됩니다.


3. CLIP 모델
[확장자: .safetensors / .ckpt]
CLIP 모델은 텍스트와 이미지를 연결하는 데 사용되는 가중치와 구조를 포함합니다. 이 모델은 텍스트와 이미지 간의 유사도를 계산하여, 텍스트 프롬프트에 적합한 이미지를 생성하는 데 도움을 줍니다.

 

 

 

3) Prompt 창 (아래 이미지의 빨간색 표시 참조)

Prompt 창

 

Prompt 창은 생성하고자 하는 이미지를 설명하는 부분입니다. 입력하는 프롬프트는 긍정 프롬프트와 부정 프롬프트 두 가지 창이 있습니다. 긍정과 부정을 나누는 기준은 오른쪽의 KSampler 노드에 연결된 부분을 보고 구별할 수 있습니다. 긍정 프롬프트는 생성할 이미지에 포함되어야 할 요소를 나타내고, 부정 프롬프트는 생성할 이미지에서 제외되어야 할 요소를 나타냅니다. 여기서 입력한 값은 잠재 공간으로 변환되어 컨디셔닝에 적용되기에, 생성될 이미지에 큰 영향을 미치게 됩니다.

 

 

4) KSampler (아래 이미지의 빨간색 표시 참조)

KSampler

 

KSampler는 초기 노이즈 이미지를 생성하고, 노이즈를 제거하며 특정 이미지 형성하는 역할을 합니다. 

  • seed: 초기 노이즈 생성 이미지를 결정하는 값
  • control_after_generate: 각 노드 실행 후 seed 번호를 변경하거나 고정하는 옵션
  • steps: 몇 차례 수행하며 노이즈를 제거할지 결정하는 값
    • 너무 적으면 노이즈 제거가 덜 되서 불명확한 이미지 생성
    • 너무 많으면 쓸데없이 자원 소모
  • cfg: 입력받은 프롬프트 값을 얼마나 강하게 적용할 것인지를 결정하는 값 (보통 7~8 적용)
    • 너무 낮으면 이미지가 흐리게 표현
    • 너무 높으면 이미지가 왜곡
  • denoise: 잠재 벡터에서 얼마나 많은 정보를 노이즈를 통해 지울지를 결정하는 값
    • 낮으면 노이즈가 적게 적용되어 더 선명한 이미지 생성
    • 높으면 더 많은 노이즈가 추가되어 흐릿한 이미지 생성
  • sampler: 노이즈를 제거하는 방법을 결정하는 값
    • euler: 빠르지만 품질이 조금 떨어짐
    • dpmpp: 느리지만 품질이 조금 나음
  • scheduler: 노이즈 제거 과정을 관리하며, 각 단계에서 노이즈를 어떻게 처리할지를 결정하는 값
    • normal: 전체적으로 균등한 기본 스케쥴러
    • karras: 이미지 생성의 특정 부분을 집중하는 스케쥴러
※ 샘플러(Sampler)와 스케줄러(Scheduler)는 이미지 생성 과정에서 함께 사용되는 경우가 많습니다. 각각의 조합은 이미지 생성 속도와 디테일에 영향을 미칩니다. 일반적으로 다음과 같은 방식으로 사용됩니다.
Euler + Normal : 빠르게 이미지 생성
DPM++ 2M + Karras : 디테일한 이미지 생성

 

 

5) VAE Decode (아래 이미지의 빨간색 표시 참조)

VAE Decode

 

Sampler가 생성하는 최종 이미지는 잠재 공간(latent space)에서 인코딩된 값입니다. 이 잠재 공간의 값은 사람이 직접 볼 수 있는 이미지가 아니기 때문에, 이를 VAE(Variational Autoencoder) 또는 다른 디코딩 과정을 통해 사람이 볼 수 있는 이미지로 변환해야 합니다. 이때 VAE가 이미지파일을 변환해줍니다. checkpoint 에 VAE가 포함되어 있다면 사용 가능하지만, 따라 VAE 모델을 불러와서 사용해도 됩니다.

 

 

6) Save Image (아래 이미지의 빨간색 표시 참조)

Save Image

 

최종적으로 생성된 이미지가 표시되는 노드입니다.

 


 

인공지능과 머신러닝의 발전은 우리에게 상상 속의 이미지를 현실로 만들어낼 수 있는 놀라운 도구들을 선사하고 있습니다. Stable Diffusion과 ComfyUI는 이러한 도구들 중에서도 특히 주목할 만한 기술로, 이미지 생성의 새로운 가능성을 열어주고 있습니다.

 

Stable Diffusion은 텍스트 프롬프트를 기반으로 고품질의 이미지를 생성하는 강력한 기술입니다. 노이즈를 점진적으로 제거하면서 이미지를 생성하는 이 기술은 다양한 분야에서 혁신을 불러일으키고 있습니다. 예술가와 디자이너는 물론, 일반 사용자들도 쉽게 접근할 수 있습니다.

 

ComfyUI는 이러한 강력한 기술을 더 쉽게 사용할 수 있도록 돕는 사용자 인터페이스입니다. 복잡한 설정 없이도 직관적인 조작만으로 원하는 이미지를 생성할 수 있게 해줍니다. 이를 통해 누구나 손쉽게 AI 이미지 생성의 세계를 탐험할 수 있습니다.

 

이번 포스팅을 통해 Stable Diffusion과 ComfyUI의 기본적인 작동 원리와 사용되는 용어에 대해 이해할 수 있었기를 바랍니다. 이제 여러분도 AI 기술을 활용하여 멋진 이미지를 생성해보세요. 더 나아가, 이러한 기술이 앞으로 어떤 변화를 가져올지 기대해보며, AI의 무한한 가능성을 함께 탐구해 나갑시다.