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 因此加入三個主要設計:
- 使用輕量的 ResNet Upsampler,直接在 Latent Space 進行解析度轉換。
- 放大後重新注入適量 Noise,讓 Latent 回到合理的生成軌跡。
- 重新分配不同解析度階段的 Timesteps,把更多計算留在便宜的低解析度階段。
整套方法不需要修改原本的 Transformer 或 U-Net,也不需要重新訓練大型生成模型。只要模型使用相容的 VAE,同一個 Latent Upsampler 就能套用到不同的 Diffusion 與 Flow 模型。
高解析度生成的速度與品質問題
先看論文首頁的比較圖。
左邊的 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 逐步轉換成完整圖片。
觀察 Reverse Process 的中間結果,可以發現生成並不是所有資訊同時出現,而是呈現明顯的 Coarse-to-Fine:前期先形成模糊色塊、物件位置與大致構圖,後期才補上輪廓、材質和細小紋理。從 Frequency 的角度來看,這個過程大致對應到:
低頻結構 → 中頻輪廓 → 高頻細節
解析度由低到高也符合相同方向。低解析度足以表示前期的大範圍結構,高解析度則提供容納髮絲、材質、邊緣與細小文字的空間。既然生成前期主要處理低頻資訊,就不一定需要從第一步開始都使用最終解析度。
所以我當時想到一件事:
既然生成前期只處理大方向,為什麼要從第一步開始就用最終解析度計算?
假設目標是 1024 × 1024,前半段先在 512 × 512 計算,等結構成形後再升到 1024 × 1024,理論上可以省掉大量運算。
當時真的覺得自己挖到一個很大的題目。
接著開始搜尋 Related Works。我用了很多看起來很合理的關鍵字:
Progressive Resolution DiffusionDynamic Resolution DenoisingMulti-Resolution SamplingCoarse-to-Fine Diffusion InferenceResolution Scheduling
找了很久,幾乎沒有看到完全相同的做法。那段時間的想法大概是:「這麼直覺的方式,居然真的沒有人做?」
於是開始改 Pipeline、測不同解析度、處理 Noise Schedule,也做了一個專門用來放大 Latent 的小模型。
做到後面,才逐漸找到幾篇方向非常接近的工作。它們分散在不同名稱底下:
Cascaded DiffusionProgressive UpscalingHigh-Resolution AdaptationSelf-CascadePixel-Space Refinement
MegaFusion、DiffuseHigh、Self-Cascade、FMBoost、DemoFusion 都碰到了逐步提高解析度的概念。Related Works 一直都在,只是藏在另一套術語裡 -> Super Resolution。讓 base model 生成更高解析度的圖,雖然出發點不同,但不得不說,兩者在解的問題其實非常類似。單純提出「先低解析度、再高解析度」已經不足以構成主要貢獻,研究重點最後收斂到三個更具體的問題:
- Pixel Space Scaling 會造成模糊,解析度轉換應該怎麼做?
- Latent 放大後偏離原本的生成軌跡,Noise 應該怎麼補?
- 不同解析度的計算成本差很多,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 部分的理論計算量可以降到十六分之一。
整個模型還包含 MLP、Convolution、VAE、Memory Access 和 Kernel Launch,實際速度不會直接快十六倍。不過只要把一部分 Denoising Steps 搬到低解析度,就能減少大量高解析度 Transformer 計算。
這件事在 2048 × 2048、4K 或影片生成上更重要。解析度越高,高解析度步驟的成本越誇張。
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。
方法一: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。
以 512 → 1024 為例:
512 × 512 Pure Noise
↓
Low-Resolution Denoising
↓
Latent Upsampler
↓
Noise Compensation
↓
1024 × 1024 Denoising
↓
VAE Decode
整套方法包含三個核心元件:
- Latent Space Upsampler
- Noise Compensation
- Resolution-Aware Timestep Scheduling
1. Latent Space Upsampler
LSSGen 使用一個約 500K 參數的輕量 ResNet Upsampler $U$,每次將 Latent 長寬放大兩倍。
架構包含:
2× InterpolationStride-2 Deconvolution- ResNet Blocks
- GroupNorm
- SiLU
論文實驗使用 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 AlignmentCLIP-IQA:感知品質TOPIQ:多解析度影像品質NIQE:Natural Image QualityTime / image與TFLOPs:效率
論文使用 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 提升了品質。
下面幾組圖可以更直觀看出差異。
在 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 在這些模型上仍然能運作,甚至改善部分生成品質。
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 最高。
在 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 需要額外處理。
Ablation Study
Initial Resolution
論文比較從 256 × 256 和 512 × 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,能移到低解析度的計算本來就很少。
第四,目前主要使用固定 2× 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.
Comments