Latent Diffusion Model (LDM)
잠재 디퓨전 모델(LDM)은 픽셀 대신 오토인코더의 압축된 잠재 공간에서 디퓨전을 수행하며, Stable Diffusion의 기반이 되는 설계입니다.
잠재 확산 모델(LDM)은 원시 픽셀 대신 사전 학습된 오토인코더의 압축 표현을 노이즈 제거해 데이터를 생성하는 확산 모델입니다. Robin Rombach, Andreas Blattmann, Dominik Lorenz, Patrick Esser, Björn Ommer는 CVPR 2022에서 발표한 잠재 확산 모델을 이용한 고해상도 이미지 합성 논문에서 이 접근법을 소개했습니다. 오토인코더는 모델링 비용이 많이 들고 이미지의 외관에 거의 영향을 주지 않는 미세한 픽셀 세부 정보를 제거하므로, 확산 네트워크는 콘텐츠와 구도에 용량을 집중할 수 있습니다. 따라서 학습과 샘플링 비용은 픽셀 공간 확산보다 훨씬 낮으며, 가장 잘 알려진 LDM인 Stable Diffusion은 일반 소비자용 GPU 한 대에서 이미지를 생성할 수 있습니다. 생성형 AI의 현재 이미지, 동영상, 오디오 생성 모델 대부분은 동일한 2단계 설계를 따릅니다.
잠재 확산의 작동 방식#
첫 번째 단계에서는 이미지를 압축합니다. 인코더는 크기가 H×W×3인 이미지를 크기 H/f×W/f×c인 잠재 표현으로 변환합니다. 여기서 f는 다운샘플링 계수이고 c는 잠재 채널 수입니다. 디코더는 잠재 표현을 픽셀로 다시 변환합니다. Rombach와 동료들은 지각 손실 및 GAN 판별기와 같은 패치 기반 적대적 목적 함수를 사용해 이 오토인코더를 학습하여 재구성된 이미지의 선명도를 유지하고, 표준 정규 분포에 가까워지도록 작은 KL 페널티를 주거나 벡터 양자화를 적용해 잠재 표현을 정규화했습니다. 4~16의 다운샘플링 계수는 속도와 품질의 균형을 맞췄습니다. 픽셀 공간 학습(f = 1)은 느렸고, f = 32는 압축이 지나쳐 샘플 품질이 떨어졌습니다. Stable Diffusion의 오토인코더는 f = 8 및 4개 채널을 사용합니다. 다음 코드는 사진을 인코딩한 뒤 다시 디코딩하고 왕복 과정에서 손실되는 내용을 측정합니다:
import urllib.request
import numpy as np
import torch
from diffusers import AutoencoderKL
from PIL import Image
# Stable Diffusion's autoencoder, the first stage of a latent diffusion model
vae = AutoencoderKL.from_pretrained("stabilityai/sd-vae-ft-mse")
# Load a photo and scale its pixels to [-1, 1]
image = Image.open(urllib.request.urlopen("https://ultralytics.com/images/bus.jpg")).convert("RGB").resize((480, 640))
x = torch.tensor(np.array(image), dtype=torch.float32).permute(2, 0, 1)[None] / 127.5 - 1
# Encode to the latent that diffusion runs on, then decode back to pixels
with torch.no_grad():
latent = vae.encode(x).latent_dist.mode()
recon = vae.decode(latent).sample.clamp(-1, 1)
psnr = 10 * torch.log10(4 / torch.mean((recon - x) ** 2))
print(f"image {tuple(x.shape)} -> latent {tuple(latent.shape)}: {x.numel() // latent.numel()}x fewer values")
print(f"reconstruction PSNR: {psnr:.1f} dB")
Image.fromarray(((recon[0] + 1) * 127.5).byte().permute(1, 2, 0).numpy()).save("bus_reconstructed.jpg")image (1, 3, 640, 480) -> latent (1, 4, 80, 60): 48x fewer values과 reconstruction PSNR: 23.0 dB을 출력합니다. 저장된 bus_reconstructed.jpg에는 버스, 사람들, 도로가 그대로 남지만 버스 측면의 작은 글자는 깨져서 나타납니다. 4채널 잠재 표현으로는 미세한 디테일을 담을 수 없기 때문입니다.
두 번째 단계는 이러한 잠재 표현으로 학습하는 일반적인 확산 모델입니다. 학습 시에는 이미지를 인코딩하고 무작위 스텝에서 가우시안 노이즈를 추가한 다음, 원 논문의 U-Net이나 최신 모델 대부분의 확산 Transformer와 같은 노이즈 제거 네트워크가 해당 노이즈를 예측하도록 학습합니다. 정류 흐름 모델은 대신 노이즈를 깨끗한 잠재 표현으로 이동시키는 속도를 예측합니다. 텍스트 프롬프트, 클래스 레이블, 의미 맵의 임베딩에 잠재 표현이 어텐션을 적용할 수 있도록 교차 어텐션 계층을 통해 조건을 입력합니다. 생성은 무작위 잠재 노이즈에서 시작해 조건에 따라 단계적으로 노이즈를 제거하고 마지막에 디코더를 한 번 실행합니다. 따라서 연산 비용이 큰 각 스텝은 작은 잠재 표현에서 수행됩니다.
Stable Diffusion부터 최신 모델까지#
- Stable Diffusion: 2022년 8월 공개되었으며, LDM 방식을 64×64×4 잠재 표현, 파라미터 8억 6천만 개의 U-Net, CLIP 텍스트 인코더를 사용한 512×512 텍스트-이미지 생성으로 확장했습니다. 가중치는 누구나 다운로드할 수 있었습니다.
- Stable Diffusion 3: 16채널 오토인코더를 도입해 채널 4개를 사용한 25.12 dB에서 28.62 dB로 재구성 PSNR을 높였으며, U-Net을 정류 흐름으로 학습한 멀티모달 확산 Transformer로 대체했습니다. Black Forest Labs의 FLUX.1 모델도 정류 흐름 Transformer로 16채널 잠재 표현의 노이즈를 제거합니다.
- 비디오 및 오디오: 비디오 생성기는 공간과 시간 축에서 클립을 압축합니다. OpenAI는 Sora가 비디오를 저차원 잠재 공간으로 압축한 뒤 시공간 패치로 나눈다고 설명했습니다. AudioLDM과 Stability AI의 Stable Audio는 동일한 접근 방식을 스펙트로그램 또는 파형 잠재 표현에 적용합니다.
- 잠재 일관성 모델: LDM을 증류해 20~50스텝 대신 2~4스텝으로 생성하도록 하므로 거의 실시간 생성이 가능합니다.
LDM과 관련 용어 비교#
- 픽셀 공간 확산 모델: 모든 픽셀에서 노이즈 추가 및 제거 과정을 수행합니다. LDM도 확산 모델이며, 과정이 수행되는 위치만 다릅니다.
- 변분 오토인코더: VAE는 샘플링한 잠재 표현을 한 번 디코딩해 생성하며 샘플이 흐릿한 경향이 있습니다. LDM은 압축에만 VAE 스타일 오토인코더를 사용하고 생성은 확산 모델에 맡깁니다.
- Stable Diffusion: Stability AI, CompVis, Runway가 개발한 LDM 계열로, 모든 Stable Diffusion 모델은 LDM이지만 LDM에는 FLUX, 비디오 생성 모델, 오디오 모델도 포함됩니다.
응용 분야#
LDM은 텍스트-이미지 생성, 원 논문에서 당시 최고 성능을 새로 기록한 이미지 인페인팅, 초해상도, 시맨틱 맵에서 이미지를 생성하는 레이아웃-이미지 작업을 지원합니다. 컴퓨터 비전에서는 촬영하기 어려운 희귀 결함, 특이한 날씨, 드문 시점의 합성 데이터도 생성합니다. 생성된 이미지에는 레이블이 없지만 Ultralytics auto_annotate 함수는 YOLO26 모델로 객체를 감지하고 Meta SAM 세그멘테이션 모델로 각 감지 박스의 윤곽을 표시하여 이미지 폴더에 세그멘테이션 레이블을 지정하고, 학습용 YOLO 형식 세그멘테이션 레이블을 작성합니다.










