LSSGen:Leveraging Latent Space Scaling in Flow and Diffusion for Efficient Text to Image Generation

論文:arXiv:2507.16154
簡報:ICCV 2025 AIGENS Workshop

關鍵字:AI, Diffusion, Flow Matching, Latent Space, Progressive Scaling, Image Synthesis, Acceleration
論文作者:Jyun-Ze Tang, Chih-Fan Hsu, Jeng-Lin Li, Ming-Ching Chang, Wei-Chao Chen
時間:2025 / 07 / 22

這篇論文在做什麼?

Diffusion 和 Flow Matching 生成圖片時,會從一張 pure noise 開始,經過數十個 denoising steps,逐步建立構圖、輪廓和細節。

問題在於,模型通常從第一步到最後一步都使用目標解析度計算。即使生成前期還只有模糊色塊,模型仍然要在完整的 1024 × 1024,甚至 2048 × 2048 Latent 上執行 Transformer 或 U-Net。解析度越高,每一個 Step 的成本也越高。

LSSGen 想做的事情很單純:

把生成前期搬到低解析度,等整體結構形成後,再逐步提高 Latent Resolution。

這樣一來,模型可以用較便宜的低解析度運算完成前期 Denoising,只在後期需要補上材質、邊緣和細節時,才切換到高解析度。

不過,直接放大 Latent 會產生結構斷裂;先 Decode 成圖片、Resize 後再 Encode,則容易留下模糊和 VAE Distortion。LSSGen 因此加入三個主要設計:

  1. 使用輕量的 ResNet Upsampler,直接在 Latent Space 進行解析度轉換。
  2. 放大後重新注入適量 Noise,讓 Latent 回到合理的生成軌跡。
  3. 重新分配不同解析度階段的 Timesteps,把更多計算留在便宜的低解析度階段。

整套方法不需要修改原本的 Transformer 或 U-Net,也不需要重新訓練大型生成模型。只要模型使用相容的 VAE,同一個 Latent Upsampler 就能套用到不同的 Diffusion 與 Flow 模型。

高解析度生成的速度與品質問題

先看論文首頁的比較圖。

左邊是原始 FLUX.1-dev;中間是使用 Pixel Space Scaling 加速的 MegaFusion;右邊是 LSSGen。MegaFusion 比較快,但畫面出現明顯模糊;LSSGen 在接近的速度下保留較完整的邊緣與細節。

左邊的 FLUX.1-dev 畫質很好,但生成一張 1024 × 1024 圖片大約需要 54 秒。中間的 MegaFusion 把時間壓到約 33 秒,代價是海浪、樹葉和遠景都被抹平。右邊的 LSSGen 約 36 秒,速度接近 MegaFusion,細節則接近甚至超過原始模型。

這張比較圖也就是整篇論文想處理的問題:逐步提高解析度確實能加速生成,但解析度轉換方式會直接決定最後的畫質。LSSGen 的研究重點因此落在如何同時保留低解析度計算的效率,以及高解析度生成需要的細節。

LSSGen 的答案很直接:前期先用低解析度計算,後期再把解析度升上去;解析度轉換全程留在 Latent Space,讓模型保有補回高頻細節的能力。

這篇論文從哪裡開始?

事情最早來自一個很直覺的觀察。

以 Diffusion 為例,Forward Process 會逐步在乾淨圖片 $x_0$ 中加入 Noise,直到 $x_T$ 接近 Pure Noise;生成時則沿相反方向執行 Reverse Process,從 $x_T$ 開始逐步 Denoise,最後還原出圖片 $x_0$。Flow Matching 的數學路徑不同,但推論時同樣會把 Pure Noise 逐步轉換成完整圖片。

Diffusion 的 Forward 與 Reverse Process。訓練時由乾淨圖片逐步加入 Noise;推論時則從 Pure Noise 反向 Denoise,逐步生成圖片。

觀察 Reverse Process 的中間結果,可以發現生成並不是所有資訊同時出現,而是呈現明顯的 Coarse-to-Fine:前期先形成模糊色塊、物件位置與大致構圖,後期才補上輪廓、材質和細小紋理。從 Frequency 的角度來看,這個過程大致對應到:

低頻結構 → 中頻輪廓 → 高頻細節

