Stable Diffusion
스테이블 디퓨전
Stability AI의 오픈소스 이미지 생성 모델입니다. Latent Diffusion Model(LDM) 아키텍처를 기반으로 텍스트 프롬프트에서 고품질 이미지를 생성하며, 로컬 GPU에서도 실행 가능한 효율성으로 이미지 생성 AI의 대중화를 이끌었습니다.
스테이블 디퓨전
Stability AI의 오픈소스 이미지 생성 모델입니다. Latent Diffusion Model(LDM) 아키텍처를 기반으로 텍스트 프롬프트에서 고품질 이미지를 생성하며, 로컬 GPU에서도 실행 가능한 효율성으로 이미지 생성 AI의 대중화를 이끌었습니다.
Stable Diffusion은 Stability AI가 개발한 Latent Diffusion Model(LDM) 기반의 텍스트-이미지 생성 모델입니다. 기존 Diffusion Model이 픽셀 공간에서 직접 작동하여 계산 비용이 높았던 반면, Stable Diffusion은 VAE(Variational Autoencoder)로 압축된 잠재 공간(latent space)에서 노이즈 제거 과정을 수행하여 효율성을 크게 개선했습니다.
2022년 8월 Stable Diffusion 1.4가 오픈소스로 공개되면서 AI 이미지 생성의 민주화가 시작되었습니다. DALL-E나 Midjourney와 달리 누구나 무료로 모델 가중치를 다운로드하여 로컬에서 실행하거나 커스텀 학습(Fine-tuning)을 할 수 있었습니다. 이후 SD 1.5, SD 2.0, SDXL, SD3 등 지속적으로 발전하며 해상도, 프롬프트 이해력, 이미지 품질이 향상되었습니다.
핵심 아키텍처는 세 가지 컴포넌트로 구성됩니다: (1) VAE - 이미지를 잠재 공간으로 인코딩/디코딩, (2) U-Net - 잠재 공간에서 노이즈 예측 및 제거, (3) Text Encoder - CLIP 기반으로 텍스트 프롬프트를 임베딩으로 변환. 생성 과정은 순수 노이즈에서 시작하여 텍스트 조건에 맞게 점진적으로 노이즈를 제거하는 역확산(reverse diffusion) 과정입니다.
실무에서 Stable Diffusion은 다양한 워크플로우에 활용됩니다: Text-to-Image(텍스트 프롬프트로 이미지 생성), Image-to-Image(기존 이미지를 변형), Inpainting(이미지 일부 수정), ControlNet(포즈, 엣지 등 조건부 생성), LoRA/DreamBooth(특정 스타일이나 객체 학습). 오픈소스 특성상 ComfyUI, Automatic1111, Forge 등 다양한 커뮤니티 도구와 결합되어 프로덕션 파이프라인에 통합됩니다.
Hugging Face Diffusers를 사용한 Stable Diffusion 이미지 생성 예제입니다.
# Stable Diffusion XL 이미지 생성 예제
from diffusers import StableDiffusionXLPipeline
import torch
# SDXL 파이프라인 로드 (약 6.5GB VRAM 필요)
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
use_safetensors=True,
variant="fp16"
)
pipe.to("cuda")
# 메모리 최적화 (VRAM이 부족한 경우)
pipe.enable_model_cpu_offload()
pipe.enable_vae_slicing()
# 이미지 생성
prompt = "A majestic mountain landscape at sunset, photorealistic, 8k uhd"
negative_prompt = "blurry, low quality, distorted, artifacts"
image = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
num_inference_steps=30, # 품질과 속도 트레이드오프
guidance_scale=7.5, # CFG scale: 높을수록 프롬프트에 충실
width=1024,
height=1024,
generator=torch.Generator("cuda").manual_seed(42)
).images[0]
image.save("output.png")
# Image-to-Image 변환
from diffusers import StableDiffusionXLImg2ImgPipeline
from PIL import Image
img2img_pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
use_safetensors=True
).to("cuda")
init_image = Image.open("input.png").resize((1024, 1024))
result = img2img_pipe(
prompt="Convert to anime style, vibrant colors",
image=init_image,
strength=0.7, # 0-1: 높을수록 변화가 큼
num_inference_steps=30
).images[0]
# ControlNet으로 포즈 제어
from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline
from controlnet_aux import OpenposeDetector
controlnet = ControlNetModel.from_pretrained(
"thibaud/controlnet-openpose-sdxl-1.0",
torch_dtype=torch.float16
)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
controlnet=controlnet,
torch_dtype=torch.float16
).to("cuda")
# 포즈 추출 및 조건부 생성
pose_detector = OpenposeDetector.from_pretrained("lllyasviel/ControlNet")
pose_image = pose_detector(Image.open("reference_pose.png"))
image = pipe(
prompt="Professional dancer in elegant dress",
image=pose_image,
controlnet_conditioning_scale=0.8
).images[0]
| 모델 | 기본 해상도 | 파라미터 | VRAM 요구량 |
|---|---|---|---|
| SD 1.5 | 512x512 | 860M | ~4GB (FP16) |
| SD 2.1 | 768x768 | 860M | ~5GB (FP16) |
| SDXL 1.0 | 1024x1024 | 6.6B | ~8GB (FP16) |
| SD 3 Medium | 1024x1024 | 2B | ~10GB |
| SD 3.5 Large | 1024x1024 | 8B | ~16GB |
| 서비스 | 가격 (이미지당) | 특징 |
|---|---|---|
| SD 1.5 | $0.006 | 레거시, 가장 저렴 |
| SDXL | $0.011 | 고해상도 기본 모델 |
| SD 3 | $0.037 | 향상된 프롬프트 이해력 |
| SD 3.5 Large | $0.065 (6.5 credits) | 최신 고품질 모델 |
| Stable Image Core | $0.03 | 속도 최적화 |
| Stable Image Ultra | $0.08 | 최고 품질 |
| 옵션 | 초기 비용 | 운영 비용 | 장점 |
|---|---|---|---|
| 로컬 GPU (RTX 4090) | ~$1,600 | 전기료만 | 무제한 생성, 커스텀 모델 |
| 클라우드 GPU (A100) | 없음 | $1-2/시간 | 유연한 스케일링 |
| Stability AI API | 없음 | 이미지당 과금 | 관리 불필요 |
* Community License: 연 매출 $1M 미만 기업/개인은 SDXL, SD 3.5 등 핵심 모델을 무료로 셀프호스팅 가능
"제품 이미지는 SDXL로 생성하고, 일관된 브랜드 스타일을 위해 LoRA를 학습시켜 적용하면 좋겠습니다."
"Stable Diffusion은 Latent Space에서 Diffusion을 수행해서 연산 효율이 높습니다. SDXL은 두 개의 Text Encoder를 사용해 프롬프트 이해력이 향상됐고요."
"ComfyUI로 워크플로우 구성하고, ControlNet으로 포즈 제어, IP-Adapter로 스타일 참조하면 일관된 캐릭터 생성이 가능해요."
기본 모델만 비교하면 그럴 수 있지만, 커스텀 모델, LoRA, ControlNet 등을 활용하면 특정 도메인에서 더 우수한 결과를 낼 수 있습니다. 특히 일관된 스타일이 필요한 상업적 용도에서 강점을 발휘합니다.
guidance_scale(CFG)을 너무 높이면 색상이 과포화되거나 이미지가 부자연스러워집니다. 일반적으로 7-10 범위가 적절하며, 스타일에 따라 조정이 필요합니다.
프로젝트 요구사항에 맞는 모델을 선택하세요. 빠른 프로토타이핑은 SD 1.5, 고품질 결과물은 SDXL/SD3, 특정 스타일은 파인튜닝된 모델을 사용합니다. Negative Prompt와 적절한 Sampler(DPM++ 2M Karras 등) 설정도 품질에 큰 영향을 미칩니다.