SD WebUI 로컬 구동 환경 셋업 노트
AUTOMATIC1111 Stable Diffusion web UI를 로컬에서 운영하며 겪은 셋업 함정과 대처법을 정리한 관찰자 시점 기술 노트
이 프로젝트에서의 ControlNet 활용
pose/depth/canny 등 conditioning 기반 image-to-image 확장
프로젝트 1개에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.
이미지 생성 모델에 pose·depth·canny 등 조건 이미지를 더해 구도와 형태를 제어하는 확장 모듈
ControlNet은 Stable Diffusion 같은 text-to-image diffusion 모델에 추가적인 조건(conditioning) 입력을 결합해, 프롬프트 텍스트만으로는 지정하기 어려운 인물 자세, 깊이감, 윤곽선 등 구조적 정보를 그대로 반영하도록 만든 신경망 구조입니다. 기존 모델은 텍스트만으로 이미지를 생성하다 보니 원하는 구도나 포즈를 정확히 재현하기 어려웠는데, ControlNet은 원본 모델의 가중치를 건드리지 않고 별도의 조건 인코딩 경로를 덧붙여 이 문제를 해결합니다. 그 결과 사용자가 준비한 스케치, 뼈대 포즈, 깊이맵 등을 참조 삼아 원하는 화면 배치를 유지한 채 다양한 스타일의 이미지를 생성할 수 있습니다.
입력 이미지에서 canny edge를 추출한 뒤, 이를 조건으로 삼아 프롬프트에 맞는 새 이미지를 생성하는 최소 예시입니다.
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
import cv2, numpy as np
from PIL import Image
# canny edge 전용 ControlNet 가중치 로드
controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny")
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", controlnet=controlnet
)
# 원본 이미지를 전처리해 conditioning image 생성
image = Image.open("input.png")
canny = cv2.Canny(np.array(image), 100, 200)
canny_image = Image.fromarray(canny)
# 텍스트 프롬프트 + conditioning image로 생성
result = pipe("a photo of a cat", image=canny_image).images[0]위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.
위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.
AUTOMATIC1111 Stable Diffusion web UI를 로컬에서 운영하며 겪은 셋업 함정과 대처법을 정리한 관찰자 시점 기술 노트
이 프로젝트에서의 ControlNet 활용
pose/depth/canny 등 conditioning 기반 image-to-image 확장
위 프로젝트들에서 같이 쓰인 다른 기술입니다.