1. 程式人生 > >閱讀筆記之——《Toward Convolutional Blind Denoising of Real Photographs》及基於pytorch的CBDNet的復現

閱讀筆記之——《Toward Convolutional Blind Denoising of Real Photographs》及基於pytorch的CBDNet的復現

本文是CBDNet(convolutional blind denoising network)的閱讀筆記。本博文分為兩塊,一塊是閱讀筆記,一塊是本人對CBDNet的實驗記錄

論文連結:https://arxiv.org/pdf/1807.04686.pdf

論文的程式碼:https://github.com/GuoShi28/CBDNet

一些去噪用的資料集https://blog.csdn.net/zbwgycm/article/details/82144242

 

理論部分

Background

作者開篇寫道“Despite their success in Gaussian denoising, deep convolutional neural networks (CNNs) are still very limited on real noisy photographs, and may even perform worse than the representative traditional methods such as BM3D and K-SVD.”儘管深度卷積網路在高斯去噪取得了重大的成就,但是對於真實的噪聲,它的Generalization ability卻是非常的差,甚至不如一些傳統的方法。大多數基於卷積網路的去噪演算法都是基於additive white Gaussian noise (AWGN),僅僅是去除高斯噪聲.但是現實中,camera的噪聲會來自於暗電流噪聲、熱噪聲、粒散噪聲等等(可以看博文《

IPS流程(camera成像原理的介紹)》)因此真實噪聲跟人為建模的高斯噪聲是差很遠的,而如果僅僅讓網路去學習這個高斯加噪的圖片,網路的泛化能力就會比較差。

在盲去噪中都存在著noise estimation and non-blind denoising.To the best of our knowledge, little work has been given to develop CNN-based model for the blind denoising of real photographs.

Due to that the real noise distribution is much different from Gaussian, DnCNN trained based on AWGN generally does not work well on noise removal for most real images.

 

通過incorporating network architecture, noise modeling, and asymmetric learning(非對稱學習)提出CBDNet網路.CBDNet
is comprised of a noise estimation subnetwork and a denoising subnetwork, and is trained using a more realistic noise model by considering both signal-dependent noise and in-camera processing pipeline(訊號相關噪聲與ISP流程的噪聲).

CBDNet包含了兩個子網路:噪聲估計子網路和非盲去噪子網路

the asymmetric learning is presented on the noise estimation subnetwork to suppress more on under-estimation of noise level.(這是受啟發於BM3D)

To make the learned model applicable to real photographs, both synthetic images (合成的影象)based on realistic noise model and real noisy photographs with nearly noise-free images are incorporated to train our CBDNet.

incorporate both synthetic images based on signal dependent noise model and real noisy photographs with nearly noise-free images during the training of our CBDNet, which can improve the denoising performance and generalization ability of the learned model.

 

本文的亮點:

  • 提出了一個更加真實的噪聲模型,其考慮了訊號依賴噪聲和ISP流程(可參考博文《IPS流程(camera成像原理的介紹)》)對噪聲的影響,展示了影象噪聲模型在真實噪聲影象中起著關鍵作用。從某種程度上而言,本人覺得,這可以理解為作者用了一個更加接近真實場景的退化模型
  • 提出了CBDNet模型,其包括了一個噪聲估計子網路(noise level map)和一個非盲去噪子網路,可以實現影象的盲去噪(即未知噪聲水平)——通過噪聲估計網路和非盲去噪網路實現影象的盲去噪的過程
  • 提出了非對稱學習(asymmetric learning)的損失函式,並允許使用者互動式調整去噪結果(interactively rectify the denoising result by tuning the estimated noise level map.通過調整估計的噪聲水平圖來互動地糾正去噪結果。),增強了去噪結果的魯棒性。
  • 將合成噪聲影象與真實噪聲影象一起用於網路的訓練,提升網路的去噪效果和泛化能力。
     

the introduction of noise estimation subnetwork can bring more benets to the denoising of real photographs. We note that non-blind denoisers (e.g., BM3D and FFDNet) are sensitive to under-estimation error of noise level but performs robust to over-estimation error.作者在這裡的一個重要的發現是,對於噪聲過估計,會有利於網路去噪。就是說你估計的noise level map太小,那可能會導致效果比較差,但是你估計的noise level map估計大了,卻會使得performance更好,這就是一個asymmetric sensitivity(非對稱性的靈敏度)even the real noise is much dierent from AWGN, non-blind denoisers can still achieve satisfying non-blind denoising result by simply increasing the noise level adopted in the algorithm.(就說每次都過高的去估計noise level map可以使得結果更加好???)

如下圖所示。both non-blind BM3D and blind DnCNN fail to denoise the two real noisy photographs from DND. In contrast, our CBDNet achieves very pleasing denoising results and can retain most structure and details while well suppressing the sophisticated noise in images.

 

Real Image Noise Modeling(真實的噪聲圖片模型synthetic noisy images或稱為Realistic Noise Model)

真實圖片的噪聲is much more sophisticated than AWGN

作者在論文裡面提到“signi cantly depends on noise model, while more realistic noise model generally bene ts denoising performance.”

The noise model plays a critical role in guaranteeing the denoising performance of CNN-based denoiser on real photographs.

更真實的加噪

把camera的ISP考慮在內:

對於噪聲RAW影象,採用公式1來訓練CBDNet/模型。

對於噪聲未壓縮影象,採用公式2來訓練CBDNet模型。

對於噪聲壓縮影象,採用公式3來訓練CBDNet模型

 

Network  Architecture

 

 

Noise Estimation Network

adopts a plain five-layer fully convolutional network without pooling and batch normalization operations. In each convolution layer, the number of feature channels is set as 32, and the filter size is 3x3. The ReLU nonlinearity is deployed after each convolution (Conv) layer.

