Diffusion Models
Difüzyon modelleri, kademeli bir gürültü ekleme sürecini tersine çevirmeyi öğrenerek saf gürültüden yeni bir örneğe adım adım görüntü, video ve ses üretir.
Difüzyon modelleri, kademeli bir gürültü ekleme sürecini tersine çevirmeyi öğrenerek veri oluşturan üretken yapay zekâ modelleridir. Eğitim sırasında görüntüler veya diğer veriler, çok sayıda küçük adım boyunca Gauss gürültüsüyle bozulur; bir sinir ağı her adımda gürültüyü tahmin etmeyi öğrenir. Üretim sırasında model, saf rastgele gürültüyle başlar ve yeni bir örnek ortaya çıkana kadar gürültüyü adım adım kaldırır. Jascha Sohl-Dickstein ve çalışma arkadaşları bu yaklaşımı 2015'te Denge Dışı Termodinamik Kullanarak Denetimsiz Derin Öğrenme adlı çalışmada önerdi; Jonathan Ho, Ajay Jain ve Pieter Abbeel ise 2020'de Gürültü Gideren Olasılıksal Difüzyon Modelleri (DDPM) ile yöntemi rekabetçi hâle getirerek CIFAR-10 üzerinde 3,17'lik dönemin en iyi FID değerine ulaştı. OpenAI araştırmacıları 2021'de difüzyon modellerinin ImageNet görüntü sentezinde GAN'lardan daha iyi olduğunu gösterdi; difüzyon modelleri ve akış eşleme gibi ilişkili yöntemler artık metinden görüntü oluşturan sistemlere, Stable Diffusion gibi araçlara, video üreticilerine, görüntü düzenleyicilere ve bilimsel modellere güç veriyor.
Difüzyon Modelleri Nasıl Çalışır#
İleri yönlü süreç öğrenilmez, sabittir. T adımın her birinde az miktarda Gauss gürültüsü ekler; DDPM, her adımda 0.0001'den 0.02'ye doğrusal olarak artan gürültü varyansıyla T = 1,000 kullanır. Gauss gürültüsünün toplamı yine Gauss dağılımlı olduğundan, bir eğitim görüntüsü kapalı formda doğrudan herhangi bir t adımına geçebilir: xt = sqrt(alpha_bar_t) * x0 + sqrt(1 - alpha_bar_t) * noise; burada alpha_bar_t, ilk t adım boyunca 1 - beta çarpımını ifade eder. Eğitim, tekrar tekrar bir görüntü, rastgele bir adım ve yeni bir gürültü seçer, xt ifadesini oluşturur ve ağa DDPM'nin basitleştirilmiş hedefi olan ortalama kare hatasıyla bu gürültüyü tahmin etmeyi öğretir. Bu kod, DDPM'nin zamanlama çizelgesini kullanarak bir fotoğrafa ileri yönlü süreci uygular:
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")Görüntü ağırlığı 1. adımdaki 1.000 değerinden 100. adımda 0.947'ye, 300. adımda 0.630'a, 600. adımda 0.161'e ve 1.000. adımda 0.006'ya düşerken gürültü ağırlığı 1.000'e yükselir. Kaydedilen forward_diffusion.jpg görüntüsünde otobüs önce keskin, sonra grenli, ardından silik ve sonunda görünmez olur.
Üretim, süreci tersine işletir. Saf Gauss gürültüsüyle başlar; ağ her adımda mevcut örnekteki gürültüyü tahmin eder, bir çözücü bunun bir kısmını kaldırır ve biraz daha temiz sonuç sonraki adıma aktarılır. Metin istemi veya sınıf etiketi, çoğunlukla çapraz dikkat aracılığıyla ağa koşul olarak girer. Jonathan Ho ve Tim Salimans'ın geliştirdiği sınıflandırıcısız yönlendirme, tek bir ağı hem koşulla hem koşulsuz eğitir ve örnekleme sırasında koşulsuz tahminden koşullu tahmine doğru ekstrapolasyon yapar; Stable Diffusion 1.x iş akışlarında varsayılan 7.5 gibi daha yüksek bir yönlendirme ölçeği, çeşitlilik pahasına istemi daha yakından izler.
Örneklemeyi Hızlandırma#
DDPM örneklemesi, görüntü başına 1.000 ağ değerlendirmesi gerektirir; bu nedenle alanın ilerlemesinin büyük bölümü bu sayıyı azaltmaya odaklanmıştır:
- Daha iyi örnekleyiciler: DDIM, eğitilmiş bir DDPM'yi deterministik bir örnekleyiciyle yeniden kullanır ve yüksek kaliteli örnekleri gerçek zamanda 10 ila 50 kat daha hızlı üretir. Daha sonraki ODE çözücüleri, tipik üretim sürecini yaklaşık 20 ila 50 adıma indirir.
- Gizil difüzyon: Bir gizil difüzyon modeli, pikseller yerine bir otomatik kodlayıcıdan alınan sıkıştırılmış gösterimdeki gürültüyü giderir. Stable Diffusion'ın otomatik kodlayıcısı, 512×512×3 boyutundaki bir görüntüyü 64×64×4 boyutunda bir gizile dönüştürerek değer sayısını 48 kat azaltır.
- Damıtma: Tutarlılık modelleri, herhangi bir gürültülü örneği doğrudan temiz bir örneğe dönüştürmeyi öğrenerek tek adımda üretimi mümkün kılar; gizil tutarlılık modelleri de aynı fikri Stable Diffusion'a uygulayarak 2 ila 4 adımda sonuç üretir.
- Daha düz yollar: Akış eşleme ve düzeltilmiş akış, çözücülerin daha az adımda izleyebileceği düz gürültüden veriye yolları boyunca eğitim yapar.
Gürültü giderme ağının kendisi, DDPM ve Stable Diffusion 1.x'te kullanılan evrişimli U-Net'ten, günümüzdeki görüntü ve video üreticilerinin çoğunda kullanılan difüzyon dönüştürücüsüne (DiT) evrildi.
Difüzyon Modelleri ve Diğer Üretken Modeller#
- Üretici çekişmeli ağlar (GAN'lar): Bir GAN tek bir ileri geçişte örnek üretir; ancak üretici ile ayırt edici arasındaki çekişmeli eğitim kararsızlığa ve üreticinin verilerin yalnızca bir bölümünü kapsadığı mod çökmesine yatkındır. Difüzyon eğitimi, kararlı bir regresyon sürecidir ve çok sayıdaki örnekleme adımı pahasına veri dağılımını daha eksiksiz kapsar.
- Varyasyonel otomatik kodlayıcılar (VAE'ler): Bir VAE, tek bir geçişte gizil vektörü örneğe dönüştürür ve ürettiği örnekler genellikle daha bulanıktır. Gizil difüzyon modelleri, görüntüleri sıkıştırmak için yalnızca VAE tarzı bir otomatik kodlayıcı kullanır; üretimi ise difüzyon modeline bırakır.
- Otoregresif modeller: Dil modelleri ve görsel otoregresif modeller, önceki içeriğe bağlı olarak her seferinde bir belirteç veya ölçek üretir. Difüzyon modeli, her adımda örneğin tüm bölümlerini paralel olarak iyileştirir; difüzyon dil modelleri ise aynı gürültü giderme yöntemini metne uygular.
Gerçek Dünya Uygulamaları#
- Görüntü üretimi ve düzenleme: Metinden görüntüye modeller istemlerden görüntüler oluşturur; görüntü içi tamamlama, maskelenmiş bir bölgeyi çevresiyle uyumlu olacak şekilde yeniden üretir; ControlNet, kenar, derinlik veya poz haritalarıyla düzeni sınırlar; difüzyon yükselticileri de süper çözünürlük uygular.
- Video üretimi: Video üretimi modelleri, aynı anda birçok kareye yayılan sıkıştırılmış gizillerin gürültüsünü giderir; böylece her kare komşu kareleriyle birlikte üretilir.
- Sentetik eğitim verisi: Oluşturulan görüntüler, nadir kusurlar, sıra dışı hava koşulları veya alışılmadık bakış açıları gibi görsel veri kümelerindeki boşlukları doldurur. Ultralytics Platform üzerindeki bir veri kümesinde Benzer Görüntüler Oluştur işlemi, mevcut bir görüntüden esinlenerek her grupta 1 ila 16 yeni görüntü oluşturur; sakladığın görüntüler etiketsiz olarak açıklama eklemeye hazır biçimde veri kümesine katılır.
- Robotik: Difüzyon politikaları, kamera görüntülerine bağlı robot eylem dizilerini gürültülerini gidererek üretir.
- Bilim: AlphaFold 3; protein, nükleik asit ve küçük molekül komplekslerinin yapılarını, ham atom koordinatlarının gürültüsünü gideren bir difüzyon modülüyle tahmin eder ve AlphaFold 2'nin yapı modülünün yerini alır.










