1. ComfyUI란 무엇인가?
ComfyUI는 노드 기반의 UI를 통해 AI 이미지 생성 프로세스를 관리하는 도구이다. 각각의 기능을 노드라고 불리는 블록 형태로 구성하고, 이들을 서로 연결하여 복잡한 이미지 생성 파이프라인을 만들 수 있다. 이러한 방식은 프로그래밍의 노드 기반 프로그래밍과 유사하며, 사용자가 각 단계를 명확히 제어할 수 있다는 장점이 있다.
2. 노드 구성하기: 첫 번째 워크플로우 만들기
노드 구성 과정 이해하기
ComfyUI에서 이미지를 생성하기 위해서는 몇 가지 기본적인 단계를 거쳐야 한다.
각 노드는 특정한 역할을 수행하며, 이들을 선으로 연결하여 데이터 흐름을 만든다. 노드를 추가하고 서로 연결한 후 각 노드의 설정값을 조정하면 워크플로우가 완성된다. 마지막으로 실행 버튼을 누르면 이미지 생성이 시작된다.
주요 노드 설정
ComfyUI의 Settings 메뉴에서 여러 옵션을 조정할 수 있다. 노드 검색 박스를 활용하면 필요한 노드를 빠르게 찾을 수 있으며, 노드 위젯 설정을 통해 각 노드의 표시 방식을 커스터마이징할 수 있다. 이러한 설정을 통해 작업 환경을 개인의 취향에 맞게 구성하는 것이 중요하다.
추천 체크포인트 모델
ComfyUI에서 사용할 수 있는 여러 체크포인트 모델이 있다. 실사 스타일의 이미지를 원한다면 Realistic Vision, CyberRealistic, epiCRealism, mijicMIX realistic, Beautiful Realistic Asians 같은 모델들이 좋다. 애니메이션 스타일을 원한다면 Rev Animated, XXMix 9realistic, Realcartoon 3D, MeinaMix, Mistoon Anime, Flat 2D Animerge 같은 모델들을 추천한다.
각 모델은 고유한 특징을 가지고 있으므로, 원하는 결과물의 스타일에 따라 적절한 모델을 선택하는 것이 중요하다.
3. Text to Image 생성하기: T2I의 이해
T2I(Text to Image)란?
Text to Image, 즉 T2I는 텍스트 기반의 프롬프트를 입력받아 그에 해당하는 이미지를 생성하는 AI 프로세스이다. 사용자가 원하는 이미지를 자연어로 설명하면, AI가 그 설명을 이해하고 이미지로 변환하는 방식이다.
T2I 프로세스의 핵심은 Latent Space에서의 작업이다. 입력된 텍스트 프롬프트는 Conditioning을 통해 처리되고, 이것이 AI 모델을 가이드하여 최종 이미지를 생성한다.
Positive와 Negative 프롬프트
프롬프트 작성은 T2I 결과를 좌우하는 가장 중요한 요소이다. Positive 프롬프트는 이미지에 포함되길 원하는 요소들을 기술한다. 예를 들어 "a cat"이라고 입력하면 고양이 이미지를 생성하지만, "a white cat"이라고 더 구체적으로 입력하면 흰색 고양이 이미지를 생성한다.
반면 Negative 프롬프트는 이미지에서 제외하고 싶은 요소들을 명시한다. "computer"를 Negative 프롬프트로 지정하면 생성된 이미지에 컴퓨터가 나타나지 않도록 AI에 지시하는 것이다.
AI 이미지 생성 프로세스
이미지 생성의 전체 과정은 다음과 같이 구성된다. Checkpoint Model은 사용할 AI 모델을 결정한다. Positive Prompt와 Negative Prompt는 생성 방향을 가이드한다. Latent Space Denoising은 노이즈를 제거하며 최종 이미지를 형성하는 핵심 프로세스이다.
프롬프트 작성의 중요성
"a pretty young woman, city street, upper body, text, watermark, low quality"같은 단순한 프롬프트보다는 "masterpiece, best quality, ultra detail, realistic, 8k, top quality, ultra high resolution, a pretty young woman, 19years old korean, beautiful details eyes, brown curly hair paris, eiffel tower, cinematic lighting, smoother lighting"같은 상세한 프롬프트가 훨씬 좋은 결과를 만든다.
마찬가지로 Negative 프롬프트도 "text, watermark, low quality"보다는 "worst quality, low quality, normal quality, ugly, bad hands, bad legs, bad fingers, text, watermark, bad detailed background"처럼 구체적으로 작성할수록 품질이 향상된다.
이러한 프롬프트 엔지니어링은 원하는 이미지를 생성하기 위한 필수 기술이다. 인간이 정확한 명령을 내려야 AI가 올바른 결과를 만들 수 있다는 의미에서, Prompt Engineer의 역할은 매우 중요하다.
4. 노드 그룹화하여 관리하기
노드 그룹화의 필요성
프로젝트가 복잡해질수록 수많은 노드들이 화면을 차지하게 된다. 이때 관련된 노드들을 그룹화하여 정리하면 워크플로우를 훨씬 더 명확하고 효율적으로 관리할 수 있다.
두 가지 그룹화 방법
ComfyUI에서는 두 가지 노드 그룹화 방법을 제공한다. Add Group은 기존 노드들 주위에 경계선을 그려 시각적으로 그룹화하는 방식이다. 이 방법은 관련 노드들을 시각적으로 함께 표시하면서도 각 노드는 독립적으로 작동한다.
Convert to Group Node는 선택된 여러 노드들을 하나의 단일 노드로 축약하는 방식이다. 이렇게 하면 복잡한 서브워크플로우를 하나의 컴팩트한 노드로 표현할 수 있어 전체 워크플로우의 복잡도를 줄일 수 있다.
예를 들어, Positive와 Negative 프롬프트를 처리하는 노드들을 "Prompt" 그룹으로 묶으면 프롬프트 관련 설정들을 한 곳에서 관리할 수 있다. 이는 특히 여러 번의 반복 작업이나 다양한 프롬프트를 테스트할 때 매우 유용하다.
5. 실제 워크플로우 예시
기본적인 T2I 워크플로우는 다음과 같이 구성된다. Load Checkpoint 노드에서 사용할 모델을 로드한다. CLIP 노드에서 텍스트 프롬프트를 벡터로 변환한다. KSampler 노드에서 실제 이미지 생성 과정이 일어난다. VAE Decode 노드에서 생성된 latent 정보를 실제 이미지로 변환한다. 마지막으로 Save Image 노드에서 생성된 이미지를 저장한다.
각 단계에서 설정값(seed, steps, cfg 등)을 조정하여 생성 결과를 제어할 수 있다.