본문 바로가기
웹툰AI/WebUI Forge

WebUI Forge🍵이미지를 제어하는 컨트롤넷

by Kwoon 2025. 6. 30.

 

✨ 이미지를 제어하는 컨트롤넷이란?

Stable Diffusion WebUI에서 컨트롤넷(ControlNet)은 Stable Diffusion 모델의 이미지 생성 과정을 사용자가 더욱 정교하게 제어할 수 있도록 돕는 혁신적인 기능입니다. 

 

프롬프트만으로 이미지를 제어하는 데 한계가 있습니다. 하지만 컨트롤넷을 사용하면 추가적인 입력 이미지(Conditioning Image)를 통해 생성될 이미지의 자세, 윤곽선, 깊이, 색상 등을 직접 지정할 수 있게 해줍니다.

 

1️⃣  컨트롤넷의 원리

컨트롤넷은 Stable Diffusion 모델의 신경망 구조에 새로운 입력 경로(Path)를 추가하여 작동합니다.

 

🍇 Stable Diffusion의 기본 작동 방식

Stable Diffusion은 텍스트 프롬프트(및 노이즈)를 입력받아 이미지를 생성하는 동안, U-Net이라는 핵심 네트워크를 통해 노이즈를 점진적으로 제거하고 원하는 이미지를 만들어냅니다. 컨트롤넷은 이 U-Net의 중간 계층(Middle Block)과 모든 스킵 컨넥션(Skip Connections)에 연결됩니다.

 

컨트롤넷은 기본 Stable Diffusion 모델의 U-Net 인코더 블록을 복사하여 새로운 "컨트롤 넷"을 만듭니다. 이 컨트롤 넷은 기본 모델과 동일한 아키텍처를 가지지만, 새로운 조건화 입력(Conditioning Input)을 받아 학습됩니다.

 

컨트롤넷에는 "제로 콘볼루션"이라는 특별한 계층이 포함되어 있습니다. 이 계층은 학습 초기에는 모든 가중치가 0으로 초기화되어, 학습 초기에 컨트롤넷이 기본 모델의 출력에 전혀 영향을 미치지 않도록 합니다. 이는 기본 모델의 사전 학습된 지식을 보호하면서 컨트롤넷이 새로운 조건화 입력에 대한 학습을 점진적으로 시작할 수 있게 합니다.

 

🍈 조건화 입력(Conditioning Input)

사용자가 제공하는 추가 이미지(예: 포즈 이미지, 스케치, 깊이 맵 등)가 이 컨트롤넷의 입력으로 사용됩니다. 이 이미지는 특정 프리프로세서(Preprocessor)를 거쳐 모델이 이해할 수 있는 형태의 '조건 맵(Conditioning Map)'으로 변환됩니다.

 

🍊 결합

컨트롤넷의 출력은 기본 Stable Diffusion 모델의 U-Net으로 전달되어, 텍스트 프롬프트와 함께 이미지 생성 과정에 영향을 미칩니다. 이 과정에서 컨트롤넷은 생성될 이미지의 구조적 일관성을 강력하게 제어하는 역할을 합니다.

 

간단히 말해, 컨트롤넷은 기존 Stable Diffusion 모델이 '무엇을 그릴지'만 알던 것을, '어떤 형태로 그릴지'까지 정확하게 지시할 수 있게 해주는 보조 두뇌 같은 역할을 합니다.

 

2️⃣  컨트롤넷의 주요 기능 (모델 및 프리프로세서)

컨트롤넷은 다양한 종류의 '모델'과 '프리프로세서'를 조합하여 사용합니다. 각 컨트롤넷 모델은 특정 종류의 정보(예: 포즈, 윤곽선, 깊이)를 제어하도록 학습되어 있습니다. WebUI에 model.ckpt 또는 .safetensors 확장자를 가진 컨트롤넷 모델 파일을 설치해야 합니다.

 

🥑 OpenPose

인물(또는 동물)의 자세를 제어합니다. 스틱맨 형태의 포즈 이미지를 기반으로 합니다.

 

🍆 Canny

