Noise2Noise:Learning Image Restoration without Clean Data讀書筆記

論文題目:Noise2Noise: Learning Image Restoration without Clean Data

一、簡介

論文提出,在沒有乾淨數據的情況下也能對圖像進行重建,重建效果和使用乾淨數據恢復一樣好甚至在有些情況下更好。論文展示了單個模型進行了攝影噪聲去除,合成蒙特卡羅渲染去除,以及欠採樣MRI掃描的重建 。

論文使用\widehat{x}表示輸入的噪聲圖像,並且是根據對應的乾淨圖像隨機分佈的變量,\widehat{x}\sim p(\widehat{x}|y_{i}),論文僅僅是根據噪聲圖像對圖像進行修復,此外,既不需要明確的噪聲統計似然模型,也不需要圖像先驗,而是間接地從訓練數據中學習這些信息。雖然從統計的角度來看,論文的結果沒有很大的優勢,但它通過提升訓練數據的可用性要求,極大地簡化了實際的信號重建。

二、知識理論背景

假設有一組不可靠的室溫測量值(y1,y2,...)。估計真正未知溫度的一個常見策略是根據損失函數L找到一個與測量值的平均偏差最小的z:

當L爲L2時,L(z,y) = (z-y)^{2},這個最小值是在觀測值的算術平均值處找到的。

當L爲L1時,L(z,y)=|z-y|,則最優解爲觀測值的中值。

當L爲L0時,L(z,y)=|z-y|^{_{0}},即差不爲0的個數,最優解爲觀測值的衆數。

從統計的角度看,這些常用的損失函數可以看作負對數似然函數的最大似然估計。

神經網絡的訓練的目標函數如下:

如果對輸入數據的依賴去掉的話,目標函數變爲:

相反,在每個訓練樣本中,完全訓練任務分解爲相同的最小化問題,目標函數爲:

實際上,在有限數量的輸入-目標對上訓練迴歸器的過程隱含了一點:輸入與目標的關係並不是一一對應的,而是一個多值映射問題。例如,在所有自然圖像的超分辨率任務中,低分辨率圖像x可以對應用許多不同的高分辨率圖像y,因爲在抽取過程中丟失了關於邊緣和紋理的準確位置和方向的知識。

L2最小化的存在一個性質是,當用期望與目標相匹配的隨機數替換目標時,結果估計值保持不變。這意味着,用零均值噪聲破壞神經網絡的訓練目標,原則上是不會改變網絡需要學習的內容的(即不會影響網絡的輸出)。

綜上,經驗風險最小化公式可以寫爲:

上面公式的輸入和目標都是從噪聲分佈圖像中提取的,基於前面的的知識,未觀測到的乾淨數據y_{i}爲:

對於無限的數據,用噪聲圖像作爲目標的結果就和用乾淨圖像作爲目標的重建效果一樣。

對於有限的數據,方差是目標中噪聲的平均方差除以訓練樣本的數量,即:

根據論文提出的理論以及方差和協方差的基本性質,可以得到最後一排公式。

如果噪聲是互不相關的,則可以簡化爲:

無論是哪種情況,估計的方差都是噪聲的平均(協)方差,除以樣本N的數目。因此,隨着樣本數的增加,誤差接近於零。

三、實驗

3.1 加性高斯噪聲

對目標圖片加上人工合成的加性高斯噪聲,使用L2損失進行訓練修復。

