Model-blind video denoising via frame-to-frame training
發表在2019年CVPR。
核心內容:基於Noise2Noise思想,這篇文章致力於無監督的視頻盲去噪:是的,連噪聲樣本都不需要了。
這篇文章寫作和概括太棒了!它的Introduction非常值得回味!它對去噪相關工作的概述、對本文啟發工作的簡述、對本文工作的概述都非常流暢。
故事
-
我們擁有的“干凈”圖像,往往不是干凈的。理想的干凈圖像是從成像傳感器上獲取的,然而我們看到的圖像還經過了相機內部的處理流程。該過程包含量化、去馬賽克、伽馬校正、壓縮等。
-
因此,如果要對視頻去噪,最好能知道有噪視頻的生成過程,即所謂的model of processing chain。
-
然而,該model通常是未知且難以建模的,並且這些噪聲通常是與信號相關的(signal-dependent)。
-
為此,本文作者提出了model-blind的逐幀去噪方法。
-
為了達到較好的無監督學習性能,該網絡是從預訓練的DnCNN上fine-tune的。
-
作者還提出了兩種訓練模式:on-line和off-line。在on-line模型下,該網絡會根據輸入視頻的前幾幀進行fine-tune;在off-line模式下,則可以用一批視頻進行訓練,效果更好。
-
本文受到了Noise2Noise思想和one-shot object video segmentation訓練方法的啟發。在one-shot中,作者借助一個預訓練的分割網絡,在第一幀中標注目標並fine-tune,以完成視頻其余幀的分割任務;在Noise2Noise中,訓練目標是最小化 同一張圖像的兩個有噪版本 之間的差異。本文類似於one-shot的去噪版本,且無需任何干凈圖像:將視頻的相鄰幀作為訓練目標。
引述本文的一句話:
In this work we show that, for certain kinds of noise, in the context of video denoising one video is enough: a network can be trained from a single noisy video by considering the video itself as a dataset.
本文方法
流程
剛剛說了,我們需要從一個預訓練的去噪網絡出發。這是因為我們的訓練集很小(線上模式只有該視頻的幾幀)。這也是借鑒one-shot的。
此外,我們假設視頻中的相鄰幀是同一自然圖像的兩種有噪分布。但它們仍然存在微小的運動誤差。為此,我們采用TV-L1光流[46,37]。該運動補償方法非常快。補償后采用雙線性插值。顯然這里有兩點假設:
-
相鄰幀的噪聲分布獨立;
-
運動補償后的幀 與 參考幀 的 潛在干凈圖像 是一致的。
還有,我們還考慮了遮擋,建立了一個遮擋膜(occlusion mask)。我們采用了[4]的簡單方法:當光流散度較大時,我們就認為出現了遮擋情況,該點遮擋膜值為1,否則為0。
最后,我們計算損失時,出現遮擋的就不計入計算。即損失等於原損失乘以遮擋膜。
作者采用的是\(L_1\)損失。首先聲明,選擇損失函數要根據噪聲的特性。但在噪聲屬性未知或復雜的情況下,最直接的辦法就是:逐個實驗,選其最佳。作者選擇\(L_1\),是因為其表現比\(L_2\)更好[50],並且能處理包含泊松、JPEG壓縮、低頻等噪聲。
訓練
在線下訓練時,我們會對整個視頻進行迭代。訓練目標是\(L_1\)損失,迭代若干次。
在線上訓練時,我們逐幀訓練。隨着視頻播放,迭代幀數會越來越多。這有點契合了life-long learning[47]的思想。
注意,我們還可以換反方向進行運動補償,從而獲得了雙倍的訓練數據用於迭代。
實驗
實驗采用的預訓練網絡,是在標准差25的AWGN下訓練的DnCNN。
本文可能是第一篇視頻盲去噪工作。因此,作者與Noise clinic、VBM3D和DnCNN進行了對比。
如圖,首先探究的是在標准差為25的AWGN下的表現。此時DnCNN表現正常,本文方法無論何種模式,都與DnCNN不相上下。
其次,我們探究在標准差為50的AWGN下的表現。此時,DnCNN表現辣眼睛,而本文方法通過fine-tune逐漸地趨於優秀。
此外,我們還探究了其他噪聲:混合高斯、相關、椒鹽、JPEG噪聲等。效果如圖,盲去噪真香!
兩種模式主要差異:線下模式會更穩定,方差更小。
此外還有一個發現:本文方法和DnCNN一樣,都會趨於過度平滑。如果將預訓練網絡換成其他更保真的視頻去噪方法,可能會改善這個問題。