이미지의 가장자리(윤곽선)를 제어합니다. 흑백의 외곽선 이미지를 기반으로 합니다.


🥔 Depth

이미지의 깊이(원근감)를 제어합니다. 회색조의 깊이 맵(어두울수록 가깝고 밝을수록 멀다)을 기반으로 합니다.


🥕 Normal Map (Normal)

3D 객체의 표면 법선(빛 반사 방향) 정보를 제어합니다.


🌽 Lineart
스케치나 선화를 기반으로 이미지를 생성합니다. Canny보다 더 깨끗한 선을 추출합니다.


🌶️ Scribble

자유로운 스크리블(낙서)을 기반으로 이미지를 생성합니다.


🥒 Segmentation (Seg)

이미지의 의미론적 분할(semantic segmentation) 정보를 기반으로 특정 객체나 영역의 위치를 제어합니다.


🥬 Softedge (HED)

Canny보다 더 부드러운 가장자리 감지를 통해 구조를 제어합니다.

 

🥦 Tile

이미지를 타일처럼 분할하여 특정 해상도로 업스케일링할 때 유용합니다.


🧄 IP-Adapter

이미지의 스타일이나 색상, 구도 등을 참조하여 새로운 이미지를 생성합니다.


🧅 Reference

특정 참조 이미지의 전반적인 구도나 스타일을 따릅니다.


🥜 Inpaint

인페인트 작업 시 마스킹된 영역을 제어합니다.


🍱 프리프로세서 (Preprocessor)

입력 이미지를 컨트롤넷 모델이 이해할 수 있는 '조건 맵'으로 변환하는 역할을 합니다.

 

대부분의 컨트롤넷 모델에는 해당 모델에 맞는 프리프로세서가 함께 제공됩니다 (예: OpenPose 모델에는 openpose 프리프로세서). 일부 프리프로세서는 추가적인 설정(예: Canny의 Low threshold, High threshold)을 가집니다.

 

3️⃣  컨트롤넷 사용법 (WebUI Forge 기준)

🍦 컨트롤넷 모델 파일 설치

원하는 컨트롤넷 모델 파일(.safetensors 또는 .ckpt 확장자)을 다운로드하여 stable-diffusion-webui-forge/models/ControlNet 폴더에 넣습니다. (예: Civitai 등에서 다운로드)

 

🍧 WebUI에서 컨트롤넷 활성화

Txt2Img 또는 Img2Img 탭으로 이동합니다.

 

하단에 있는 ControlNet 섹션을 확장합니다. (일반적으로 ControlNet이라고 쓰인 부분을 클릭하면 펼쳐집니다.)

 

Enable 체크박스를 선택하여 컨트롤넷 기능을 활성화합니다.

 

(선택 사항) 여러 개의 컨트롤넷을 동시에 사용하고 싶다면 ControlNet Units의 숫자를 늘립니다.

 

🍨 입력 이미지 로드

컨트롤넷 유닛 내의 Drag and drop image here 영역에 제어에 사용할 이미지를 드래그 앤 드롭하거나 클릭하여 업로드합니다. (예: 인물 포즈 사진, 손으로 그린 스케치 등)

 

🍩 컨트롤넷 모델 및 프리프로세서 선택

Control Type 드롭다운 메뉴에서 사용할 컨트롤넷 모델을 선택합니다. (예: control_v11p_sd15_openpose)

 

Preprocessor 드롭다운 메뉴에서 해당 모델에 맞는 프리프로세서를 선택합니다. (예: openpose)

 

🍪 팁
만약 이미지 업로드 후 Preprocessor에서 None이 아닌 특정 프리프로세서를 선택하고, 그 옆의 "💥" (Generate Processed Image)을 클릭하면, 프리프로세서가 입력 이미지를 어떻게 변환하는지 미리 볼 수 있습니다. 이 이미지가 최종 조건 맵으로 사용됩니다.

 

🎂 제어 강도 조절 (Control Weight)

Control Weight 슬라이더를 조절하여 컨트롤넷이 생성될 이미지에 미치는 영향의 강도를 설정합니다.

