Noise2Void - Learning Denoising from Single Noisy Images

1. 摘要

Noise2Noise (N2N) 可以利用一對獨立的噪聲圖片來訓練去噪模型,在這裏,作者更進一步提出了一個策略 Noise2Void (N2V) ,只利用噪聲圖像即可。

因此 N2V 可以被應用在一些其它方法不能應用的領域,特別是生物醫學圖像,在這裏乾淨或者噪聲目標圖像經常是不可能獲取到的。

2. 方法介紹

噪聲圖像的產生 x = s + n x=s+n ,可以看作是從下面的聯合分佈產生的,

假設 p ( s ) p(s) 是滿足下式的任意分佈,

s i , s j s_i,s_j 是在一定半徑距離內的兩個像素,也就是說像素 s i s_i 在統計上不是獨立的。

而針對噪聲,則假設其是條件獨立的形式,

也就是,在給定信號的情況下, n i n_i 是條件獨立的。而且,進一步假設噪聲是零均值的,那麼有,

換句話說,如果我們獲取到了同一個信號的不同噪聲圖片,然後對它們取平均,結果將會接近真正的信號。

2.1. 傳統的有監督訓練

現在,我們考慮訓練一個 CNN 來實現 x x s s 的映射,也就是一個圖片作爲輸入,預測出另一個圖片作爲輸出。

每個輸出的預測像素值 s i ^ \hat{s_i} 都對輸入像素有一定大小的感受野 x R F ( i ) x_{RF(i)} ,也就是影響像素預測的一組輸入像素。然後,我們可以把 CNN 看作是一個函數,其輸入是 x R F ( i ) x_{RF(i)} ,輸出則是位置 i i 處的像素值 s i ^ \hat{s_i}

一對訓練數據 ( x j , s j ) (x^j, s^j) 可以看作是數據對 ( x R F ( i ) j , s i j ) (x_{RF(i)}^j, s_i^j) ,我們現在利用這些數據對來更新網絡參數,

2.2. Noise2Noise 訓練

N2N 可以讓我們應對沒有真實標籤的訓練數據,我們一開始的訓練數據爲 ( x j , x j ) (x^j, x^{'j}) ,其中,

然後我們可以將我們的訓練數據看作是數據對 ( x R F ( i ) j , x i j ) (x_{RF(i)}^j, x_i^{'j}) 。儘管我們嘗試去學習從一個噪聲圖片到另一個噪聲圖片的映射,訓練依舊可以收斂到正確的解,因爲噪聲輸入的期望值等於乾淨信號。

2.3. Noise2Void 訓練

這裏,我們更進一步,嘗試從單一的噪聲圖片構建出訓練數據對,即輸入和目標。如果我們像之前一樣簡單地提取出一個小塊並用它的中間像素值作爲目標,網絡會僅僅學到一個恆等映射,也就是將輸入的中間像素值直接映射到輸出。

因此,我們的網絡需要一個特殊的感受野,也就是在中間位置有一個盲點。預測像素值 s i ^ \hat{s_i} 受到所有矩形鄰域輸入的影響除了在位置 i i 處的輸入像素 x i x_i


盲點網絡可以使用傳統的有監督訓練或者 N2N 訓練方式,此時目標分別是乾淨圖像和噪聲圖像。由於可利用的輸入信息少了一點,我們期望它的準確率會略有下降。

盲點網絡的優點是它不能學習一個恆等映射。因爲我們假設噪聲像素是相互獨立的,周圍的像素沒有和 n i n_i 相關的信息。而信號不是相互獨立的,我們仍然可以通過其周圍的像素來估計出 s i s_i

2.4. 實現細節

儘管盲點網絡可以僅僅利用單獨的噪聲圖片來進行訓練,但要想高效地設計出這樣一個網絡並不容易。作者提出了一個 mask 策略:隨機選擇周圍的一個像素值來替換輸入塊的中間像素值,這可以有效地清除中間像素的信息避免網絡學習到恆等映射。

但是,這樣依然不是非常高效,我們必須處理整個塊來計算單個像素值對應的梯度。因此,作者使用下面的近似技術:給定一個噪聲圖像 x i x_i ,隨機裁剪出 64 64 64*64 大小的小塊(這大於整個網絡的感受野)。然後在每個小塊內,分層採樣來隨機選取 N N 個像素,對它們進行掩蓋並用原始的噪聲像素來作爲目標。這樣,就可以一次性計算這 N N 個點對應的梯度,而忽略其它的預測值。

3. 實驗結果

N2V 可以應用在一些沒有乾淨圖像或者噪聲圖像的場景,但它也有一些侷限性。比如下圖所示,紅色箭頭所指的位置是一個孤立的亮點,而其周圍比較暗,這樣 N2V 就不能從周圍像素中正確地預測出中間像素。

另外,如果噪聲不滿足相互獨立的假設,N2V 也就無法很好地去除這些噪聲。

獲取更多精彩,請關注「seniusen」!