Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Diffusion Models

확산 모델은 점진적으로 노이즈를 추가하는 과정을 역으로 학습해, 순수한 노이즈에서 새로운 샘플로 한 단계씩 변환하여 이미지, 동영상, 오디오를 생성합니다.

확산 모델은 점진적인 노이즈 추가 과정을 되돌리는 방법을 학습해 데이터를 생성하는 생성형 AI 모델입니다. 학습 중 이미지나 기타 데이터에 여러 작은 단계에 걸쳐 가우시안 노이즈를 추가하고, 신경망은 각 단계에서 노이즈를 예측하는 방법을 학습합니다. 생성 시 모델은 완전히 무작위인 노이즈에서 시작해 새 샘플이 나타날 때까지 단계적으로 노이즈를 제거합니다. Jascha Sohl-Dickstein과 동료들은 2015년 비평형 열역학을 이용한 심층 비지도 학습에서 이 접근 방식을 제안했습니다. Jonathan Ho, Ajay Jain, Pieter Abbeel은 2020년 잡음 제거 확률적 확산 모델(DDPM)로 경쟁력 있는 성능을 달성했으며, 이 모델은 CIFAR-10에서 최첨단 FID 3.17을 기록했습니다. 2021년 OpenAI 연구진은 확산 모델이 ImageNet 이미지 합성에서 GAN보다 뛰어나다는 점을 보였으며, 현재 확산 모델과 플로 매칭 계열 모델은 텍스트-이미지 시스템인 Stable Diffusion, 동영상 생성기, 이미지 편집기, 과학 모델을 구동합니다.

확산 모델의 작동 방식#

순방향 과정은 학습되는 것이 아니라 고정되어 있습니다. T개 단계마다 가우시안 노이즈를 조금씩 추가합니다. DDPM은 단계별 노이즈 분산이 0.0001에서 0.02까지 선형으로 증가하도록 설정하고 T = 1,000을 사용합니다. 가우시안 노이즈의 합도 가우시안 분포를 따르므로, 학습 이미지는 폐형식으로 임의의 단계 t로 바로 이동할 수 있습니다. xt = sqrt(alpha_bar_t) * x0 + sqrt(1 - alpha_bar_t) * noise에서 alpha_bar_t은 처음 t개 단계에 대한 1 - beta의 곱입니다. 학습 과정에서는 이미지와 임의의 단계, 새로운 노이즈를 반복해서 선택해 xt을 만들고, DDPM의 단순화된 목적 함수인 평균 제곱 오차를 사용해 네트워크가 해당 노이즈를 예측하도록 학습합니다. 다음 코드는 DDPM의 스케줄을 사용해 사진에 순방향 과정을 적용합니다.

import urllib.request

import numpy as np
import torch
from PIL import Image

# DDPM's linear schedule: 1,000 steps whose noise variance rises from 0.0001 to 0.02
betas = torch.linspace(1e-4, 0.02, 1000)
alpha_bar = torch.cumprod(1 - betas, dim=0)

# 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((256, 256))
x0 = torch.tensor(np.array(image), dtype=torch.float32).permute(2, 0, 1) / 127.5 - 1

# Jump straight to step t in closed form: x_t = sqrt(alpha_bar) * x0 + sqrt(1 - alpha_bar) * noise
frames = []
for t in (0, 99, 299, 599, 999):
    xt = alpha_bar[t].sqrt() * x0 + (1 - alpha_bar[t]).sqrt() * torch.randn_like(x0)
    frames.append(((xt.clamp(-1, 1) + 1) * 127.5).byte().permute(1, 2, 0).numpy())
    print(f"step {t + 1}: image weight {alpha_bar[t].sqrt():.3f}, noise weight {(1 - alpha_bar[t]).sqrt():.3f}")
Image.fromarray(np.hstack(frames)).save("forward_diffusion.jpg")

이미지 가중치는 1단계의 1.000에서 100단계의 0.947, 300단계의 0.630, 600단계의 0.161, 1,000단계의 0.006으로 낮아지고, 노이즈 가중치는 1.000까지 높아집니다. 저장된 forward_diffusion.jpg에는 버스가 선명하게 보이다가 점차 거칠고 희미해진 뒤 사라지는 모습이 나타납니다.

생성은 이 과정을 역방향으로 실행합니다. 완전히 무작위인 가우시안 노이즈에서 시작해 각 단계에서 네트워크가 현재 샘플의 노이즈를 예측하고, 솔버가 그 일부를 제거한 뒤 조금 더 깨끗해진 결과를 다음 단계에 전달합니다. 텍스트 프롬프트나 클래스 레이블은 조건으로 네트워크에 입력되며, 흔히 교차 어텐션을 사용합니다. Jonathan Ho와 Tim Salimans가 도입한 무분류기 안내는 하나의 네트워크를 조건이 있는 경우와 없는 경우 모두 학습하고, 샘플링 시 무조건부 예측을 조건부 예측 방향으로 외삽합니다. Stable Diffusion 1.x 파이프라인의 기본값인 7.5와 같이 안내 스케일을 높이면 다양성이 줄어드는 대신 프롬프트를 더 충실하게 따릅니다.