0 : 영향 없음.

1 : 표준 강도. (가장 일반적인 설정)

>1 : 더 강한 영향을 줍니다. (원본 이미지의 구조를 매우 강하게 따릅니다.)

 

🍰 Timestep Range 시작/종료 스텝 조절 (Starting/Ending Control Step)

Guidance Start (시작 스텝) 및 Guidance End (종료 스텝) 슬라이더를 조절하여 전체 샘플링 스텝 중 컨트롤넷이 언제부터 언제까지 영향을 미칠지 설정합니다.

 

🧁 ControlNet Start (Start Control Step / ControlNet Start Percentage)

ControlNet의 제어가 시작될 지점을 전체 생성 과정의 초기 단계에서 설정합니다.


🥧 값이 낮을수록 (예: 0.0 또는 0%)

생성 과정의 아주 초기부터 ControlNet의 강한 제어를 받습니다. 이는 이미지의 전반적인 구조나 구도를 ControlNet이 강력하게 따르도록 합니다.


🍫 값이 높을수록 (예: 0.3 또는 30%)

생성 과정의 어느 정도 진행된 후에 ControlNet의 제어가 시작됩니다. 초기 단계에서는 프롬프트와 모델의 자유로운 생성이 이루어지고, 나중에 ControlNet이 개입하여 세부적인 조정을 합니다.

 

🍬 ControlNet End (End Control Step / ControlNet End Percentage)

ControlNet의 제어가 끝날 지점을 전체 생성 과정의 후기 단계에서 설정합니다.


🍭 값이 높을수록 (예: 1.0 또는 100%)

생성 과정의 거의 끝까지 ControlNet의 제어를 받습니다. 이는 이미지의 세부적인 디테일이나 질감까지 ControlNet의 영향을 받도록 합니다.


🍮 값이 낮을수록 (예: 0.7 또는 70%)

생성 과정의 중반 이후에는 ControlNet의 제어가 끝나고, 나머지 과정은 주로 프롬프트와 모델 자체의 해석에 맡겨집니다. 이는 ControlNet의 강한 제어가 필요한 부분만 적용하고, 나머지 디테일은 모델의 창의성에 맡기고 싶을 때 유용합니다.

 

🍯 예시

Guidance Start : 0.0, Guidance End: 1.0 (전체 과정 동안 영향)

Guidance Start : 0.2, Guidance End: 0.8 (중간 단계에서만 영향)

 

🐙 이미지 생성

Generate 버튼을 클릭하여 이미지를 생성합니다.

 

🐚 컨트롤넷 활용 팁

프롬프트와 조화

컨트롤넷은 구조를 제어하지만, 프롬프트는 내용과 스타일을 제어합니다. 둘을 잘 조화시키는 것이 중요합니다. (예: OpenPose로 포즈를 잡고, 프롬프트로 "fantasy warrior, knight armor" 등을 넣어 구체적인 모습을 만듭니다.)

 

🐡 다중 컨트롤넷

여러 개의 컨트롤넷을 동시에 활성화하여 각기 다른 정보를 제어할 수 있습니다. (예: OpenPose로 자세, Canny로 얼굴 윤곽선을 동시에 제어하여 매우 정교한 결과물을 얻을 수 있습니다.)

 

🐟 작은 Denoising Strength (Img2Img에서)

Img2Img 탭에서 컨트롤넷을 사용할 경우, Denoising Strength를 너무 높게 설정하면 컨트롤넷의 구조 제어력이 약해질 수 있습니다.

 

🐠 모델 호환성

사용하는 Stable Diffusion 체크포인트 모델과 컨트롤넷 모델이 서로 호환되는지 확인해야 합니다. (예: SD 1.5 기반 컨트롤넷은 SD 1.5 체크포인트에, SDXL 기반 컨트롤넷은 SDXL 체크포인트에 사용.)


컨트롤넷은 Stable Diffusion 사용자들이 이미지 생성에 대한 '통제력'을 획기적으로 높여주는 기능이며, AI 아트 창작의 가능성을 무한히 확장시켜 주었습니다.

 

728x90
반응형