baseline:之前博文提到的一種具有128個特徵映射的30層分層殘差網絡的“RED30”方法,它在包括高斯噪聲在內的各種圖像恢復任務中被證明是非常有效的。(鏈接:https://blog.csdn.net/csdn_misli/article/details/82259420

訓練集:使用IMAGENET驗證集中50k大小的圖像,裁剪爲256*256像素大小的塊。

圖像處理:對每個訓練樣本分別隨機化噪聲標準差\sigma \in [0,50],即網絡在去除噪聲時必須估計噪聲的大小(“盲”去噪)。

測試集:BSD300,SET14,KODAK

結果:Gaussian列,clean是RED30用乾淨目標圖像訓練的效果,noisy是使用RED30噪聲目標圖像訓練的效果。BM3D:廣泛使用的基準去噪方法

使用noisy目標的訓練收斂速度也一樣很快。

論文也提到將RED30變爲U-Net方法也能取得相似的結果,並且收斂速度快10倍。

對於收斂速度,隨着像素相關性的增加,加權梯度的有效平均值減小,權值更新變得比較嘈雜,這使得收斂速度變慢,但即使在極度模糊的情況下,最終的質量也是相似的(在0.1db以內)。

對於數據預算,令一個具有加性高斯白噪聲的圖片爲一個捕獲單元(capture unit,CU),假設19個CUs足夠對應一個乾淨的圖片(目標),則1個CU加上1個目標(19個CUs)一共需要20個CUs,對於有限的數據,在2000個CUs預算下,可以分爲潛在的乾淨圖片N和需要得到一個乾淨圖片所需要的噪聲圖片M,則M*N = 2000,傳統方法中,M=20,N= 100,只有100個訓練數據對,即最終產生100個乾淨圖片(case1)。但是論文提到使用同樣的數據,可以有100*20*19=38000個訓練數據對,即對每個潛在的乾淨圖片,形成19*20個可能的訓練數據對,雖然最後還是隻有100個乾淨圖片,但是這樣的訓練數據擴大了,同時效果也很理想(case2)。並且論文也提出,即使N=1000,M=2,即增加乾淨潛在的圖片數量,只用2個CUs進行一個乾淨圖片的復原訓練(case3)會產生更好的結果。

3.2 其他的合成噪聲

泊松噪聲

泊松噪聲也是圖片中主要的噪聲來源,雖然添加噪聲零均值時,也很難去除,因爲它是信號依賴的。設置噪聲等級\lambda \in [0,50],使用L2損失函數進行訓練。得到的結果可以查看前面的一張表格,可以看到結果相似,並且兩者收斂速度差不多。

乘性伯努利噪聲

構造一個隨機掩碼m,對於有效像素爲1,對於零/缺失像素爲0。爲了避免確實像素(0)的後向傳播梯度問題,loss函數修改爲:

p表示像素損壞的概率,在訓練上,p\in [0.0,0.95];測試上,p=0.5.。同樣也可以在前面表格看到結果,可以發現,用噪聲圖片作爲目標效果更好一點。

文本去除

在圖像上隨機分佈大量隨機字符串,並且字體大小和顏色也是隨機的,但是字體和字符串的方向是不變的。

p表示像素損壞的概率,訓練上p\in [0,0.5],測試上p\approx 0.25.

在這裏,使用平均數(L2損失)得到的結果並不好,因爲覆蓋文本的顏色與實際圖像無關。最後得到的圖像將不正確地趨向於正確圖像和平均文本顏色(中等灰色)的線性組合,所以採用中數作爲正確結果,即採用L1損失函數,L_{1}=|f_{\Theta }(\widehat{x})-\widehat{y}|

隨機值脈衝噪聲

將圖像的一些像素用噪聲替換掉,其他的像素保持不變,與標準的椒鹽噪聲不一樣,論文研究了一個更復雜的分佈,其中每個像素有p的概率被均勻分佈[0,1]^{3}的隨機顏色替換,1-p的概率保留原來的顏色。像素的顏色分佈是在原始顏色加上均勻分佈的Dirac分佈,相對權重由替換概率p給出,在這種情況下,均值和中值都不能得到正確的結果,理想的結果是衆數,使用L0損失函數,L_{0}=(|f_{\Theta }(\widehat{x})-\widehat{y}|+\epsilon )^{\gamma }\epsilon =10^{-8},在訓練中\gamma從2到0線性降低。在訓練網絡時,對噪聲輸入和噪聲目標分別使用[0,0.95]的概率對像素進行噪聲污染。

論文提出只要小於50%的像素是隨機化污染的的,L1損失就會產生很好的效果,但是超過這個閾值之後,它很快就開始將黑暗和明亮的區域偏向於灰色。

3.3 Monte Carlo Rendering

Monte Carlo 積分器將隨機採樣過程的期望值等於每個像素的強度,即採用噪聲爲零均值。Mente Carlo噪聲比高斯噪聲難去除,但是可以藉助可能生成的輔助信息在一定程度上緩解了這一問題,在數據生成過程中,這些信息乾淨的圖像相關。在實驗中,去噪器的輸入不僅包括每個像素的亮度值,還包括每個像素可見表面的平均反照率(即紋理顏色)和法向量。

高動態範圍(High dynamic range,HDR)。即使有足夠的採樣,浮點像素亮度也可能相差幾個數量級。爲了構造適合一般8位顯示設備的圖像,需要使用色調映射算子將這一高動態範圍壓縮爲固定範圍。使用Reinhard全局算子的一個變體:

T(v)=(v/(1+v))^{1/2.2}  ,v是一個標量亮度值,該式能將任何v>=0的值映射到0<= T(v) < 1。

如果直接使用MSE L2loss會導致最後的結果被outliers影響,因爲對損失函數做了改變:

L_{HDR}=(f_{\theta }(\widehat{x})-\widehat{y})^{2}/(f_{\theta }(\widehat{x})+0.01)^{2}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章