【CVPR2021】NBNet: Noise basis learning for image denoising with subspace projection
基於子空間注意力模塊的圖像降噪,作者尚未公開官方代碼,但 github上目前有一個非官方的實現可參考。下面內容主要來自青源LIVE,曠視CVPR20201預講。這是一個來自曠視、快手和電子科大的工作
1、背景
圖像降噪是 ill-posed 問題:設噪聲觀測圖為 \(y\),真實圖像為\(x\),噪聲為\(n\),則降噪是從 \(y\) 恢復 \(x\) 的過程。傳統方法在抹掉噪聲的同時容易丟失細節,最近比較流行的方法是深度CNN方法,當前基於深度學習的方法大多使用L1或者L2 loss,這樣的損失函數趨於輸出平均值,導致結果會過平滑。如下圖所示,左邊的是知名的 DnCNN 方法的結果,可以看到,很多信息丟失了,一個好的算法應該能夠在降噪的同時保留圖像細節。
2、子空間方法
子空間方法用於圖像分析是相當經典的,經常見到的是傅立葉變換、小波去噪、SVD。基本原理就是把圖像拆分為一組基,只要找到噪聲所處的基,把這部分去掉就可以了。
但是,當前方法的主要問題是,圖像分析中的基是人工構造的。圖像信息和噪聲往往在一組基中,當把這組基抹掉的同時,圖像的細節也損失了。
因此,作者想到,能不能利用深度學習自動的學習一組基,就可以更好的區分信息和噪聲的分布。論文中使用 subspace projection 來實現這個想法。投影可以較好的保留圖像的結構信息,同時,投影也是一種捕獲全局相關性的方式。同時,投影可以訓練一種信息與噪聲分離的網絡。
為此,作者提出了 SSA (subspace attention)模塊,如下圖所示。\(X_1, X_2 \in \mathbb{R}^{H\times W\times C}\) 表示兩個特征,首先輸入一個卷積網絡,得到一組 basis vectors。然后,將 \(X_1\) 投影到此子空間。值得注意的是\(X_1\)和\(X_2\)是來自不同 level 的特征,這里想用\(X_2\)來引導 \(X_1\) 的重構。
3、整體網絡結構
整體網絡是基於 U-NET,如下圖所示。首先,作者在 skip connection 位置加了很多 conv-block。同時,還發現越頂層的 block 對於降噪越有利,因此,在頂層加了很多 conv-block。每一個 level 上都加了一個SSA模塊。
在SSA中,左邊直接過來的特征作為 \(X_1\),因為它的特征抽象能力,是比從 decoder 那邊來的要小的。因此,從 decoder 過來的特征作為 \(X_2\),用來引導 \(X_1\) 的重構。
該網絡使用了簡單的損失函數:\(L(G,x,y)=|| x-G(y)||_1\) ,其中,\(G(\cdot)\)表示NBNet網絡。
4、實驗結果
作者指出,該方法在線條、點狀等弱紋理圖案處優於其他方法。這說明該方法能夠很好的利用全局信息修復圖像。
Ablation study 中,第一個實驗表明SSA模塊確實有效,只增加了很小的計算量就取得了非常好的效果。
作者還對基底進行了一組可視化,可以看到在綠框區域,NBNet對於細節的重構更好。同時,左側是16個基底的可視化結果,可以看出細微的紋理在基底上較好的學了出來,利用這樣的一組基底可以更好的實現圖像細節的修復。