AI 修復為什麼看起來像塑膠:損失函數、GAN、擴散模型與避免方法
AI 修復後的影片為什麼像打了蠟:細節被平均掉、GAN 憑空生成紋理、擴散模型偏離原片、訓練資料對不上,以及怎麼辨識和避免。
重點速覽
模型去掉真實紋理的速度比重建得快,AI 修復就會出現塑膠感。皮膚變得像蠟,頭髮黏成一綹一綹,顆粒和樹葉糊成平滑的色塊,畫面看起來乾淨,卻很假。成因其實相當清楚:訓練用的損失函數、模型類型,以及和素材對不上的訓練資料。
- 所謂「塑膠感」,是修復把細微紋理(毛孔、頭髮、顆粒、樹葉)平均掉了,或換成和場景對不上的憑空紋理。
- 只用像素誤差(L1 或 L2)訓練的模型,預測的是所有合理答案的平均值,而平均值是平滑的。GAN 和擴散模型會把紋理加回來,但其中一部分是編出來的。
- Blau 和 Michaeli 證明了:不論用哪種失真指標,低失真和高真實感都互相拉扯,所以沒有哪個單一分數能告訴你哪個結果看起來對。
- 另外兩大成因是:訓練資料和你的素材對不上,以及人臉先驗把臉往一張「通用臉」拉。
- 用 100% 縮放、在播放中檢查;調低強度或和原片混合;保留或加回顆粒;先修復再放大。
AI 修復的「塑膠感」是什麼?
塑膠感指的是修復後的畫面,表面比真實場景更平滑、更均勻,皮膚、布料、頭髮和樹葉失去了讓它們看起來有實體感的細小不規則紋理。它常常伴隨著銳利的輪廓:在下文的 FFmpeg 測試中,強力降噪加銳化留下了硬朗的棋盤格邊緣,邊緣之間的細紋理卻沒了。平滑的填色配上銳利的邊界,眼睛就會讀成蠟像或 CG。
各類模型怎麼出錯
| 模型類型 | 從什麼學習 | 用力過頭時的典型問題 | 例子 |
|---|---|---|---|
| CNN 回歸 | 像素損失(L1、L2 或 MSE) | 平滑、被平均掉的紋理 | SRGAN 之前用 MSE 訓練的網路 |
| GAN | 像素、感知與對抗損失 | 憑空生成的紋理與瑕疵 | SRGAN、Real-ESRGAN |
| Transformer | 同樣的損失,加上長距離注意力 | 取決於它用的損失會帶來哪種問題 | SwinIR、Restormer |
| 循環式影片模型 | 多幀對齊後的特徵 | 對齊失敗處出現拖影或鬼影 | BasicVSR++ |
| 擴散模型 | 從學到的影像或影片先驗反覆去噪 | 細節偏離原片、閃爍、運算量大 | Upscale-A-Video、STAR、SeedVR2 |
使用 L1 或 L2 損失的 CNN 回歸
一個退化的像素,可能對應很多種清晰的原貌:邊緣可能偏左一個像素,也可能偏右;一塊皮膚的毛孔可以有無數種排列。用 L2(MSE)損失訓練的網路,預測這些可能性的平均值才會得分,而許多位置不同的清晰紋理一平均,就成了平滑一片。L1 預測的是中位數,對邊緣有幫助,但位置不確定的紋理仍會互相抵消。SRGAN 的作者說得很直接:以 MSE 為目標訓練的結果往往缺少高頻細節,觀感上令人不滿意。

