擴散模型:AI畫圖不是「畫」出來的,是「雕」出來的

擴散模型深度科普:從DDPM到Stable Diffusion到FLUX,一文講透AI圖像生成的底層原理。

標籤:扩散模型FLUXStable DiffusionAI图像生成深度学习
專屬插圖
擴散模型:AI畫圖不是「畫」出來的,是「雕」出來的

擴散模型:AI畫圖不是「畫」出來的,是「雕」出來的

很多人以為AI生成圖片的過程,是從空白畫布上一筆一筆畫出來的。錯了。完全錯了。

真相遠比這個有意思——擴散模型生成圖片的方式,更接近一個雕塑家在鑿石頭。它不是從零開始創作,而是從一團純粹的雜訊裡,慢慢「鑿」出有意義的畫面。

說實話,我第一次搞懂這個原理的時候,起了雞皮疙瘩。不是因為多複雜,而是因為它實在太優雅了。

核心思路就兩步:搞亂,再還原

擴散模型的訓練分兩個階段,邏輯簡單到可以用一句話概括:先往好照片裡加雜訊,再教AI把雜訊去掉。

第一階段叫「前向擴散」。拿一張清晰的貓的照片,第一帧加一點點隨機雜訊,第二幀再加一點,第三幀繼續……重複幾百步之後,這張照片就變成了一團純粹的隨機雜訊。

第二階段叫「反向擴散」,這才是魔法所在。我們訓練一個神經網路,讓它學會每一步「猜」出剛才加了什麼雜訊,然後減掉。

# 前向:好圖 → 雜訊
for t in range(T):
    x_t = add_noise(x_{t-1}, noise_we_know)

# 反向:雜訊 → 好圖
for t in reversed(range(T)):
    predicted_noise = model(x_t, t)
    x_{t-1} = remove_noise(x_t, predicted_noise)

從DDPM到Stable Diffusion到FLUX

2020年DDPM證明可行但太慢。2022年Stable Diffusion在潛空間做擴散,計算量砍掉64倍。FLUX用DiT架構+整流訓練,壓縮到20步左右。

我們實驗室每天用的就是FLUX。MS01上跑,20步出圖大概15秒。

為什麼提示詞這麼重要?

答案是條件引導。模型在每一步去噪時都會參考你的文字描述。prompt越精確,畫面越貼近預期。

擴散模型 vs GAN:誰贏了?

GAN訓練不穩定,有「GAN collapse」問題。擴散模型訓練穩定如鐘錶,多樣性天然就好。回頭看,擴散模型擊敗GAN幾乎是必然的。

實戰:用FLUX的時候,背後發生了什麼?

1. 提交prompt → 創建job
2. FLUX接收:純隨機雜訊 + prompt編碼 + 步數(20)
3. 第1步:預測雜訊,去掉一部分 → 畫面隱約有結構
4. 第2-10步:結構越來越清晰
5. 第11-20步:細節打磨
6. 輸出PNG → 轉WebP → 上傳OSS → 回傳URL

20步。15秒。從一團雜訊到一張封面圖。技術的加速度,是真的恐怖。

SFD編者註:我們每天用FLUX生成封面圖,但真正理解它在幹什麼之後,每次看20步去噪的過程,感覺完全不一樣了。