an asymmetric loss——imposing more penalty on under-estimation error of noise level(對噪聲水平的低估誤差施加更多的懲罰。)

With the asymmetric learning, our CBDNet can produce better results on real photographs in the blind denoising setting.

非對稱學習(Asymmetric Learning)

作者觀察到非盲去噪方法(如BM3D、FFDNet等)對噪聲估計的誤差具有非對稱敏感性(the asymmetric sensitivity of non-blind denoisers)。如下圖所示,分別用BM3D和FFDNet使用不同的輸入噪聲標準差去噪(標準差依次設為5、10、15、25、35、50),其中綠色框代表輸入噪聲的標準差與真實噪聲標準差一致。可以觀察到,當輸入噪聲的標準差與真實噪聲的標準差一致時,去噪效果最好。當輸入噪聲標準差低於真實值時,去噪結果包含可察覺的噪聲;而當輸入噪聲標準差高於真實值時,去噪結果仍能保持較好的結果,雖然也平滑了部分低對比度的紋理。因此,非盲去噪方法對低估誤差比較敏感,而對高估的誤差比較魯棒。正是因為這個特性,BM3D可以通過設定相對較高的輸入噪聲標準差得到滿意的真實影象去噪效果。

the asymmetric sensitivity of non-blind denoisers。為了將這種 asymmetric sensitivity 應用於盲超分。(下圖中,第一個loss對應噪聲估計網路,第二個loss是為了約束平滑性,第三個loss是去噪的loss)

 

The non-blind denosing subnetwork

關於網路的總結見下圖

 

關於論文資料(Incorporating Synthetic and Real Noisy Images in Training)

Despite the progress in noise modeling, there remains a gap between the real noise and synthetic noise. It is noted that deep models tend to over-fit the training data, which may make the CBDNet learned on solely synthetic images have limited generalization ability to real photographs. Fortunately,approaches have been developed to obtain nearly noise-free image of the real noisy photographs, and several small scale datasets RENOIR(RENOIR也是人工合成的把?所以這也看來,應該是沒有作者自己做的真實的資料集,或者說,所謂的作者做的資料是synthetic images)

For the synthetic images, the ground-truth clean image and noise level map are available。

For the real noisy images, the noise is real, but only the nearly noise-free image is available and the noise level map is unavailable.

對於合成噪聲影象,作為ground-truth的乾淨影象和噪聲水平圖是可用的,但噪聲模型可能與真實噪聲不太相符;而對於真實噪聲影象,噪聲是真實的,但僅僅可以獲得接近無噪聲的影象作為ground truth,而噪聲水平圖是未知的。另外,一般真實噪聲影象的ground truth比較難以獲取,而合成噪聲影象可以比較方便的大規模合成。因此,在訓練CBDNet的過程中,結合這兩種型別的影象,提高網路的泛化能力。 

  • 對於合成噪聲影象。文章使用上述的噪聲模型合成噪聲影象。其使用了BSD500的400張影象,Waterloo的1600張影象,MIT-Adobe FiveK資料庫的1600張影象作為訓練資料。
  • 對於真實影象。使用RENOIR資料庫的120張影象(http://ani.stat.fsu.edu/~abarbu/Renoir.html)。 

為了提高網路的泛化能力,本文交替使用一批合成影象和一批真實影象進行訓練。

 

目前去噪資料集的建立主要分為以下三種方式: 
1. 從現有影象資料庫獲取高質量影象,然後做影象處理(如線性變化、亮度調整)並根據噪聲模型新增人工合成噪聲,生成噪聲影象; 

這種方法比較簡單省時,高質量影象可以直接從網上獲取,但由於噪聲是人工合成的,其與真實噪聲影象有一定差異,使得在該資料集上訓練的網路在真實噪聲影象上的去噪效果受限; 
2. 針對同一場景,拍攝低ISO影象作為ground truth,高ISO影象作為噪聲影象,並調整曝光時間等相機引數使得兩張影象亮度一致; 

這種方法只使用單張低ISO影象作為ground truth,難免會殘留噪聲,且與噪聲影象可能存在亮度差異和不對齊的問題; 
3. 對同一場景連續拍攝多張影象,然後做影象處理(如影象配準、異常影象剔除等),然後加權平均合成ground truth; 

這種方法需要拍攝大量影象,工作量比較大,且需要對影象進行嚴格對準,但一般得到的ground truth質量比較高; 

為了提高去噪網路的魯棒性和泛化能力,常常需要將輸入噪聲影象的噪聲水平估計也作為網路輸入。而真實噪聲影象的噪聲水平估計往往存在一定誤差,從這一方面考慮,合成噪聲影象由於噪聲模型已知,所以其噪聲水平估計是準確的,有利於網路的在不同噪聲水平上的泛化。CBDNet就考慮將真實噪聲影象和合成噪聲影象一起作為訓練集,交替對網路進行訓練以提升網路的效能。


論文的實驗的測試集基於three real noisy image datasets來實現的DND、NC12、Nam(可是這三個資料集不是人工生成的資料麼。。。算真實的資料?所以個人感覺,這裡所說的真實圖片,其實也就是更加接近真實情景的圖片)所謂的“adopt a signal-dependent image noise, and also take in-camera image processing pipeline into account to generate synthetic training images.”是不是就是用了這裡的資料集呢?還是說作者自己處理的,並沒有公佈出來呢?但作者又說our CBDNet is trained by synthetic and real noisy images,所以這至此還是一個疑問。。。。。。。

在評價指標(quantitative metrics)上採用了PSNR和SSIM

 

#############################################################################################################

程式碼實操部分

開啟才發現程式碼是matlab版本的,接下來把它重塑為pytorch版本。。。。。。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

參考

https://blog.csdn.net/zbwgycm/article/details/82052003