GAN:靠對抗損失生成紋理
SRGAN 加入了一個判別器,學著分辨修復圖和真實照片,並以感知相似度而非像素來計算內容損失;作者把效果描述為把解推向自然影像流形。輸出看起來更銳利,但紋理是為了「看起來合理」而生成的,不是找回來的。生成器沒把握時,仍然得產出類似紋理的東西,憑空出現的圖樣和刺眼的邊緣就是這樣來的。Real-ESRGAN 只用合成資料訓練,也模擬了真實素材常帶有的振鈴和過衝,讓模型學會去除它們。
Transformer 與循環式影片模型
SwinIR、Restormer 這類 Transformer 用注意力取代卷積,能捕捉長距離的像素關係;Restormer 指出標準注意力的運算量隨解析度呈平方成長,所以修復用的 Transformer 會採用更有效率的注意力設計。架構本身不決定有沒有塑膠感,損失函數才是關鍵。影片方面,BasicVSR++ 這類循環式模型用光流引導的可變形對齊,在片段中前後傳遞特徵,讓一幀能向鄰近幀借用真實細節,而不是自己編。在快速運動或遮擋處對齊失敗時,借來的細節就會拖影或出現鬼影。
擴散模型修復
擴散模型從學到的先驗反覆去噪來修復,生成的細微細節最能以假亂真。這個長處同時也是風險。Upscale-A-Video 的作者指出,擴散取樣的隨機性讓時間一致性很難做到,因此他們開放雜訊等級,用來在修復與生成之間取捨。STAR 指出,用靜態圖片訓練的影像擴散模型難以保持時間一致性,而大型生成骨幹可能削弱保真度。成本是另一個限制:SeedVR2 的作者形容擴散影片修復的推論成本高得難以承受,所以他們把它蒸餾成單步。
感知與失真的權衡
Blau 和 Michaeli 證明了,失真(輸出離真實影像多遠)和感知品質(輸出有多難和真實影像區分)彼此衝突:平均失真越低,輸出就越容易被看出不是真實影像。這個結論對任何失真指標都成立,不只是 PSNR 或 SSIM;作者也說明,GAN 提供了一種有理論依據的方式去逼近這個界限。

我們在合成素材上重現了這個效應。把一段帶細紋理的測試片段退化成一半解析度,加上雜訊和重度壓縮,再用 FFmpeg 濾鏡代替模型,以兩種方式「修復」:強力降噪加銳化,以及輕度降噪後加回顆粒。和乾淨原片比較的分數如下:
| 版本 | 細紋理(我們的高通量測值) | 對乾淨原片的 PSNR | 對乾淨原片的 SSIM |
|---|---|---|---|
| 乾淨原片 | 5.1 | 基準 | 基準 |
| 退化後,只用 Lanczos 放大 | 1.3 | 31.6 dB | 0.700 |
| 強力降噪加銳化 | 0.35 | 32.0 dB | 0.721 |
| 輕度降噪,加回顆粒 | 3.5 | 31.0 dB | 0.651 |
過度平滑的版本在兩項像素指標上都勝出,卻只留下原本紋理的大約十五分之一;加顆粒的版本保住了大部分紋理能量,分數反而最低,因為隨機顆粒和原本的圖樣無法逐像素對上。手上有乾淨的參考片時(例如為了測試設定而刻意把片段退化),量測只要一行指令:
ffmpeg -i restored.mp4 -i reference.mp4 -lavfi "[0:v][1:v]psnr" -f null -指標適合用來抓出大幅改寫,不適合拿來排名觀感;我們如何評估影片畫質 說明了為什麼相似度分數量的是改變,不是改善。

