소개
AI 이미지 생성에서 흔한 과제 중 하나는 정확한 아트 디렉션을 달성하는 것입니다. 프롬프트는 이미지의 전반적인 스타일과 내용을 안내할 수 있지만, 특정 구도 세부 사항(화면 방향이나 객체 배치 등)을 제어할 때는 부족한 경우가 많습니다.
이 글에서는 ControlNet 을(를) ComfyUI 워크플로에서 사용하여 이러한 한계를 극복하는 방법을 살펴보겠습니다. ControlNet 모델을 활용하면 선화나 엣지 맵과 같은 외부 입력을 사용하여 생성된 이미지의 구도를 안내할 수 있습니다. 이러한 접근 방식을 통해 이미지 생성 프로세스에서 더 높은 수준의 제어와 정밀도를 달성할 수 있습니다.
목차
문제점: 구도에서 프롬프트의 한계
예를 들어 보겠습니다. 화면 오른쪽을 바라보는 개의 이미지를 생성한다고 합시다. “facing screen right,”라고 지정한 신중하게 작성된 프롬프트를 사용해도, Juggernaut XL 확산 모델 에서 생성된 이미지는 이 요구 사항을 충족하지 못합니다. 화면 오른쪽을 바라보는 대신, 개는 화면 왼쪽을 바라봅니다.
이 결과는 핵심적인 한계를 보여 줍니다. 확산 모델과 텍스트 인코더는 공간적 또는 방향성 프롬프트를 이해하는 데 어려움을 겪는 경우가 많습니다. 유일한 대안은 원하는 구도를 얻을 때까지 무작위로 다양한 시드를 시도해 보는 것인데, 이는 시간이 많이 걸리고 비효율적인 프로세스입니다.
ControlNet 소개
ControlNet 은(는) 외부 이미지 기반 conditioning을 워크플로에 도입하여 해결책을 제공합니다. 참조 이미지를 분석하고 그 구조나 구도를 생성된 출력에 적용하는 방식으로 동작합니다.
ControlNet 모델은 특정 확산 모델과 함께 동작하도록 설계되었습니다. 이 예시에서는 controlnet-scribble-sdxl-1.0 모델을 사용하겠습니다. 이 모델은 SDXL 정제 확산 모델 과(와) 호환됩니다. Scribble ControlNet은 간단한 선화를 입력으로 받아들이므로 대략적인 구도 안내에 이상적입니다.
ComfyUI에서 ControlNet 설정하기
1단계: ControlNet 모델 다운로드 및 설치
- controlnet-scribble-sdxl-1.0 모델을 다음에서 다운로드하세요: xinsir/controlnet-scribble-sdxl-1.0 at main이며, 원래 이름은 diffusion_pytorch_model.safetensors입니다.
- 모델 파일을 다음 디렉터리에 넣으세요:
/models/controlnet에 넣고 이름을 다음과 같이 바꾸세요: controlnet-scribble-sdxl-1.0.safetensors. 모델 파일을 로드하려면 ComfyUI를 다시 시작해야 합니다.

2단계: 워크플로 구축하기
ComfyUI에서는 ControlNet 모델을 이미지 생성 프로세스에 통합하는 워크플로를 만들어야 합니다.
원본 모델:

다음 단계를 따르세요:
1. ControlNet 모델 로드하기
- Load ControlNet Model 노드를 추가하세요.
- controlnet-scribble-sdxl-1.0 모델을 목록에서 선택하세요.

2. Apply ControlNet
- Apply ControlNet 노드를 추가하세요.
- KSampler 노드에서 conditioning 연결을 끊고 대신 Apply ControlNet 노드를 통해 라우팅하세요.


3. 입력 이미지 로드하기
- Load Image 노드를 추가하세요.
- 선화를 업로드하세요(예: 원하는 구도의 간단한 스케치).
- 이미지를 Apply ControlNet 노드에 연결하세요.

4. 연결 완료하기
- ControlNet 모델 을(를) Apply ControlNet 노드에 연결하세요.
- 선택적으로 VAE 을(를) 완전성을 위해 Apply ControlNet 노드에 연결하세요(이 경우 결과에는 영향을 주지 않지만).

3단계: 이미지 생성하기
워크플로가 설정되면 워크플로를 대기열에 넣어 이미지를 생성하세요. ControlNet이 업로드된 선화를 기반으로 구도를 안내합니다.
원본 스케치:

사용 중인 프롬프트: nature photography, dog, standing on the grass, daylight, (bokeh:1.5)
출력:

결과 및 개선
초기 출력
ControlNet Scribble 모델을 사용하면, 생성된 개가 이제 올바른 구도를 따릅니다. 그러나 ControlNet의 영향은 기본적으로 최대로 설정되어 있어, 입력 그림이 부정확하거나 지나치게 단순하면 부자연스러운 결과가 나올 수 있습니다.
예를 들어, 업로드된 스케치에 해부학적 정확성이 부족하면 생성된 이미지가 인위적이거나 왜곡되어 보일 수 있습니다.
ControlNet 영향 균형 맞추기
이 문제를 해결하려면 ControlNet 영향 매개변수 를 조정하여 입력 그림과 생성 모델의 자연스러운 개선 사이에서 균형을 맞출 수 있습니다. 이를 통해 모델은 원하는 구도를 유지하면서도 누락된 세부 사항을 채울 수 있습니다.
ControlNet 모델 유형
ControlNet은 여러 변형을 제공하며, 각 변형은 특정 사용 사례에 맞게 조정되어 있습니다:
- Scribble ControlNet: 대략적인 구도 안내를 위해 간단한 선화를 받아들입니다.
- Canny ControlNet: 입력 이미지에서 엣지 세부 정보를 추출하여 구도를 안내합니다.
- Depth ControlNet: 깊이 정보를 분석하여 현실적인 공간 관계를 가진 이미지를 만듭니다.
필요에 따라 워크플로를 안내할 적절한 ControlNet 모델을 선택할 수 있습니다.
실용적인 활용 사례
ControlNet은 특히 다음과 같은 경우에 유용합니다:
- 정확한 객체 배치: 객체가 특정 위치나 방향에 나타나도록 보장합니다.
- 사용자 지정 구도: 텍스트 프롬프트만으로는 설명하기 어려운 고유한 레이아웃을 달성합니다.
- 아트 디렉션: 외부 스케치나 참조 자료를 생성형 AI와 결합하여 창의적인 결과물을 만드는 것.
결론
ComfyUI 워크플로에서 ControlNet을 사용하면 이미지 구도를 더 세밀하게 제어할 수 있어 프롬프트 기반 생성의 한계를 해결할 수 있습니다. 선화와 같은 외부 입력을 통합하면 객체의 배치와 방향을 정밀하게 안내할 수 있습니다.
다음 단계에서는 ControlNet의 영향 균형을 조정하여 자연스럽고 시각적으로 매력적인 결과를 얻어 보세요. 예술 프로젝트를 하든 특정 디자인 작업을 하든, ControlNet은 AI 이미지 생성에서 창의적인 방향 설정에 새로운 가능성을 열어 줍니다.