Noise2Noise: Learning Image Restoration without Clean Data
發表在2018 ICML。
摘要:
We apply basic statistical reasoning to signal reconstruction by machine learning – learning to map corrupted observations to clean signals – with a simple and powerful conclusion: it is possible to learn to restore images by only looking at corrupted examples, at performance at and sometimes exceeding training using clean data, without explicit image priors or likelihood models of the corruption. In practice, we show that a single model learns photographic noise removal, denoising synthetic Monte Carlo images, and reconstruction of undersampled MRI scans – all corrupted by different processes – based on noisy data only.
結論:
We have shown that simple statistical arguments lead to new capabilities in learned signal recovery using deep neural networks; it is possible to recover signals under complex corruptions without observing clean signals, without an explicit statistical characterization of the noise or other corruption, at performance levels equal or close to using clean target data. That clean data is not necessary for denoising is not a new observation: indeed, consider, for instance, the classic BM3D algorithm (Dabov et al., 2007) that draws on self-similar patches within a single noisy image. We show that the previously-demonstrated high restoration performance of deep neural networks can likewise be achieved entirely without clean data, all based on the same general-purpose deep convolutional model. This points the way to significant benefits in many applications by removing the need for potentially strenuous collection of clean data.
AmbientGAN (Ashish Bora, 2018) trains generative adversarial networks (Goodfellow et al., 2014) using corrupted observations. In contrast to our approach, AmbientGAN needs an explicit forward model of the corruption. We find combining ideas along both paths intriguing.
要點:
- 以往我們都是學習受損圖像到干凈圖像的映射;由於往往是病態問題,因此需要圖像先驗或似然模型。本文向我們展示:我們可以只通過觀察受損樣本,達到相似甚至更好的效果。本文以去噪為例。
- 實際上,這種思想在歷史工作中已經有所體現。例如BM3D算法,通過搜索和處理同一張有噪圖像內的相似塊(沒借助干凈塊),完成去噪的目的。但本文是第一個論證:這種思想也可以在DNN中實現。
優點:
- 這是一篇非常具有insight的文章,指出了理解神經網絡學習與點估計的相似性。
- 這種insight可以指導我們直接通過有噪數據訓練神經網絡,解決了無損圖像獲取困難的問題。
局限:論證很模糊,並且是在噪聲零均值的假設下論述的。
故事背景
如果我們接觸過圖像(信號)恢復中基於模型(重建)的算法,我們就知道:其難點和麻煩的地方,在於對似然函數(降質模型)和圖像先驗(稀疏、平滑等)的建模。
而CNN很好地解決了這一問題,但需要大量的訓練數據,通常是受損輸入\(\hat{x}_i\)和干凈目標\(y_i\),並且訓練目標是最小化經驗損失:
其中,\(f_{\theta}\)是參數化的映射(a parametric family of mappings),例如CNN。
獲取大量干凈數據是很困難的。例如,為了獲得無噪圖像,我們需要長曝光;為了獲得MRI圖像的完整采樣,圖像中不能有動態目標等。
這篇文章就告訴我們:其實我們只需要觀察受損圖像,就能學習該映射,有時甚至能學得更好。同其他基於CNN的學習方法一樣,我們不需要對似然和先驗作過多假設。
算法原理
點估計
假設我們有一組溫度采樣數據\((y_1, y_2, \dots)\)。我們希望在某種損失度量\(L\)下,得到溫度估計值\(z\)(希望該損失最小):
如果采用\(L_2\)損失,那么估計值就是觀測值的算術平均(批注:假設樣本分布i.i.d.):
總結一下,點估計帶有一些統計平均的性質。比如,我們可以簡單地對多點采樣的溫度取平均,得到最終的估計溫度。
神經網絡算法與點估計的關系
回過頭來,我們觀察式1。乍一眼看,式1表達的是參數預測問題(不是簡單地估計值,而是學習一個預測模型,服務千千萬萬的輸入),式2是點估計問題,二者不是一個東西。
理想狀況下,網絡的優化方式如下(提供准確的先驗和似然):
上式可以理解為:對於每一個樣本\(x_i\),都在執行一次點估計。可以理解為:根據觀測點\(y\),估計點\(z = f_{\theta}(x)\),而估計完成時,參數\(\theta\)就可以根據\(z\)推出(或者說二者本質是一樣的)。
當然,這種論證是很粗糙的,但提供給我們一個非常有用的見解。我們考慮超分辨問題:這是一個典型的病態問題,因為高頻信息在采樣過程中丟掉了,而同一張LR圖像可以對應大量的HR圖像。
借助上述點估計思想,我們不難理解:神經網絡實際上是將這些大量的、可能的HR圖像做了一個統計平均(點估計的特性),因此\(L_2\)范數下超分辨圖像常常被過度平滑。
這也能解釋BM3D的成功本質!
核心思想
基於上述思考,我們可以很自然地思考:既然是統計平均,那么我們可以將干凈圖像\(y\)隨意換成其他圖像(信號),只要保證期望不變,那么也能得到我們想要的估計值\(z = f_{\theta}(x)\)(式3),進而得到不變的參數\(\theta\)(式4)!
換句話說,如果假設噪聲零均值(或保證期望仍然是無噪圖像的期望),那么我們就可以讓神經網絡的輸入和監督都是有噪圖像,學習的參數是一樣的!
即:
其中,\(\hat{x}_i\)是有噪圖像,\(\hat{y}_i\)也是有噪圖像(\(y_i\)不一定要和\(x_i\)相同),\(y\)就是目標干凈圖像。
附錄A.3.給出了一個證明,證明\(y_i\)和\(\hat{y}_i\)均值之間的誤差與樣本數量\(N\)有關;當\(N\)足夠大時,該誤差趨於0。
在一篇引用該文的論文中,\(\hat{x}_i\)和\(\hat{y}_i\)用的是同一幅干凈圖像、在同一噪聲分布下分別獨立產生的兩幅圖像。
回頭品味
再回頭品味一下。實際上,BM3D算法屬於基於模型(重建)的算法,英文叫a model-based or reconstruction-based approach。BM3D通過塊匹配和協同濾波的方式去噪,可以簡單理解為統計平均取均值,從而消除噪聲。
但是,這篇文章提出,神經網絡算法也可以理解為統計平均。這種思想很前衛,也很不好理解,論證也很模糊。
我們原來對神經網絡工作模式的理解大致如下:大量有噪圖像 -> 表征圖像本質的高維特征 -> 重建圖像 <- 對應干凈圖像監督。
現在我們換個角度理解:大量有噪圖像 -> 表征圖像本質的高維特征 -> 大量重建圖像 <- 另一組有噪圖像監督(要求或假設總期望相同)
再理解:如果我們能將 神經網絡的工作模式 理解為點估計,那么無論是估計干凈圖像,還是估計另一組有噪圖像(期望仍是干凈的),學習得到的模型仍然是一樣的,估計得到的參數也是一致的。
怎么理解,見仁見智,歡迎評論區各路大神啟發我~~
實驗
實驗嘗試了高斯噪聲、泊松噪聲、伯努利噪聲、蒙特卡羅圖像噪聲,以及欠采樣的MRI圖像噪聲。
高斯
網絡采用RED30,是一個30層的殘差網絡。其余測試采用了更窄的U-Net,訓練速度更快,效果相似。
高斯噪聲標准差從0到50不等,混合在一個訓練集中,因此讓網絡具有盲去噪的功能。
訓練集采用ImageNet,測試集采用BSD300、SET14和KODAK。
如上表,該方法的效果超過了BM3D。
由於網絡無法真正實現從一副有噪圖像映射至另一幅有噪圖像,因此損失一直都很大。
但是梯度不大,原因沒看懂:
While the activation gradients are indeed noisy, the weight gradients are in fact relatively clean because Gaussian noise is independent and identically distributed (i.i.d.) in all pixels, and the weight gradients get averaged over \(2^16\) pixels in our fully convolutional network.
可能的意思是:平均多了,由於每個像素點上的噪聲是iid的,因此會有一些抵消,故梯度比較干凈。
但如果每個像素點之間的噪聲存在關聯,那么這種抑制效果就會減弱,梯度就會很大,訓練會比較振盪。如下圖(b):
這種噪聲是在高斯噪聲圖像的基礎上,做了一個高斯濾波。帶寬越大,關聯越強,訓練曲線越振盪。
現在,我們討論算法對數據量的需求。假設使用一張ImageNet圖像加噪,計算量是1CU。
-
第一種情況,我們使用100張圖像,每張圖像生成20副噪聲圖像。這樣就有\(100*20*19 = 38000\)對訓練樣本。(噪聲圖像兩兩作為輸入)
-
第二種情況,我們按照傳統做法,100副圖像,每幅圖像生成1副對應的噪聲圖像,但訓練時一一對應。
-
第三種情況,我們使用1000張圖像,每張圖像生成2副噪聲圖像。這樣就有\(1000*2*1 = 2000\)對訓練樣本。
如上圖(c),效果都比傳統做法更好。
其他生成噪聲
泊松噪聲是攝像中的主要噪聲,盡管是零均值的,但與信號有關,很難消除。略。