Skip to content
더 나은 ComfyUI 지식베이스 구축을 돕기 후원자 되기

ControlNet 튜토리얼: ComfyUI에서 ControlNet을 사용하여 정확한 이미지 제어 생성하기

AI 이미지 생성 과정에서 이미지 생성을 정확하게 제어하는 것은 쉬운 일이 아니며, 일반적으로 만족스러운 이미지를 생성하기 위해 여러 번의 이미지 생성 시도가 필요합니다. 하지만 ControlNet의 등장으로 이 문제가 잘 해결되었습니다.

ControlNet은 십여 가지의 제어 네트워크 모델을 제공하여 이미지의 스타일, 세부 사항, 인물 포즈, 화면 구조 등을 더 잘 제어할 수 있게 해줍니다. 이러한 제한 조건들은 AI 이미지 생성을 더 제어 가능하게 만들어 주며, 그림을 그리는 과정에서 여러 ControlNet 모델을 동시에 사용하여 더 좋은 효과를 얻을 수도 있습니다.

ControlNet을 참조 이미지를 AI가 이해할 수 있는 지시로 변환하는 번역 도우미로 이해할 수 있습니다. 이렇게 변환된 지시가 AI 모델에 전달되어 우리가 원하는 이미지를 생성하게 됩니다.

openpose ControlNet

예를 들어, 위 이미지에서는 인물 이미지를 입력하여 전처리기를 통해 인물의 제어 조건을 추출한 후, ControlNet 모델을 적용하여 동작이 일치하는 인물 이미지를 생성했습니다.

이 튜토리얼에서 다룰 내용:

  • ControlNet의 기본 소개
  • ComfyUI에서 ControlNet의 작동 과정
  • ControlNet 관련 리소스
  • ComfyUI에서 전형적인 ControlNet 워크플로우의 구성

그리고 ComfyUI-Wiki의 다른 ControlNet 관련 글에서 구체적인 개별 ControlNet 모델 사용법과 관련 예시를 설명할 것입니다.

ControlNet 간단 소개

ControlNet은 Stable Diffusion과 같은 확산 모델(Diffusion Model)을 기반으로 한 조건부 제어 생성 모델로, 2023년 장뤼민(Lvmin Zhang)과 Maneesh Agrawala 등이 처음 제안했습니다. 이 모델은 엣지 감지 이미지, 깊이 맵, 포즈 키포인트 등과 같은 다양한 모달리티 입력 조건을 도입하여 이미지 생성의 제어 가능성과 세부 사항 복원 능력을 크게 향상시켰습니다.

다음은 ControlNet 관련 링크입니다:

ControlNet의 일반적인 제어 유형

최근 몇 년간 ControlNet의 발전과 커뮤니티의 기여로 현재 ControlNet은 십여 가지의 제어 유형을 지원합니다. 다음은 일반적인 제어 유형으로, 각 유형은 적합한 시나리오가 있습니다.

1. 라인 컨트롤 유형

  • Canny: 엣지 감지를 통해 정밀한 라인 아트를 생성하며, 원본 이미지 구조를 정확하게 모방하는 데 적합합니다.
  • MLSD: 직선만 감지하며, 건축물이나 실내 디자인 등의 장면에 적합합니다.
  • Lineart: 새로운 세대의 라인 아트 인식으로, Canny보다 더 정밀하며 애니메이션 라인 추출을 지원합니다.
  • SoftEdge: 소프트 엣지 감지로, 큰 윤곽선을 우선 인식하여 정확한 모방이 필요하지 않은 장면에 적합합니다.
  • Scribble/Sketch: 낙서 제어로, 대략적인 윤곽선 인식이나 수동으로 그린 스케치를 통한 이미지 생성을 지원합니다.

2. 깊이와 구조 유형

  • Depth: 밝기를 통해 전경과 배경의 깊이 관계를 구분하며, 흰색 영역은 앞쪽에, 검은색 영역은 뒤쪽에 위치합니다.
  • NormalMap: 노멀 맵으로, 물체 표면의 요철감(예: 창문 함몰 효과)을 제어합니다.
  • OpenPose: 골격 포즈 인식으로, 자동 감지나 수동 편집을 통해 인체 자세를 제어할 수 있습니다.

3. 의미와 분할 유형

  • Segmentation: 의미 분할로, 색상을 통해 항목 카테고리에 맞는 이미지를 생성합니다(예: 파란색은 하늘을 나타냄).
  • Inpaint/부분 재그리기: 이미지의 일부를 수정하며 원본 이미지 스타일과 일치성을 유지합니다.

4. 스타일과 색상 유형

  • Shuffle: 랜덤 셔플로, 참조 이미지의 의미 요소를 섞어 다양한 화면을 생성합니다.
  • Recolor: 흑백 이미지에 색상을 다시 입히며, 자동이나 프롬프트 단어로 색상을 정의할 수 있습니다.
  • IP-Adapter: 스타일/얼굴 모방으로, 생성된 이미지의 일관성을 유지합니다.

