DiffVC-OSD:一階化擴散式視覺壓縮框架解析

先釐清一件事:DiffVC-OSD 處理的不是一般靜態圖片壓縮,而是神經影片壓縮。名稱中的 OSD 是 One-Step Diffusion,中文比較準確的說法是「單步擴散」,並不是數值分析裡的「一階微分」或「一階最佳化」。

它想解決的問題很好理解。

擴散模型可以替低位元率影片補出較自然的紋理,減少傳統壓縮常見的色塊、模糊和塑膠感;但傳統擴散模型通常要反覆去噪數十次。圖片等幾秒也許還能接受,影片每一幀都等幾秒,播放器大概已經先被使用者關掉了。

2025 年武漢大學研究團隊提出 DiffVC-OSD,將原本可能需要50次處理的擴散流程縮短成一次。論文宣稱,相較於對應的多步擴散版本,解碼速度約提升20倍,並在感知品質基準下取得86.92%的平均位元率改善。DiffVC-OSD 原始論文

這兩個數字看起來相當亮眼。不過,我看到「20倍加速」時,第一個動作通常是找原始秒數;看到「減少86.92%位元率」時,則會先確認它究竟是跟誰比、使用哪一項品質指標。

因為20倍快不一定代表即時,位元率少86.92%也不代表檔案在所有畫質標準下都縮小到原來的八分之一。

Contents hide

為什麼影片壓縮開始使用擴散模型?

傳統影片編碼器的核心工作,是盡量減少重複傳輸的資訊。

如果目前畫面與上一幀大部分相同,就不需要重新傳送整張圖片,只要記錄物體如何移動,以及剩下哪些差異即可。HEVC 和 VVC 等傳統編碼技術,都大量利用畫面內部與前後畫面之間的重複資訊。

神經影片壓縮延續相同概念,但把部分步驟改成由神經網路學習:

  • 預測物體或鏡頭的移動。
  • 從上一張解碼畫面建立目前畫面的參考。
  • 將剩餘資訊壓縮成潛在特徵。
  • 預測不同特徵出現的機率。
  • 將機率較高的資訊用較少位元編碼。
  • 從收到的特徵重建目前畫面。

這些模型在像素誤差上已經有不錯表現,但位元率壓得非常低時,通常只能保留大致輪廓,細節會逐漸變平。

擴散模型的優勢,就是它看過大量影像後,具有生成合理紋理的能力。即使壓縮資料沒有完整保存每一片草葉或每一根頭髮,模型仍可能根據剩餘結構產生看起來自然的細節。

問題也正出在這裡:產生「看起來合理」的細節,不等於還原「原本真的存在」的細節。

感知品質和像素準確度不是同一件事

影片壓縮經常同時面對三個目標:

  • 檔案要小。
  • 重建畫面要接近原始畫面。
  • 畫面在人眼看來要自然。

這三個目標無法永遠同時最佳化。相關理論研究指出,當壓縮系統強烈追求感知上的自然程度時,往往必須在位元率或像素失真上作出取捨。ICML:Rate-Distortion-Perception Tradeoff

傳統編碼器比較傾向忠實保存原始像素,即使結果有些模糊。生成式壓縮則可能犧牲部分逐像素準確度,換取更銳利、更自然的觀看感受。

例如原始影片裡有一片被壓縮到難以辨識的草地:

  • 傳統壓縮可能輸出一片模糊的綠色區域。
  • 生成式壓縮可能補出清楚的草葉紋理。
  • 這些草葉看起來很真,但不一定和原始草葉相同。

如果影片只是娛樂內容,後者可能更討喜;如果影像用於醫療、監控、法證或精密檢測,模型自行補出的合理細節就可能造成問題。

DiffVC-OSD 明確偏向感知式影片壓縮,而不是無失真封存。

DiffVC-OSD 的整體處理流程

DiffVC-OSD 建立在前一代 DiffVC 架構上,並使用 Stable Diffusion 2.1-base 作為生成式基礎模型。

Stable Diffusion 原本是影像生成模型,不是影片編碼器。DiffVC-OSD 的工作,是把它的生成能力接進影片壓縮管線,同時利用前一張已解碼畫面提供時間線索。CVPR:Latent Diffusion Models

整體可以拆成七個步驟。

第一步:讀取目前畫面與上一張解碼畫面

編碼器會取得目前要壓縮的畫面,以及接收端理論上已經擁有的上一張解碼畫面。

