🤖 AI/ML

Diffusion Model

노이즈를 점진적으로 제거하여 이미지를 생성하는 생성 모델

📖 상세 설명

Diffusion Model(확산 모델)은 데이터에 노이즈를 점진적으로 추가하는 과정을 학습한 뒤, 그 역과정을 통해 순수 노이즈에서 새로운 데이터를 생성하는 생성 모델입니다. 2020년 DDPM(Denoising Diffusion Probabilistic Models) 발표 이후 이미지 생성 분야에서 GAN을 대체하는 주류 패러다임이 되었습니다.

Diffusion Model의 발전 과정은 2015년 비평형 열역학 기반 이론 제시, 2020년 DDPM의 실용적 구현, 2021년 Latent Diffusion(Stable Diffusion의 기반), 2022년 DALL-E 2와 Imagen 발표로 이어집니다. 2023년 이후에는 ControlNet, IP-Adapter 등 제어 가능한 생성 기법과 DiT(Diffusion Transformer) 아키텍처가 등장하며 빠르게 진화 중입니다.

핵심 구성요소는 노이즈 스케줄러(Scheduler), 노이즈 예측 네트워크(U-Net 또는 Transformer), 조건부 임베딩(텍스트 인코더)입니다. 학습 시 무작위 타임스텝 t에서 노이즈가 추가된 이미지와 조건을 입력받아 추가된 노이즈를 예측합니다. 추론 시에는 순수 노이즈에서 시작해 예측 노이즈를 제거하는 스텝을 반복하여 이미지를 생성합니다.

실무에서 Diffusion Model은 Stable Diffusion, Midjourney, DALL-E 3 등 대표적인 이미지 생성 서비스의 핵심 엔진입니다. 텍스트-이미지 생성 외에도 이미지 편집(inpainting), 이미지 확장(outpainting), 스타일 변환, 비디오 생성(Sora) 등 다양한 응용이 가능합니다. 오픈소스 Stable Diffusion은 파인튜닝과 LoRA 학습을 통해 특정 도메인에 맞춤화할 수 있어 기업 활용도가 높습니다.

💻 코드 예제

# Hugging Face Diffusers로 이미지 생성
from diffusers import StableDiffusionPipeline
import torch

# Stable Diffusion 모델 로드
pipe = StableDiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-2-1",
    torch_dtype=torch.float16
).to("cuda")

# 메모리 최적화 (선택)
pipe.enable_attention_slicing()
pipe.enable_vae_slicing()

# 텍스트-이미지 생성
prompt = "A serene mountain landscape at sunset, photorealistic, 8k"
negative_prompt = "blurry, low quality, distorted"

image = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    num_inference_steps=30,    # 샘플링 스텝 수
    guidance_scale=7.5,         # CFG 강도
    height=768,
    width=768
).images[0]

image.save("generated_image.png")

# 다양한 스케줄러 사용
from diffusers import DPMSolverMultistepScheduler

# 빠른 DPM-Solver 스케줄러로 교체 (20스텝으로 품질 유지)
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
fast_image = pipe(prompt, num_inference_steps=20).images[0]

print("이미지 생성 완료!")

🗣️ 실무에서 이렇게 말하세요

AI 서비스 기획 회의에서

"이미지 생성 기능을 위해 Stable Diffusion XL 도입을 검토했습니다. 기본 SDXL은 1024x1024 네이티브 해상도를 지원하고, Refiner 모델로 디테일을 보강할 수 있어요. API 비용은 이미지당 약 0.02달러 수준입니다."

기술 면접에서

"Latent Diffusion은 픽셀 공간 대신 VAE로 압축된 잠재 공간에서 디퓨전을 수행합니다. 512x512 이미지를 64x64 latent로 압축하면 연산량이 64배 줄어들어, 소비자 GPU에서도 고해상도 생성이 가능해진 핵심 혁신입니다."

모델 최적화 논의에서

"프로덕션 배포 시 속도가 중요하면 LCM(Latent Consistency Model) 적용을 권장합니다. 기본 50스텝이 4스텝으로 줄어들어 추론 시간이 90% 감소하면서도 품질 저하가 미미합니다."

⚠️ 흔한 실수 & 주의사항

⚠️
저작권 및 라이선스 확인 필수

Stable Diffusion은 CreativeML Open RAIL-M 라이선스로 상업적 사용이 가능하지만, 학습 데이터 출처 논란이 있습니다. 기업 서비스에서는 Adobe Firefly처럼 학습 데이터 출처가 명확한 모델 사용을 검토하세요.

⚠️
NSFW 콘텐츠 필터링

Diffusion Model은 부적절한 콘텐츠를 생성할 수 있습니다. Safety Checker 모듈을 반드시 활성화하고, 프롬프트 필터링과 생성 이미지 검수 파이프라인을 구축해야 합니다.

⚠️
하드웨어 요구사항

SDXL 추론에는 최소 8GB VRAM, 학습에는 24GB 이상의 GPU가 필요합니다. 클라우드 배포 시 A10G(24GB) 또는 A100(40/80GB) 인스턴스 비용을 예산에 반영하세요.

🔗 관련 용어

📚 더 배우기