5. 기능 확장 유형

  • InstructP2P: 텍스트 지시를 통해 이미지를 수정합니다(예: 집을 “불타게” 만들기).
  • Instant_ID: AI 얼굴 교체로, 얼굴 일관성을 유지하고 여러 이미지 융합을 지원합니다.
  • Tile/Blur: 흐린 이미지의 고해상도화와 세부 향상.

OpenPose 얼굴/손 전용 프로세서 및 일부 의미 분할 전처리와는 호환되지 않습니다.

ComfyUI에서 ControlNet의 작동 과정

ComfyUI에서 ControlNet은 조건부 컨트롤러로서 일반적으로 다음과 같은 처리 단계를 포함합니다. 현재 ComfyUI의 ControlNet 모델 버전이 다양하므로 구체적인 과정이 다를 수 있지만, 여기서는 현재 ControlNet V1.1 버전 모델을 예로 설명하겠습니다. 구체적인 워크플로우는 향후 관련 튜토리얼에서 계속 보충할 예정입니다.

  1. 이미지 전처리

참조 이미지를 업로드하면, ControlNet의 전처리기가 이미지에서 주요 특징(예: 윤곽선, 라인, 포즈)을 추출합니다. 예를 들어, 본문 시작 부분의 인물 이미지가 Openpose 제어 조건으로 변환되었습니다.

  1. 조건 주입

ControlNet은 추출된 특징을 “조건 신호”로 변환하여 샘플러(예: K 샘플러)에 전달합니다. 이 신호는 AI에게 “이미지 생성 시 참조 이미지의 라인/포즈/구조에 최대한 부합하도록” 지시합니다.

  1. 샘플러 이미지 생성

샘플러(예: K 샘플러)는 노이즈 제거를 통한 이미지 생성 과정에서 ControlNet이 제공한 조건 신호를 참조하여, 최종적으로 텍스트 설명에 부합하면서도 참조 이미지의 특징과 일치하는 이미지를 출력합니다.

ControlNet 워크플로우

전처리기를 사용하지 않는 ControlNet 워크플로우

이 부분에서는 서드파티 플러그인에 의존하지 않는 전형적인 SD1.5 ControlNet 워크플로우를 소개합니다.

1. 모델 파일 준비

이 워크플로우를 사용하려면 다음 내용이 설치되어 있는지 확인하세요:

💡

ComfyUI에서 서로 다른 버전의 드로잉 모델에 해당하는 ControlNet 모델은 서로 호환되지 않습니다. 예를 들어, SD1.5 모델은 Flux의 ControlNet 모델을 사용할 수 없으며, 그 반대도 마찬가지입니다. 따라서 모델을 저장할 때 해당 디렉토리 아래에 모델 버전을 식별하기 위한 폴더를 새로 만드는 것이 좋습니다. 이렇게 하면 모델 선택 시 더 편리합니다. 예:

  • ComfyUI/models/checkpoints/sd1.5
  • ComfyUI/models/controlnet/sd1.5

2. 워크플로우 및 관련 자료

아래 버튼을 클릭하여 해당 워크플로우를 다운로드한 다음, ComfyUI 인터페이스로 드래그하거나 메뉴 바의 Workflows -> Open(Ctrl+O)를 사용하여 로드하세요.

아래 이미지를 참조 이미지로 사용할 것입니다. 다운로드하여 저장하세요.

Openpose 참조 이미지

3. 워크플로우 실행

이미지의 번호를 참조하여 순서대로 해당 작업을 완료하여 이 ControlNet 워크플로우를 완성하세요.

SD1.5 ControlNet 기본 워크플로우

  1. Load Checkpoint 노드에 SD1.5 모델이 로드되어 있는지 확인하세요.
  2. Load ControlNet Model 노드에 control_v11p_sd15_openpose.pth 모델이 인식되고 로드되는지 확인하세요.
  3. Load Image 노드에 위에서 제공한 참조 이미지를 로드하세요.
  4. 위 작업을 완료한 후 Queue 버튼을 클릭하거나 단축키 Ctrl(cmd) + Enter(엔터)를 사용하여 이미지를 생성하세요.

Apply ControlNet 노드의 다양한 매개변수를 조정하여 생성해 보고, 서로 다른 강도(Strength)와 시작 비율(start_percent) 및 종료 비율(end_percent)이 생성 결과에 미치는 영향을 확인해 보세요.

4. 워크플로우 설명

위 과정에서, 우리의 워크플로우와 텍스트-이미지 워크플로우를 비교해 보겠습니다. ComfyUI 텍스트-이미지 워크플로우