這裡必須使用「上一張解碼畫面」,而不是原始上一幀。否則編碼端看到的是乾淨原圖,解碼端看到的卻是壓縮版本,兩邊的參考狀態不同,誤差很快就會累積。

第二步:估計畫面移動

模型判斷物體、人物或攝影機在兩張畫面間如何移動,再把相關移動資訊壓縮進位元流。

接收端取得這些資訊後,可以將上一張畫面中的特徵移到新的位置,形成目前畫面的初步預測。

第三步:把目前畫面轉成潛在表示

DiffVC-OSD 使用 Stable Diffusion 的編碼器,把像素畫面轉換成較緊湊的潛在特徵。

潛在空間可以理解成模型內部使用的壓縮表示。它不直接保存每一個像素,而是記錄形狀、材質、顏色和局部結構等高階資訊。

第四步:壓縮移動與影像特徵

系統不會直接把完整潛在特徵傳出去,而是使用上下文模型和熵模型,估計哪些資訊容易出現、哪些比較罕見,再進行實際位元編碼。

最終位元流主要包含兩類資料:

  • 畫面移動資訊。
  • 目前畫面的壓縮潛在表示。

這一段才是「壓縮」真正發生的地方。擴散模型主要負責在解碼後改善感知品質,不是直接把影片憑空縮小。

第五步:從前一幀建立時間上下文

解碼器利用上一張已還原的畫面及動態資訊,提取多個尺度的時間特徵。

較低解析度的特徵可以描述整體場景與大型物體,較高解析度特徵則有助於保留局部邊緣與紋理。

這些資訊會告訴生成模型:「前一幀的內容大致在這裡,這次不要重新發明一個完全不同的畫面。」

第六步:執行一次擴散修復

傳統多步方法會先破壞重建後的潛在表示,加入大量雜訊,再用數十次去噪逐步產生結果。

DiffVC-OSD 沒有這樣做。

它直接把無雜訊的重建潛在表示送入去噪 U-Net,保留壓縮資料中原有的結構,只進行一次擴散修復。

這是一項很重要的差異。因為影片壓縮已經提供了一個大致正確的畫面骨架,沒有必要先把骨架打散,再要求模型重新猜一次。

有點像同事已經交出八成完成的程式,你應該直接 Code Review,而不是先把整個專案刪掉,再從需求文件重新生成。

第七步:解碼成最終畫面

經過單步擴散增強的潛在特徵,最後由 Stable Diffusion 的 VAE 解碼器還原成像素畫面。

重建結果會被保存到畫面與特徵緩衝區,繼續作為下一幀的時間參考。

單步擴散為什麼可以比多步方法快?

多步擴散最昂貴的部分,是同一張畫面必須重複通過大型 U-Net。

如果每一幀執行50次去噪,一秒30幀的影片就需要每秒執行1,500次 U-Net。即使 GPU 很快,這個成本也很難忽略。

DiffVC-OSD 只讓每張畫面通過一次 U-Net,理論上自然能大幅減少推論時間。

但它不是把整套影片壓縮流程變成一次操作。每一幀仍然需要進行:

  • 動態估計。
  • 動態資訊編碼與解碼。
  • 時間特徵提取。
  • 潛在特徵熵編碼。
  • 單步 U-Net 推論。
  • VAE 影像解碼。

因此,「單步」只描述擴散採樣次數,不代表整個編碼器只有一層,也不代表整段影片能瞬間解碼。

Temporal Context Adapter 如何維持前後幀一致?

單張圖片生成得漂亮不算太難,影片真正困難的是下一張也要長得像同一個世界。

如果每一幀獨立交給影像生成模型,可能出現:

  • 人臉五官持續微幅變動。
  • 衣服紋理每幀重新排列。
  • 草地、頭髮或水面不斷閃爍。
  • 小型物體突然出現或消失。
  • 文字和標誌產生跳動。

DiffVC-OSD 為此設計了 Temporal Context Adapter,簡稱 TCA。

TCA 接收目前重建的潛在特徵,以及從上一張解碼畫面取得的時間上下文,再產生多層次控制訊號,注入去噪 U-Net 的不同階段。

為什麼需要多層次控制?

U-Net 在不同深度處理不同尺度的資訊。

淺層比較接近局部邊緣與材質;深層則較容易影響物體結構和全域內容。如果只在輸入端提供一次前一幀資訊,訊號傳到模型深處時可能已經被稀釋。

