অধ্যায়Phase 6 · মডার্ন AI ভিশন
6.3 22 মিনিট পড়া

Stable Diffusion Basics

Latent diffusion কীভাবে কাজ করে।

🎬 গল্প দিয়ে শুরু
Midjourney, DALL·E 3, Stable Diffusion — text লিখলেই ছবি। GAN থেকে rule পাল্টে দিল Diffusion Model। কিভাবে noise থেকে ছবি তৈরি হয়?

মূল আইডিয়া — ছবিকে noise বানিয়ে আবার বানানো

  • Forward process: ছবিতে ধাপে ধাপে Gaussian noise যোগ — শেষে pure noise।
  • Reverse process: একটি network শেখে noise predict করতে → noise বিয়োগ করে ছবি ফিরিয়ে আনে।
  • Inference-এ pure noise থেকে শুরু → ধাপে ধাপে denoise → নতুন ছবি।
text
x₀ (real) → +noise → x₁ → ... → x_T (pure noise)
x_T → predict noise → x_{T-1} → ... → x₀ (generated)

Latent Diffusion — Stable Diffusion-এর চাবি

512×512 pixel-এ diffusion = ভয়াবহ ব্যয়বহুল। সমাধান: একটি VAE encoder দিয়ে ছবিকে 64×64 latent-এ নামাও → সেখানে diffusion করো → decoder দিয়ে pixel-এ ফেরাও। ৪৮× দ্রুত!

text
Image 512x512x3 ─VAE Enc─► latent 64x64x4
                                  │
                        text ─CLIP─► cross-attn
                                  ▼
                            UNet (denoise, T steps)
                                  │
                        latent ─VAE Dec─► Image

৪টি মূল component

  • Text Encoder (CLIP/T5) — prompt-কে vector-এ রূপান্তর।
  • UNet — denoising network, text-এর সাথে cross-attention।
  • VAE — pixel ↔ latent রূপান্তর।
  • Scheduler (DDIM, DPM++) — কত step, কীভাবে noise কমাবে।

Diffusers library — ১০ লাইনে generate

bash
pip install diffusers transformers accelerate torch
python
sd_generate.py
from diffusers import StableDiffusionPipeline
import torch

pipe = StableDiffusionPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5",
    torch_dtype=torch.float16,
).to("cuda")

img = pipe(
    "a serene tea garden in Sylhet at sunrise, cinematic, 4k",
    num_inference_steps=30,
    guidance_scale=7.5,
).images[0]
img.save("out.png")
Guidance scale
higher = prompt-এর প্রতি আনুগত্য বেশি কিন্তু creativity কম (typical 6–9)।

Image-to-Image ও Inpainting

python
from diffusers import StableDiffusionImg2ImgPipeline, StableDiffusionInpaintPipeline
# img2img — sketch থেকে রঙিন painting
# inpaint — mask এলাকা নতুন করে generate (object removal, replace)

Fine-tuning কৌশল

  • DreamBooth — ৫–১০টি photo দিয়ে নিজের মুখ/বস্তু শেখানো।
  • LoRA — হালকা adapter, কম GPU-তে style train (~50 MB)।
  • Textual Inversion — নতুন token শেখা।
  • ControlNet — pose/edge/depth দিয়ে precise control।

পরবর্তী প্রজন্ম

  • SDXL, SD3 — আরও বড় UNet, ভালো text rendering।
  • Flux — DiT (Diffusion Transformer) backbone।
  • Video diffusion — Sora, Veo, Runway।
প্র্যাকটিস টাস্ক
  1. SD 1.5 দিয়ে ১০টি Bangladesh tourism poster বানান।
  2. ControlNet (Canny) দিয়ে sketch থেকে rendered illustration বানান।
  3. LoRA train করে নিজের লোগো-style ছবি generate করুন।