退化不匹配與身分漂移
退化不匹配。 模型只能復原它學過的損傷。Real-ESRGAN 的對策是高階退化模型,把模糊、縮放、雜訊和壓縮反覆串接,因為真實的損傷比單純降取樣複雜得多。素材帶有訓練組合以外的損傷時,例如隔行殘留、嚴重的色度雜訊、少見的壓縮方式或膠片顆粒,模型可能把它當成細節去銳化,也可能把它全當成雜訊,連同紋理一起抹掉。
人臉身分漂移。 人臉修復模型帶有很強的先驗:GFPGAN 借助預先訓練的人臉 GAN,CodeFormer 則從學到的五官碼本中預測條目。兩篇論文都把結果描述成品質與保真度之間的平衡,CodeFormer 還把這個取捨做成可調的控制項。先驗越強,又小又模糊的臉就越會被拉向一張看似合理的平均臉:皮膚光滑、牙齒整齊、眼睛千篇一律。該檢查哪些地方,請見 如何修復影片中的人臉。
2026 年的新變化
- 單步擴散。 蒸餾和對抗式後訓練把擴散修復縮減成單步;SeedVR2 回報的結果與多步方法相當或更好。推論成本降低,讓擴散式的細節在長片段上變得可行,但保真度的問題依然存在。
- 時間先驗。 新的影片超解析度不再逐幀執行影像模型,而是改用影片先驗:Upscale-A-Video 用時間層與循環式潛在傳遞,STAR 則用文字生成影片的骨幹。
- 裝置端 NPU。 Microsoft 的 Copilot+ PC 開發指南提到每秒運算超過 40 兆次的 NPU,並指出許多 NPU 執行 INT8 這類整數運算,所以模型要先轉成較低精度的格式才能在上面執行。
怎麼看出塑膠感
| 100% 縮放時看哪裡 | 塑膠感的跡象 | 自然的跡象 |
|---|---|---|
| 皮膚 | 均勻、沒有毛孔、蠟質般的反光 | 臉頰和鼻子上有毛孔與細微變化 |
| 頭髮 | 黏成一綹一綹,或像畫上去的紋理 | 髮絲分明,往邊緣逐漸變細 |
| 文字與標誌 | 字母被重畫成錯誤的形狀 | 形狀與原片一致,就算偏軟 |
| 樹葉與碎石 | 糊成一團,或出現重複的圖樣 | 不規則的細節,在畫面各處各不相同 |
| 天空、牆面等平坦區域 | 平滑的色帶,或憑空多出的紋理 | 和原片相近的顆粒或雜訊 |
| 運動中 | 紋理游移或閃爍 | 細節跟著物體一起移動 |
拿原片和結果的同一塊裁切來比較。原片用最近鄰縮放,才看得到它真正的像素:
ffmpeg -ss 2 -i source.mp4 -ss 2 -i restored.mp4 -filter_complex "[0:v]scale=1280:720:flags=neighbor,crop=480:270:760:400[a];[1:v]crop=480:270:760:400[b];[a][b]hstack" -frames:v 1 compare.png差異圖能顯示修復拿掉或加上了什麼。中灰色代表沒變;平坦區域出現結構,代表雜訊或紋理被去掉了;出現新的圖樣,代表有憑空生成的細節:
ffmpeg -ss 2 -i source.mp4 -ss 2 -i restored.mp4 -filter_complex "[0:v]scale=1280:720:flags=bicubic,format=gray[a];[1:v]format=gray[b];[b][a]blend=all_mode=grainextract,eq=contrast=4" -frames:v 1 diff.png在我們的測試中,過度平滑版本的差異圖顯示:平坦區域裡原片的雜訊與區塊,以及棋盤格區域的紋理,全都被去掉了。
怎麼避免
方法 1:調低強度,或和原片混合。 許多修復工具都有強度或保真度的控制項,例如 CodeFormer 的保真度取捨、Upscale-A-Video 的雜訊等級;用能解決問題的最低設定就好。工具沒有這類控制項的話,就把它的輸出和原片混合:
ffmpeg -i source.mp4 -i restored.mp4 -filter_complex "[0:v]scale=1280:720:flags=lanczos,format=yuv420p[a];[1:v]format=yuv420p[b];[b][a]blend=all_expr='A*0.7+B*0.3'" -c:v libx264 -crf 16 -c:a copy blended.mp4這樣會保留 70% 的修復結果和 30% 放大後的原片。在我們的測試中,混合找回了一點紋理(依我們的量測,0.63 對比 0.35),也一併帶回了部分原片雜訊,所以適合輕微的情況。
方法 2:保留顆粒,或最後再加回去。 顆粒能遮住蠟質感,也讓編碼器有紋理可保留。只在亮度上加細緻的時間性顆粒,並把 x264 調成適合顆粒的設定:
ffmpeg -i restored.mp4 -vf "noise=c0s=6:c0f=t" -c:v libx264 -crf 16 -tune grain -c:a copy regrained.mp4c0s=6 設定亮度雜訊的強度,c0f=t 讓它每幀變化;x264 的 grain 調校會減弱去區塊並縮小量化死區,讓細顆粒在編碼後留下來。在我們的測試中,紋理量測值從 0.35 升到 3.5,乾淨原片則是 5.1。這是新加的顆粒,不是找回的細節。想先分清顆粒和雜訊,請見 顆粒、雜訊與壓縮瑕疵的差別。
方法 3:先修復再放大。 在原始解析度下先去掉壓縮區塊和雜訊,再放大。放大器如果把區塊和雜訊當成細節,就會把它們放大、銳化。
方法 4:在播放中判斷。 紋理閃爍在靜止畫面上看不出來。把原片和結果並排,以原片的幀率在 100% 縮放下觀看:
ffmpeg -i source.mp4 -i restored.mp4 -filter_complex "[0:v]scale=1280:720:flags=neighbor[a];[a][1:v]hstack" -c:v libx264 -crf 16 side_by_side.mp4技巧: 先檢查人臉、文字和樹葉。憑空生成的細節在這些地方最容易被看出來,也最說不過去。
KwaFlux 的做法
- 智能修復會參考鄰近幀。 在 畫質修復 中,智能修復 會先檢查片段,再結合降噪、銳化、色彩與亮度校正、放大,以及人臉與細節修復。因為參考鄰近幀,它屬於上文所說的多幀修復模型。
- 場景修復的各類型逐幀處理。 動漫、夜景、去霧、去雨、上色 和 膠片去噪 各自針對一種損傷。把場景類型用在不適合的素材上,是臉部出現蠟質感的常見原因;怎麼選請見 該選哪種修復類型。
- 匯出前先預覽。 渲染 1、3 或 5 秒的預覽。AI 預覽預設最高 15 fps,所以判斷運動或閃爍之前,先選 跟隨原幀率。
- 把相似度分數當成警示。 打開 預覽後自動畫質對比 後,每次預覽都會回報幾項分數,其中包括 與原片接近程度 (VMAF),應用程式對它的說明是「數值高表示改動小,並非畫質更好」。分數大幅下滑,代表改寫得很重,值得在 100% 縮放下檢查。
- 留住你想要的顆粒。 膠片去噪 本來就是用來去掉顆粒的。如果顆粒是畫面風格的一部分,就別用它;匯出後如果結果太乾淨,再用上面的 FFmpeg 指令加回顆粒。
問題排解
| 問題 | 可能原因 | 解決方法 |
|---|---|---|
| 皮膚像蠟、沒有毛孔 | 降噪太強,或是回歸式的結果 | 調低強度、和原片混合、加細顆粒 |
| 頭髮變成畫出來的一綹綹 | 生成式先驗憑空生成的紋理 | 調低強度,對照原片的裁切 |
| 字母變形 | 模型重畫了它讀不出的文字 | 這一區保留原片;讀不出的文字找不回來 |
| 紋理游移或閃爍 | 逐幀生成,沒有時間一致性 | 改用多幀修復模型,並以原片幀率判斷 |
| 雜訊被銳化成刺眼的細節 | 模型沒學過的損傷 | 先降噪或去區塊,再放大 |
| 臉看起來像別人 | 又小又模糊的臉碰上很強的人臉先驗 | 調低人臉修復強度,在 100% 縮放下確認長相 |
做不到的事
- 沒有任何修復工具能找回攝影機沒拍到的細節。 它預測的是看起來合理的細節。
- 沒有哪個設定適合每個鏡頭。 紋理豐富的素材和平面圖形,出錯的方向不一樣。
- 指標挑不出看起來自然的結果。 像素分數偏好平滑,所以得靠你的眼睛判斷。
- 加顆粒不等於修復紋理。 它只是遮住蠟質感。
結語
平均壓過了紋理,或憑空生成的紋理和場景對不上,AI 修復就會出現塑膠感。選擇能保住保真度的設定,在 100% 縮放和播放中比較,看到乾淨卻毫無紋理的畫面,要當成警訊,而不是成果。
KwaFlux 在你自己的 GPU 上執行畫質修復。AI 處理在你自己的 GPU 上執行,媒體檔案不會為了處理而上傳。可在 Windows 10(64 位元,1809 或更新版本)、Windows 11,以及搭載 Apple Silicon 的 macOS 12 或更新版本上執行。預覽不需要帳號:任何片段都能渲染 1、3 或 5 秒的預覽。僅在匯出、轉換、檔案修復和從連結下載檔案時需要登入並購買付費方案。
用你自己的真實素材實測效果
下載 KwaFlux,付費前先在自己的素材上免費預覽效果——無需註冊,在你的 GPU 上處理,媒體檔案不上傳。 影片預覽可選 1、3或5 秒;防抖預覽可選 5、15或30 秒。
常見問題
PSNR 或 SSIM 分數越高,修復效果就越好嗎?
不一定。像素指標獎勵的是平均起來接近參考片的輸出,而平均值是平滑的。在我們的合成測試中,過度平滑的結果在 PSNR 和 SSIM 上都贏過顆粒較多、較自然的結果。把分數當成檢查大幅變動的工具就好;原因請見 我們如何評估影片畫質。
修復影片用擴散模型比 GAN 好嗎?
要看情況。擴散模型通常能生成更逼真的細節,但執行成本更高,也可能偏離原片或在幀與幀之間閃爍。GAN 比較快,但用力過頭時會憑空生成紋理。對影片來說,時間一致性和細節一樣重要。
加膠片顆粒能修掉塑膠感嗎?
部分可以。細顆粒能遮住蠟質的表面,也讓編碼器有紋理可保留,但它是新加的隨機紋理,不是找回的細節,所以修不了錯誤的形狀或變了樣的臉。請在所有縮放之後最後再加。
為什麼修復後的細節在播放時會閃?
因為逐幀獨立重建的模型,每一幀編出的紋理都略有不同,眼睛就會把這些變化看成閃爍或游移。從對齊後的鄰近幀借用細節的多幀模型能減輕這個問題,所以請以原片的幀率判斷。
為什麼雜訊多的影片放大後反而更難看?
因為放大器把雜訊或壓縮區塊誤當成細節,連同畫面一起放大、銳化了。先在原始解析度下把畫面清乾淨,再放大;想要顆粒的話,最後再加。
參考資料
- Blau and Michaeli, "The Perception-Distortion Tradeoff," CVPR 2018 (distortion and perceptual quality are at odds for any distortion measure) (2026-10-21 查閱)
- Ledig et al., "Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network" (MSE results lack high-frequency detail; adversarial and content losses) (2026-10-21 查閱)
- Wang et al., "Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data" (high-order degradation model, ringing and overshoot) (2026-10-21 查閱)
- Liang et al., "SwinIR: Image Restoration Using Swin Transformer" (2026-10-21 查閱)
- Zamir et al., "Restormer: Efficient Transformer for High-Resolution Image Restoration" (long-range interactions, quadratic cost) (2026-10-21 查閱)
- Chan et al., "BasicVSR++: Improving Video Super-Resolution with Enhanced Propagation and Alignment" (2026-10-21 查閱)
- Wang et al., "Towards Real-World Blind Face Restoration with Generative Facial Prior" (GFP-GAN; realness and fidelity) (2026-10-21 查閱)
- Zhou et al., "Towards Robust Blind Face Restoration with Codebook Lookup Transformer" (CodeFormer; controllable fidelity and quality) (2026-10-21 查閱)
- Zhou et al., "Upscale-A-Video: Temporal-Consistent Diffusion Model for Real-World Video Super-Resolution" (temporal consistency, noise levels) (2026-10-21 查閱)
- Xie et al., "STAR: Spatial-Temporal Augmentation with Text-to-Video Models for Real-World Video Super-Resolution" (image diffusion and temporal consistency) (2026-10-21 查閱)
- Wang et al., "SeedVR2: One-Step Video Restoration via Diffusion Adversarial Post-Training" (one-step restoration, inference cost) (2026-10-21 查閱)
- Microsoft Learn, "Copilot+ PCs developer guide" (NPUs above 40 TOPS, INT8 models) (2026-10-21 查閱)
- FFmpeg Filters Documentation (`psnr`, `blend`, `noise`, `nlmeans`, `unsharp`) (2026-10-21 查閱)
- x264 source, x264.c help text (`--tune grain` settings) (2026-10-21 查閱)