샘플링 속도 높이기#

DDPM 샘플링은 이미지 하나당 네트워크를 1,000회 평가하므로, 이 분야의 발전은 대부분 평가 횟수를 줄이는 데 집중되어 왔습니다.

  • 더 나은 샘플러: DDIM은 결정론적 샘플러로 학습된 DDPM을 재사용하며, 실제 소요 시간 기준으로 10~50배 빠르게 고품질 샘플을 생성합니다. 이후 개발된 ODE 솔버는 일반적인 생성 단계를 약 20~50회로 줄입니다.
  • 잠재 확산: 잠재 확산 모델은 픽셀 대신 오토인코더의 압축 표현에서 노이즈를 제거합니다. Stable Diffusion의 오토인코더는 512×512×3 이미지를 64×64×4 잠재 표현으로 변환해 값의 수를 48배 줄입니다.
  • 증류: 일관성 모델은 모든 노이즈 샘플을 깨끗한 샘플로 직접 변환하는 방법을 학습해 한 단계 생성을 가능하게 합니다. 잠재 일관성 모델은 동일한 개념을 Stable Diffusion에 적용해 2~4단계로 생성합니다.
  • 더 직선적인 경로: 플로 매칭과 직선화 플로는 솔버가 더 적은 단계로 따라갈 수 있는 노이즈에서 데이터로 이어지는 직선 경로를 따라 학습합니다.

노이즈 제거 네트워크 자체는 DDPM과 Stable Diffusion 1.x의 합성곱 U-Net에서 현재 대부분의 이미지 및 동영상 생성기에 사용되는 확산 트랜스포머(DiT)로 발전했습니다.

확산 모델과 다른 생성 모델 비교#

  • 생성적 적대 신경망(GAN): GAN은 순방향 패스 한 번으로 샘플을 생성하지만, 생성기와 판별기 간의 적대적 학습은 불안정성 및 모드 붕괴를 일으키기 쉽습니다. 모드 붕괴가 발생하면 생성기가 데이터의 일부만 포괄하게 됩니다. 확산 모델의 학습은 안정적인 회귀 방식이며 데이터 분포를 더 완전하게 포괄하지만, 샘플링 단계가 많이 필요합니다.
  • 변분 오토인코더(VAE): VAE는 한 번의 패스로 잠재 벡터를 샘플로 디코딩하며, 생성된 샘플은 대체로 더 흐릿합니다. 잠재 확산 모델은 이미지를 압축할 때만 VAE 방식의 오토인코더를 사용하고, 생성은 확산 모델에 맡깁니다.
  • 자기회귀 모델: 언어 모델과 시각 자기회귀 모델은 이전에 생성된 내용을 조건으로 한 번에 토큰 또는 스케일 하나씩 생성합니다. 확산 모델은 각 단계에서 샘플의 모든 부분을 병렬로 정제하며, 확산 언어 모델은 동일한 노이즈 제거 방식을 텍스트에 적용합니다.

실제 적용 사례#

  • 이미지 생성 및 편집: 텍스트-이미지 모델은 프롬프트로 이미지를 만들고, 이미지 인페인팅은 마스킹된 영역을 주변 환경에 맞게 다시 생성합니다. ControlNet은 에지, 깊이 또는 포즈 맵으로 레이아웃을 제어하며, 확산 업스케일러는 초해상도 처리를 수행합니다.
  • 동영상 생성: 동영상 생성 모델은 여러 프레임에 걸쳐 있는 압축 잠재 표현의 노이즈를 제거하므로, 각 프레임을 주변 프레임과 함께 생성합니다.
  • 합성 학습 데이터: 생성된 이미지는 드문 결함, 이례적인 날씨, 흔치 않은 시점 등 비전 데이터셋의 부족한 부분을 보완합니다. Ultralytics Platform의 데이터셋에서 유사 이미지 생성 작업은 기존 이미지에서 영감을 얻어 배치당 1~16개의 새 이미지를 생성합니다. 선택한 이미지는 레이블 없이 데이터셋에 추가되어 주석을 달 수 있습니다.
  • 로보틱스: 확산 정책은 카메라 이미지를 조건으로 삼고 노이즈 제거를 수행해 로봇 동작 시퀀스를 생성합니다.
  • 과학: AlphaFold 3은 원자 좌표의 노이즈를 제거하는 확산 모듈을 사용해 단백질, 핵산, 소분자로 구성된 복합체의 구조를 예측하며, AlphaFold 2의 구조 모듈을 대체합니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요