TCA 將時間特徵送到多個層級,讓 U-Net 在重建大型結構和局部細節時,都能參考前一張畫面。

這種設計受到 ControlNet 的條件控制方式啟發。部分新增層以接近零影響的方式初始化,使模型在訓練初期不會突然破壞原本的 Stable Diffusion 能力,而是逐漸學會使用影片時間資訊。

TCA 的成本高嗎?

根據論文的消融測試,加入 TCA 後,單張預測畫面的解碼時間從0.39秒增加至0.40秒,增加約0.01秒;平均感知壓縮表現則改善約10.61%。

至少在論文測試環境中,TCA 的成本相對有限,帶來的效益也比單純增加更多擴散步驟划算。DiffVC-OSD 架構與消融測試

為什麼使用 LoRA 微調 Stable Diffusion?

Stable Diffusion 的 U-Net 規模不小。若直接更新全部參數,訓練成本、GPU 記憶體與權重儲存需求都會很高。

DiffVC-OSD 因此使用 LoRA,主要針對 U-Net 加入少量可訓練參數,讓生成模型適應影片壓縮,而不必完整重新訓練所有基礎權重。

研究團隊也測試過將 LoRA 放進 Stable Diffusion 的不同位置,最後選擇只調整 U-Net,以平衡多項感知品質指標。

不過,LoRA 降低的是微調參數量,不代表正式解碼時可以不載入原始 U-Net。基礎模型依然存在,運算量也不會因為只訓練 LoRA 就自動消失。

這點很像替大型 SaaS 系統只新增一個小型外掛。新增程式碼可能很少,但主系統還是要整套跑起來。

端到端微調為什麼重要?

DiffVC-OSD 使用九階段訓練流程。

前七個階段沿用原始 DiffVC 的訓練方式;第八階段凍結大部分模組,只訓練 Temporal Context Adapter 和 U-Net 的 LoRA;第九階段才將整套壓縮系統放在一起微調。

最終目標不只是讓圖片看起來漂亮,而是同時控制:

  • 動態資訊所需的位元率。
  • 畫面潛在表示所需的位元率。
  • 像素重建誤差。
  • 人眼感知上的相似程度。
  • 生成結果的自然程度。

多步擴散因為每一幀要通過許多次 U-Net,保留完整訓練梯度會占用大量記憶體。改成單步後,整條壓縮管線比較有機會一起微調。

論文顯示,最後的端到端微調讓感知指標下的平均位元率再降低約4.11%。

不過,九階段訓練也代表這不是一套容易從零重現的簡單模型。任何階段的資料、損失權重或權重版本不一致,都可能影響最終結果。

20倍解碼加速到底有多快?

這是最容易被誤讀的數字。

論文在 RTX 3090 GPU 上測試預測畫面的解碼時間:

  • 不使用擴散增強的基礎版本約為0.19秒。
  • 單步擴散版本約為0.39秒。
  • 加入 TCA 後約為0.40秒。
  • 使用50步擴散的對應版本約為8.14秒。

因此,0.40秒相較於8.14秒,確實接近20倍加速。

但0.40秒解一幀,大約只有每秒2.5幀,距離常見的24、30或60幀即時播放仍有明顯距離。這個時間還只是預測畫面的解碼,不一定包含完整檔案讀取、首張畫面、資料傳輸與顯示管線。

所以比較準確的結論是:

DiffVC-OSD 大幅降低了擴散式影片壓縮的解碼時間,但論文版本仍不能直接視為消費級即時影片編碼器。

它讓原本幾乎無法實用的多步流程,向可部署方向前進了一大段;但從「研究上快20倍」到「手機可以即時播放」,中間還有不少工程工作。

86.92%位元率降低該如何解讀?

論文中的86.92%不是在說任何影片丟進 DiffVC-OSD,都能比 MP4 小86.92%。

這項數字來自消融實驗:研究團隊將單步 DiffVC-OSD 與一個使用50步擴散的對應版本比較,並根據多種感知品質指標計算平均 BD-rate 差異。

換句話說,它表達的是:

在論文設定與感知品質標準下,單步版本達到相近品質時,比對應的多步版本需要更少位元。

它不是:

  • 相較所有傳統編碼器都節省86.92%。
  • 檔案必然縮小到原來的13.08%。
  • 在 PSNR 或逐像素品質下也有相同節省。
  • 所有影片內容都會得到相同結果。