解析度由低到高也符合相同方向。低解析度足以表示前期的大範圍結構,高解析度則提供容納髮絲、材質、邊緣與細小文字的空間。既然生成前期主要處理低頻資訊,就不一定需要從第一步開始都使用最終解析度。

Coarse-to-Fine 與兩階段生成示意圖。上方全程使用目標解析度;下方先在低解析度建立整體結構,再切換到高解析度補充局部細節。

所以我當時想到一件事:

既然生成前期只處理大方向,為什麼要從第一步開始就用最終解析度計算?

假設目標是 1024 × 1024,前半段先在 512 × 512 計算,等結構成形後再升到 1024 × 1024,理論上可以省掉大量運算。

當時真的覺得自己挖到一個很大的題目。

接著開始搜尋 Related Works。我用了很多看起來很合理的關鍵字:

  • Progressive Resolution Diffusion
  • Dynamic Resolution Denoising
  • Multi-Resolution Sampling
  • Coarse-to-Fine Diffusion Inference
  • Resolution Scheduling

找了很久,幾乎沒有看到完全相同的做法。那段時間的想法大概是:「這麼直覺的方式,居然真的沒有人做?」

於是開始改 Pipeline、測不同解析度、處理 Noise Schedule,也做了一個專門用來放大 Latent 的小模型。

做到後面,才逐漸找到幾篇方向非常接近的工作。它們分散在不同名稱底下:

  • Cascaded Diffusion
  • Progressive Upscaling
  • High-Resolution Adaptation
  • Self-Cascade
  • Pixel-Space Refinement

MegaFusion、DiffuseHigh、Self-Cascade、FMBoost、DemoFusion 都碰到了逐步提高解析度的概念。Related Works 一直都在,只是藏在另一套術語裡 -> Super Resolution。讓 base model 生成更高解析度的圖,雖然出發點不同,但不得不說,兩者在解的問題其實非常類似。單純提出「先低解析度、再高解析度」已經不足以構成主要貢獻,研究重點最後收斂到三個更具體的問題:

  1. Pixel Space Scaling 會造成模糊,解析度轉換應該怎麼做?
  2. Latent 放大後偏離原本的生成軌跡,Noise 應該怎麼補?
  3. 不同解析度的計算成本差很多,Timesteps 應該怎麼分配?

LSSGen 就是這三個問題的組合答案。

為什麼低解析度真的能省很多?

圖片長寬各縮小一半後,Pixel 或 Latent Token 數量會變成四分之一。

假設原本 Token 數量是:

\[N = H \times W\]

長寬各縮小一半後:

\[N' = \frac{H}{2} \times \frac{W}{2} = \frac{N}{4}\]

一般 Convolution 或 MLP 相關成本大致會跟 Token 數量一起下降。Transformer 的 Self-Attention 還有一層平方關係:

\[O(N^2)\]

代入 $N’ = N/4$ 後:

\[O((N')^2) = O\left(\frac{N^2}{16}\right)\]

也就是說,長寬各縮小一半時,Attention 部分的理論計算量可以降到十六分之一。

解析度長寬各減半後,Token 數量降到四分之一;Self-Attention 的理論成本降到十六分之一。

整個模型還包含 MLP、Convolution、VAE、Memory Access 和 Kernel Launch,實際速度不會直接快十六倍。不過只要把一部分 Denoising Steps 搬到低解析度,就能減少大量高解析度 Transformer 計算。

這件事在 2048 × 20484K 或影片生成上更重要。解析度越高,高解析度步驟的成本越誇張。

Diffusion 和 Flow 有什麼共同點?

Diffusion 和 Flow Matching 的 Training Objective 不同。

Diffusion 常見的 Forward Process 為:

\[x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}\epsilon\]

模型可以預測 Noise、$x_0$ 或 Velocity,常見的 Noise Prediction Loss 為:

\[\mathcal{L}_{\text{diffusion}} = \|\epsilon_\theta(x_t, t) - \epsilon\|_2^2\]

Rectified Flow 則常用線性插值:

\[x_t = (1-t)x_0 + t\epsilon\]

並學習從資料走向 Noise 的 Velocity Field:

\[v = \epsilon - x_0\]

對應的 Loss 為:

\[\mathcal{L}_{\text{flow}} = \|v_\theta(x_t, t) - (\epsilon - x_0)\|_2^2\]

雖然兩者的預測目標不同,實務上都會把 Gaussian Noise 逐步轉換成 Data。LSSGen 將它們統一寫成 Latent Trajectory:

\[z_t = (1 - \sigma_t)z_0 + \sigma_t\epsilon\]

其中:

  • $z_0$:乾淨圖片的 Latent。
  • $\epsilon \sim \mathcal{N}(0,1)$:Gaussian Noise。
  • $\sigma_t$:目前時間步的 Noise 強度。

這個表示方式讓 Resolution Scaling、Noise Injection 和 Timestep Rescheduling 可以放進同一套框架。

Latent Diffusion 帶來的方便與麻煩

直接在 Pixel Space 執行 Diffusion 成本太高,因此 Stable Diffusion、SDXL、FLUX 等模型通常先透過 VAE 把圖片壓縮到 Latent Space,再讓 U-Net 或 Transformer 在 Latent 上生成。

概念上可以寫成:

Pixel Image --Encoder--> Latent --Diffusion / Flow--> Latent --Decoder--> Pixel Image

Latent Space 大幅降低了運算量,也帶來一個麻煩:Latent 並不等同 RGB 圖片。

每個 Latent Channel 沒有簡單對應到 Red、Green、Blue。空間位置和數值也沒有保證符合一般影像插值的幾何關係。某些 Channel 可能混合了頻率、語意、局部結構和 VAE 訓練資料中的統計特徵。

直接 Upscale 會發生什麼?

我們比較了三種 Upscaling 方法:Pixel Space Scaling、Latent Space Bilinear Interpolation,以及 LSSGen 使用的 ResNet Upsampler。

三種 Upscaling 方法的比較。左:Pixel Space Scaling 產生明顯模糊;中:Latent Space Bilinear Interpolation 出現邊緣重複與結構錯位;右:ResNet Upsampler 保留較清楚且連續的物件邊界。

方法一:Pixel Space Scaling

先把 Latent Decode 成圖片,放大圖片,再 Encode 回 Latent:

\[z \rightarrow D(z) \rightarrow \operatorname{Resize}(D(z)) \rightarrow E(\operatorname{Resize}(D(z)))\]

這條路容易實作,也能直接使用 Bilinear、Bicubic 或現成 Super Resolution。問題在於 VAE Encode-Decode Cycle 會引入重建誤差,放大後再次 Encode 還會造成 Latent Distribution Shift。

實驗中最常看到的結果就是 Blur。即使後面重新加入 Noise 讓 diffusion denoise,海浪、毛髮、樹葉和小物件仍然容易變成一整片平滑區域。 原因可能在 VAE 將相機散景、失焦、模糊邊緣等影像特徵一起編碼進 Latent Distribution。當 Pixel Space Upscaling 產生模糊,再重新 Encode 回 Latent,後續即使補 Noise,模型也無法消除這種偏移。

方法二:Naive Latent Interpolation

直接對 Latent 做 Bilinear Interpolation,省掉 Decode 和 Encode。

這樣可以避開 VAE 重建誤差,但常會出現 Edge Duplication、Boundary Artifact 和結構斷裂。原因很直接:VAE Latent 沒有保證具備普通影像的插值性質。各 channel 存的有可能是頻率訊息,直接 interpolate 會擾亂該訊息導致 artifacts。

方法三:ResNet Upsampler

說實在的,這方法沒有多聰明,只是當時也沒什麼時間慢慢修了。LSSGen 訓練了一個專門處理 VAE Latent 的輕量 ResNet Upsampler,直接在 Latent Space 完成解析度轉換,同時學習避免 bilinear interpolation 造成的結構錯位。

LSSGen 的完整流程

LSSGen 把生成拆成多個 Resolution Stages。每個 Stage 在固定解析度執行一段 Denoising,接著 Upscale Latent、補入 Noise,再進入下一個 Stage。

LSSGen Pipeline。前期在低解析度 Latent 執行 Denoising,之後透過 Latent Upsampler 提升解析度,加入新的 Gaussian Noise,再繼續生成。

512 → 1024 為例:

512 × 512 Pure Noise
        ↓
Low-Resolution Denoising
        ↓
Latent Upsampler
        ↓
Noise Compensation
        ↓
1024 × 1024 Denoising
        ↓
VAE Decode

整套方法包含三個核心元件:

  1. Latent Space Upsampler
  2. Noise Compensation
  3. Resolution-Aware Timestep Scheduling

1. Latent Space Upsampler

LSSGen 使用一個約 500K 參數的輕量 ResNet Upsampler $U$,每次將 Latent 長寬放大兩倍。

架構包含:

  • 2× Interpolation
  • Stride-2 Deconvolution
  • ResNet Blocks
  • GroupNorm
  • SiLU
Conv + DeConv + bilinear interpolation ResNet

論文實驗使用 Frozen Pretrained VAE,在 COCO Dataset 上訓練三個 Epoch。也可以用 DIV2K 作為偏向高解析度細節的訓練資料選項。

為什麼和 VAE 一起訓練?

這裡其實有兩條訓練路線。

第一條路是把 Upsampler 接進完整 Diffusion 或 Flow Model,讓大型生成模型在每個時間步學習如何接收低解析度條件。Self-Cascade 方法比較接近這個方向。效果可以很好,但需要和 U-Net 或 Transformer Joint Training,模型相容性和訓練成本都比較高。

第二條路是只依賴 VAE:

Image
  ↓ Encoder
Low-Resolution Latent
  ↓ 500K Upsampler
High-Resolution Latent
  ↓ Decoder
Reconstructed Image

LSSGen 採用第二條路,原因也很簡單,83M 參數的 VAE 和 12B 的 transformer,前者訓練起來才簡單。且只要多個生成模型共用同一套 VAE,Upsampler 就能跨模型重複使用。Backbone 可以是 U-Net、DiT、Diffusion 或 Rectified Flow。

2. Noise Compensation

Latent 放大後只帶著上一個 Stage 已經形成的低頻結構。新的高解析度網格增加了更多位置,但這些位置尚未擁有合理的高頻資訊。

如果直接繼續 Denoise,模型很容易沿著平滑的放大結果往下走,最後得到一張乾淨但缺乏細節的圖片。

因此 LSSGen 在每次 Upsampling 後重新加入 Gaussian Noise:

\[z_{\sigma_{\text{init}}}^{n} \approx (1 - \sigma_{\text{init}})U\left(z_0^{n-1}\right) + \sigma_{\text{init}}\epsilon^n\]

其中:

  • $U(z_0^{n-1})$:上一個 Stage 的 Latent 放大結果。
  • $\epsilon^n$:新解析度下的 Gaussian Noise。
  • $\sigma_{\text{init}}$:保留舊訊號和加入新 Noise 的比例。

可以把它想成:

舊 Latent:提供構圖、物件位置、色彩和大輪廓
新 Noise:提供重新生成高頻細節的空間

Noise 太少,速度很快,但畫面會偏平滑;Noise 太多,高解析度 Stage 幾乎要重新生成一次,計算量也跟著增加。

論文從 SNR 角度估計,長寬各放大兩倍時,SNR 約降為四分之一,對應到:

\[\sigma_{\text{init}} \approx 0.75\]

Ablation 也支持這個設定:

$\sigma_{\text{init}}$ Speedup 特性
0.3~0.5 2.3×~3.2× 速度高,細節與自然度較弱
0.7~0.8 1.3×~1.7× 品質與速度平衡
0.9~1.0 1.0×~1.1× 品質增益逐漸飽和,成本接近完整生成

最後主要實驗採用 0.75,但實際上後來重算之後,用 0.67 會比較快且合適。

3. Timestep Schedule Shifting

低解析度 Step 很便宜,高解析度 Step 很貴。既然前期主要建立構圖,LSSGen 會把更多生成路徑放在低解析度階段,再用較少的高解析度 Steps 補細節。

論文採用與 Stable Diffusion 3 類似的 Timestep Shifting:

\[t_m = \frac{ \sqrt{\frac{m}{n}}t_n }{ 1 + \left(\sqrt{\frac{m}{n}} - 1\right)t_n }\]

其中 $m$ 代表較高解析度,$n$ 代表較低解析度。

論文也測試了 Shorten Steps。若目前 Stage 低於 Base Resolution,就依比例縮短 Sampling Steps:

\[T' = \frac{T}{2^{N-n}}\]

Schedule Shifting 調整每個時間點在生成路徑中的位置;Shorten Steps 調整離散取樣數量。兩者都在做同一件事:讓有限算力集中在比較有效的位置。

以 SD3.5 Medium 為例,加入 Shifting 後,時間從 13.53 秒 降到 9.97 秒,Speedup 從 1.1× 提升到 1.5×,CLIP-IQA 和 TOPIQ 也同步提升。

和其他方法差在哪裡?

研究過程中遇到的 Diffusion 加速工作大致可以分成三類。

Architecture Optimization

例如 SANA 使用更深的 Autoencoder Compression,並以 Linear Attention 降低 Transformer 成本。這類方法通常需要重新訓練模型或調整 Architecture。

Model Distillation

例如 Progressive Distillation、Consistency Model、LCM、SDXL Turbo、FLUX.1-schnell。它們減少 Sampling Steps,速度提升很明顯,但需要額外蒸餾訓練,也可能壓縮逐步修正高解析度細節的能力。

Progressive Resolution Generation

MegaFusion、DiffuseHigh 和 FMBoost 會先生成低解析度圖片,再於 Pixel Space 放大並 Refinement。Self-Cascade 會在 U-Net 中加入 ResNet Plugin,利用低解析度 Latent 作為條件。

LSSGen 的位置可以整理成下面這張表:

方法 Resolution Scaling 額外訓練 Backbone 相容性 加速 品質特性
LSSGen Latent Space 約 500K Upsampler,依賴 VAE U-Net、DiT、Diffusion、Flow 約 1.1×~1.5× 多數設定維持或提升感知品質
Self-Cascade Latent Condition 與 U-Net Joint Training 主要支援 U-Net 實驗中沒有速度增益 高解析度品質較穩定
MegaFusion Pixel Space Training-Free 廣泛 約 1.6×~2.3× 常見 Blur 與細節流失
DiffuseHigh Pixel Space + Refinement Training-Free 依 Pipeline 而定 高解析度下可能增加時間 結構引導改善畫面,仍受 Pixel Scaling 影響

實驗設定

論文使用單張 NVIDIA A40 測試多個 Diffusion 與 Flow Model:

  • FLUX.1-dev
  • FLUX.1-schnell
  • Stable Diffusion 3.5 Medium
  • SDXL
  • Playground v2.5
  • Stable Diffusion 1.5
  • LCM-SDXL

評估指標包含:

  • GenEval:Text-to-Image Alignment
  • CLIP-IQA:感知品質
  • TOPIQ:多解析度影像品質
  • NIQE:Natural Image Quality
  • Time / imageTFLOPs:效率

論文使用 553 個 GenEval Prompts,每個 Prompt 生成 4 張圖片,共 2,212 張影像。

1024 × 1024: 速度接近 MegaFusion,畫質差很多

Model Scaling Resolution Stage Steps Time/img ↓ Speed ↑ TFLOPs ↓ GenEval ↑ CLIP-IQA ↑ TOPIQ ↑ NIQE ↓
FLUX.1-dev (baseline) - 1024 50 54.38 1x 2,991 0.673 0.887 0.674 5.622
FLUX.1-dev-MegaFusion Pixel 1024 30, 20 33.57 1.6x 1,825 0.649 0.747 0.402 6.543
LSS-FLUX.1-dev (ours) Latent 1024 25, 25 35.79 1.5x 1,999 0.653 0.914 0.705 5.136
SD3.5-m (baseline) - 1024 40 14.73 1x 576 0.676 0.862 0.635 4.825
SD3.5-m-MegaFusion Pixel 1024 24, 16 9.28 1.6x 364 0.667 0.760 0.444 6.294
LSS-SD3.5-m (ours) Latent 1024 20, 21 9.97 1.5x 393 0.672 0.880 0.641 4.705
Playgroundv2.5 (baseline) - 1024 50 9.98 1x 608 0.564 0.940 0.661 3.881
LSS-Playgroundv2.5 (ours) Latent 1024 25, 37 9.11 1.1x 529 0.559 0.942 0.665 3.964
SD1.5 (baseline) - 1024 50 9.21 1x 285 0.416 0.863 0.628 3.707
SD1.5-MegaFusion++ Pixel 1024 40, 5, 5 4.09 2.3x 139 0.384 0.438 0.248 6.871
LSS-SD1.5 (ours) Latent 1024 50, 37 8.82 1x 284 0.451 0.871 0.609 4.667
FLUX.1-schnell (baseline) - 1024 4 4.77 1x 253 0.668 0.872 0.656 5.629
LSS-FLUX.1-schnell (ours) Latent 1024 2, 3 4.39 1.1x 233 0.695 0.916 0.703 5.412

MegaFusion 比 LSSGen 快約兩秒,但 CLIP-IQA 和 TOPIQ 明顯下降。LSSGen 的 GenEval 比原始 FLUX.1-dev 稍低,感知品質指標則全面提高。 而 SD1.5 部分,MegaFusion 速度飛快,但 IQA 的指標明顯下降,遠低於 baseline。LSSGen 在 UNet 方法上較不吃香,速度優勢較小,但相比 baseline 提升了品質。

下面幾組圖可以更直觀看出差異。

Prompt:An epic painting of Gandalf the Black summoning thunder and lightning in the mountains。MegaFusion (左) 的山脈和閃電較平滑,LSSGen (右) 保留更多邊緣與局部紋理。
Prompt:An oil painting of a latent space.。MegaFusion (左) 較平滑,LSSGen (右) 保留更多邊緣與局部紋理,更像油畫。

在 SD3.5 Medium 上,LSSGen 將時間從 14.73 秒 降到 9.97 秒,同樣達到 1.5× Speedup,GenEval 幾乎持平,CLIP-IQA 和 TOPIQ 也有所提升。

Distilled Model 也能用,但加速空間比較小

FLUX.1-schnell 和 LCM-SDXL 原本只需要少量 Sampling Steps。能搬到低解析度的 Steps 很有限,因此 Speedup 通常落在 1.1× 左右。

不過 LSSGen 在這些模型上仍然能運作,甚至改善部分生成品質。

FLUX.1-schnell 範例。左邊展示原版 FLUX.1-schnell 在黑洞的表現,右邊為 LSSGen 將時間從約 4.77 秒降到 4.39 秒。
FLUX.1-schnell 範例。左邊展示原版 FLUX.1-schnell,右邊展示 LSSGen 的結果。
FLUX.1-schnell 人像比較。LSSGen 的頭髮和臉部紋理更有細節,但對於人像來說,更多細節未必是好事。

2048 × 2048: 高解析度越高,方法越有價值

Model Scaling Resolution Stage Steps Time/img ↓ Speed ↑ TFLOPs ↓ GenEval ↑ CLIP-IQA ↑ TOPIQ ↑ NIQE ↓
SDXL (baseline) - 2048 50 46.73 1x 2,415 0.468 0.699 0.532 4.725
SDXL-MegaFusion Pixel 2048 40, 10 24.99 1.9x 1,317 0.566 0.716 0.446 5.817
SDXL-Self-Cascade Latent 2048 50, 50 56.20 0.8x 3,236 0.541 0.709 0.517 4.137
SDXL-DiffuseHigh Pixel 2048 50, 15, 15 52.38 0.9x 2,518 0.550 0.681 0.513 5.960
LSS-SDXL (ours) Latent 2048 50, 37 44.61 1x 2,395 0.535 0.732 0.546 5.581
FLUX.1-schnell (baseline) - 2048 4 22.12 1x 917 0.489 0.655 0.506 6.481
LSS-FLUX.1-schnell (ours) Latent 2048 2, 3 19.46 1.1x 818 0.657 0.782 0.586 5.042
LCM-SDXL (baseline) - 2048 8 5.39 1x 230 0.437 0.568 0.536 5.741
LSS-LCM-SDXL (ours) Latent 2048 4, 6 5.00 1.1x 206 0.502 0.586 0.545 5.514

解析度提高後,Progressive Scaling 的理論優勢會更明顯。不過實際結果仍然受到 Backbone、原始訓練解析度和 Sampling Steps 影響。 MegaFusion 的速度最快,但 TOPIQ 和 NIQE 顯示品質下降。Self-Cascade 品質穩定,但速度比原始 SDXL 更慢。LSSGen 的速度接近原始 SDXL,CLIP-IQA 和 TOPIQ 最高。

SDXL 在 2048 × 2048 下的比較。MegaFusion (左) 和 LSSGen (右) 對行李箱、滑雪板與雪地紋理呈現不同取捨。

在 FLUX.1-schnell 2048 × 2048 上,LSSGen 將時間從 22.12 秒 降到 19.46 秒,GenEval 從 0.489 提升到 0.657,CLIP-IQA、TOPIQ 和 NIQE 也全面改善。

這個結果顯示 Progressive Resolution 還有一個額外效果:低解析度階段可以先穩定全局構圖,再交給高解析度階段補細節。對超出原始訓練解析度的生成,這種流程有機會降低物件重複、構圖破碎和局部失控,但僅限於 UNet 模型,DiT 因為 positional encoding 需要額外處理。

LSSGen + FLUX.1 Krea [dev] 在 2048 × 1024 寬幅解析度的生成結果。

Ablation Study

Initial Resolution

論文比較從 256 × 256512 × 512 開始生成 1024 × 1024 圖片。

Initial Resolution Target Time Speedup GenEval CLIP-IQA TOPIQ
256 1024 34.93 秒 1.6× 0.594 0.932 0.694
512 1024 36.09 秒 1.5× 0.653 0.914 0.705
1024 1024 54.38 秒 1.0× 0.673 0.887 0.674

256 開始速度更快,但 GenEval 下降較明顯。高頻可以在後期補回,早期缺失的物件關係和語意布局比較難恢復。

512 → 1024 提供了較穩定的平衡,因此成為主要設定。

Upsampling Strategy

三種 Upsampling 方法的結果如下:

方法 GenEval CLIP-IQA TOPIQ NIQE
Naive Latent Interpolation 0.605 0.885 0.651 4.588
Pixel Space Scaling 0.612 0.752 0.429 6.495
ResNet Upsampler 0.620 0.900 0.670 4.888

Pixel Space Scaling 的品質下降最明顯。Naive Latent Interpolation 的平均指標還可以,但局部容易出現重複邊緣和不連續。ResNet Upsampler 在語意和感知品質上最穩定。

Schedule Shifting 和 Shorten Steps

以 SD3.5 Medium 為例,Schedule Shifting 將速度從 1.1× 提升到 1.5×,CLIP-IQA 從 0.852 提升到 0.880,TOPIQ 從 0.621 提升到 0.641

FLUX.1-dev 使用 Shorten Steps 後,時間從 44.81 秒 降到 35.79 秒,品質指標幾乎沒有下降。

這兩組實驗說明,Resolution Scaling 只處理空間維度還不夠。Noise Schedule 和 Sampling Steps 也必須跟著解析度重新分配。

限制

LSSGen 仍有幾個明顯限制。

第一,Latent Upsampler 與 VAE 綁定。模型換用不同 VAE 時,需要重新訓練 Upsampler。
第二,高解析度 Latent 有時會過度銳化。這個現象在人臉上最明顯,皺紋、毛孔和局部邊緣可能被強化。
第三,Few-Step Distilled Model 的加速幅度有限。FLUX.1-schnell 原本只有 4 Steps,能移到低解析度的計算本來就很少。
第四,目前主要使用固定 Upscaling。不同圖片的生成難度差很多,固定切換點未必適合每個 Prompt。
第五,起始解析度太低會傷害 Text-to-Image Alignment。低解析度可以表達大構圖,但多物件關係、文字和小型主體仍然需要足夠空間。

結論

LSSGen 的核心概念可以濃縮成一句話:

低頻結構用低解析度算,高頻細節留到高解析度再補。

它利用 Diffusion 和 Flow 原本就具備的 Coarse-to-Fine 特性,把前期 Denoising 搬到便宜的低解析度 Latent Space。接著透過約 500K 參數的 ResNet Upsampler、Noise Compensation 和 Resolution-Aware Timestep Scheduling,把生成軌跡接回高解析度。

整個方法不需要修改大型 U-Net 或 Transformer,也不需要重新蒸餾完整模型。只要 VAE 相同,Upsampler 就能跨 Diffusion、Flow、U-Net 和 DiT 使用。

一開始以為找到一個幾乎沒有人碰過的方向,做了很多實驗後,才發現 Related Works 分散在完全不同的名稱底下。接下來只能重新回答一個更嚴格的問題:既然 Progressive Resolution 已經有人做,這份工作到底解決了哪個還沒處理好的缺口?

最後的答案落在 Latent Space Scaling。

Pixel Space Scaling 速度快,但容易模糊;Joint Training 品質穩定,但成本高、架構限制多。LSSGen 選擇在兩者中間建立一條新路:用很小的 VAE-Dependent Upsampler 處理 Resolution Transition,再讓原本的 Diffusion 或 Flow 補回細節。

最後得到的目標,也很簡潔明瞭:

Faster. Better. Sharper.

Reference

Comments