가장 주요한 차이점은 원래의 텍스트-이미지에서 해당 조건을 Apply ControlNet 노드에 입력했다는 것입니다. 이 노드를 통해 제어 조건을 추가한 다음, 해당 출력 조건을 KSampler 노드의 조건 입력에 입력했습니다.

생성된 인물이 잘 만들어진 것을 볼 수 있으며, SD1.5 모델에서 흔히 볼 수 있는 인물 사지 오류도 이 워크플로우에서는 나타나지 않았습니다.

위 작업을 완료한 후 Empty Latent Image 노드의 크기를 수정해 보세요. 예를 들어 512x512로 설정한 다음 다시 생성하여 생성된 화면과 참조 이미지의 차이를 관찰해 보세요.

ComfyUI에서 Empty Latent Image 크기 수정

최종 생성된 이미지가 참조 이미지의 중앙 영역만 사용한 것을 볼 수 있습니다. 또한 서로 다른 유형의 참조 이미지는 서로 다른 유형의 ControlNet 모델을 사용해야 합니다. 예를 들어, Openpose는 control_v11p_sd15_openpose.pth 모델을 사용해야 하고, Canny 이미지는 control_v11p_sd15_canny.pth 모델을 사용해야 합니다.

위 워크플로우에서 한 가지 문제가 있을 수 있습니다. 우리가 사용한 참조 이미지(Openpose)가 그렇게 흔하지 않은데, 다른 종류의 일반적인 참조 이미지를 사용하여 해당 이미지를 생성할 수 있을까요? 이때 전처리기가 필요합니다. 다음 부분에서 전처리기를 사용한 워크플로우를 계속 살펴보겠습니다.

전처리기를 사용하는 ControlNet 워크플로우

전처리기란 무엇일까요?

예를 들어, 아래 이미지에서 ComfyUI의 Canny 전처리기를 사용했는데, 이는 이미지의 윤곽선 가장자리 특징을 추출했습니다.

ControlNet 전처리기

이것이 바로 전처리기의 역할입니다. 제공된 참조 이미지(예: 사진, 라인 아트, 낙서 등)를 ControlNet 모델이 이해하고 생성 결과를 안내할 수 있는 구조화된 특징 맵으로 변환합니다.

일반적인 전처리기는 여러 종류가 있습니다:

  • 라인 아트 전처리기(예: canny, lineart): 이미지 가장자리 윤곽선을 추출하여 흑백 라인 아트를 생성합니다.
  • 깊이 맵 전처리기(예: depth_midas): 이미지 내 물체의 원근 계층을 계산하여 그레이스케일 깊이 맵을 생성합니다.
  • 포즈 전처리기(예: openpose): 인체 골격 키포인트를 인식하여, 스틱 피겨 골격 이미지를 생성합니다.

그러나 ComfyUI에는 Canny 전처리기만 있으므로, 이미지 전처리 작업을 완료하기 위해 다른 플러그인에 의존해야 합니다. 아래에서 해당 워크플로우의 내용을 진행하겠습니다.

1. 관련 플러그인 설치

이 튜토리얼에서는 ComfyUI ControlNet Auxiliary Preprocessors 플러그인을 사용해야 합니다

플러그인 설치 튜토리얼은 ComfyUI 플러그인 설치 튜토리얼을 참조하세요.

2. 모델 파일 준비

이 예제에서는 이전 부분의 모델 파일과 동일하게 유지할 수 있습니다.

3. 워크플로우 및 입력 이미지 자료

아래 워크플로우 파일을 다운로드하세요.

ComfyUI를 실행한 후 워크플로우를 드래그하거나 ComfyUI의 단축키 Ctrl+O를 사용하여 이 워크플로우 파일을 열어보세요.

아래 이미지를 다운로드하여 Load Image 노드에 로드하여 사용하세요. OpenPose ControlNet input

SD1.5 OpenPose ControlNet Workflow Img

  1. 1 Load Image 노드에 입력 이미지를 로드하세요.
  2. 2 Load Checkpoint 노드에서 설치한 모델을 선택하세요.
  3. 3 Apply ControlNet 노드에서 control_v11f1p_sd15_openpose.pth 모델을 선택하세요.
  4. Queue를 사용하거나 단축키 Ctrl+Enter를 사용하여 워크플로우를 실행하여 이미지를 생성하세요.

4. 워크플로우 설명

이 워크플로우는 이전 워크플로우와 비교할 때, 사실 이미지 전처리 단계만 추가되었습니다. ComfyUI ControlNet Auxiliary Preprocessors가 제공하는 전처리기 OpenPose Pose 노드에 해당 이미지를 입력하여 이미지 전처리를 완료했습니다.

이상이 ComfyUI에서 ControlNet의 간단한 소개입니다. 앞으로의 ControlNet 관련 튜토리얼에서 더 많은 ControlNet 모델을 소개하고 해당 예시를 제공할 것입니다.