與 VTM-17.0 比較時,DiffVC-OSD 在 LPIPS、DISTS、FID 和 KID 等感知指標上表現突出,但在 PSNR 等像素失真指標上不占優勢。這正是感知式壓縮的典型取捨:看起來更自然,不代表每個像素更忠實。

論文的測試條件有哪些限制?

DiffVC-OSD 使用 Vimeo-90K 進行訓練,並在 HEVC、MCL-JCV 和 UVG 三組資料上測試。

UVG 是公開的4K影片編碼測試資料集,包含多種50或120幀影片場景,經常用於評估影片編碼方法。UVG Dataset 官方頁面

不過,論文評估時只使用各影片序列的前96幀,並將關鍵畫面間隔設定為32幀。

這足以進行標準化比較,但仍沒有完全回答:

  • 播放數分鐘或數小時後,生成誤差是否累積。
  • 場景突然切換時,模型能否立即恢復。
  • 快速運動和劇烈鏡頭晃動是否穩定。
  • 字幕、介面、遊戲 HUD 和細小文字是否會閃爍。
  • 動畫、像素風遊戲和螢幕錄影是否適合相同模型。
  • 在非 NVIDIA GPU 或行動裝置上的速度如何。
  • 模型量化後是否仍能保持感知品質。

特別是前後幀相依的壓縮系統,短片測試和長時間穩定運行是兩種不同問題。

前一幀出錯,會不會一路傳下去?

會有這個風險。

DiffVC-OSD 使用上一張已解碼畫面建立目前的時間上下文。如果上一張畫面出現錯誤紋理、物體變形或生成細節偏移,這些內容可能被帶到下一張畫面。

動態補償與時間適配器可以降低不連續,卻也可能讓錯誤變得更有連續性。

常見風險包括:

  • 錯誤紋理持續數幀。
  • 人臉細節逐漸偏移。
  • 快速移動物體留下殘影。
  • 場景切換後保留前一幕特徵。
  • 小型文字反覆變形。
  • 某幀錯誤沿時間上下文傳播。

週期性插入關鍵畫面可以重設部分狀態,代價則是提高位元率。論文採用32幀間隔,正式產品仍需根據場景切換頻率、錯誤容忍度與頻寬重新設定。

DiffVC-OSD 適合哪些場景?

超低位元率娛樂影片

在頻寬非常有限,又以人眼觀看品質為主的情境中,生成式壓縮有機會用較少資料產生比較自然的結果。

例如短影音預覽、低頻寬直播備援或遠端內容瀏覽。

雲端影片儲存與離線轉碼

若影片不需要立即解碼,可以使用 GPU 離線處理,以更低位元率保存具有良好感知品質的版本。

但是否真的省錢,必須同時計算 GPU 推論費用、模型載入成本與儲存節省,而不是只看位元率。

VR、AR 與遠端呈現研究

感知式壓縮可以把位元集中在結構和語意,再由接收端重建細節,理論上適合頻寬受限的沉浸式內容。

不過,這類應用對延遲極度敏感,論文目前的0.40秒單幀解碼速度仍然不夠。

機器觀看的輔助串流

若影片主要提供給辨識模型而不是人觀看,可以探索同時傳輸影像潛在特徵與任務資訊。

但 DiffVC-OSD 主要最佳化人類感知品質,不能直接假設它也會提高物件偵測或追蹤準確率,必須另外測試。

哪些場景不應優先採用?

醫療與科學影像

生成模型可能補出原始畫面不存在的紋理。對診斷、顯微影像、衛星測量或科學記錄而言,這類修改可能不可接受。

法證與監控原始證據

人臉、車牌、文字和微小物體必須忠實保存,不應只保留「看起來合理」的版本。

如果需要生成式壓縮,至少也要另外保存原始影像或傳統編碼副本。

低功耗行動裝置

單步擴散仍需要 Stable Diffusion 的 U-Net 和 VAE,不是輕量手機編碼器。沒有專用神經加速器時,速度和耗電都可能不理想。

即時視訊會議

即使比50步擴散快20倍,0.40秒的單幀解碼仍遠高於即時通話需求。除非經過蒸餾、量化和硬體最佳化,否則目前比較適合研究及離線場景。

需要標準播放器相容的內容

神經影片壓縮通常不是把新位元流直接交給任何瀏覽器或電視就能播放。接收端必須擁有相同模型、正確權重和相容執行環境。

這會帶來版本、授權、硬體和長期保存問題。

真正部署前需要優化什麼?

將端到端延遲拆開量測

不要只測 U-Net,也要記錄:

  • 位元流解析時間。
  • 熵解碼時間。
  • 動態補償時間。
  • TCA 處理時間。
  • 擴散 U-Net 時間。
  • VAE 解碼時間。
  • GPU 與 CPU 之間的資料搬移。
  • 畫面顯示與網路緩衝。

只要其中一段頻繁同步 GPU,整體速度就可能比模型推論慢很多。

測試半精度與整數量化

Stable Diffusion 類模型通常可以使用半精度降低記憶體與運算成本,但影片壓縮還涉及熵模型和精確的狀態同步。

若編碼端與解碼端的數值誤差造成不同機率判斷,可能直接導致位元流解碼失敗。因此,不能只確認畫面品質,還要確認整套編碼流程是否完全一致。

管理模型版本

位元流若依賴特定神經網路權重,檔案本身就不再是完整的長期保存單位。

系統需要記錄:

  • 編碼器版本。
  • 解碼器版本。
  • Stable Diffusion 基礎權重版本。
  • LoRA 權重版本。
  • 熵模型版本。
  • 數值精度與運算環境。

否則三年後還留著影片檔,卻找不到能正確解碼的模型,壓縮率再漂亮也沒什麼用。

直接測試時間閃爍

單張影像品質指標不一定能偵測影片閃爍。正式評估應加入時間一致性指標,並讓真人觀看包含人臉、文字、水面、草地、細密網格和快速運動的片段。

我的經驗是,靜態截圖最容易讓生成式影片模型過關;真正播放起來後,細節像在呼吸,問題就藏不住了。

常見問題

DiffVC-OSD 是什麼?

DiffVC-OSD 是一種單步擴散式神經影片壓縮框架。它利用前一張解碼畫面的時間資訊,引導 Stable Diffusion 在一次處理內改善目前畫面的感知品質。

OSD 的意思是什麼?

OSD 代表 One-Step Diffusion,也就是單步擴散。它不是數學上的一階導數,而是將原本多次反覆去噪縮減成一次推論。

DiffVC-OSD 真的快20倍嗎?

相較論文中使用50步擴散的對應版本,預測畫面的解碼時間從8.14秒降低至0.40秒,接近20倍。但0.40秒一幀仍不等於即時影片播放。

86.92%位元率降低是跟誰比較?

這項數字主要來自與論文中的多步擴散版本比較,並以多項感知品質指標計算平均結果。它不代表相較所有 MP4、HEVC 或 VVC 影片都能固定減少86.92%。

DiffVC-OSD 會產生不存在的細節嗎?

有可能。它使用生成式擴散先驗改善感知品質,因此可能產生合理但不完全忠於原始影片的紋理。這也是它不適合直接用於醫療、法證和精密測量的原因。

單步擴散為什麼不直接輸入隨機雜訊?

影片壓縮器已經重建出包含結構資訊的潛在表示。DiffVC-OSD 直接從這份結果開始修復,避免先破壞結構再重新生成。

DiffVC-OSD 可以用一般播放器播放嗎?

通常不行。接收端需要相容的神經解碼器及正確模型權重。它目前更接近研究型神經編碼框架,而不是已廣泛支援的標準影片格式。

結語:一次擴散不是終點,而是從不可用走向可用

DiffVC-OSD 最重要的價值,是證明擴散式影片壓縮不一定要讓每一幀反覆跑數十次生成模型。

它保留壓縮潛在表示中的結構,直接進行一次生成式修復,再利用 Temporal Context Adapter 約束前後幀內容。這讓模型在感知品質上維持競爭力,同時將對應多步版本的解碼時間從8秒以上降低到約0.4秒。

但這仍是一套研究型框架,不是隨手換掉 H.265 就能立即省下八成頻寬的產品。

0.4秒一幀還不算即時,Stable Diffusion 也不算輕量;感知品質更好,則伴隨像素忠實度與生成錯誤風險。論文測試主要使用短序列,也尚未完整回答長影片、不同硬體、模型量化及標準播放器相容性等問題。

如果我要導入這項技術,我會先從離線轉碼和非關鍵娛樂內容開始,而不是直接拿去壓縮監視器證據或醫療影像。

畢竟壓縮系統最基本的工作,是讓資料變小之後仍然值得相信。畫面看起來很真固然重要,但在某些產品裡,「它真的是原本那個畫面」更重要。

立即體驗安全可靠的交易平台,點擊加入:https://www.okx.com/join?channelId=42974376