基於深度學習的圖像去噪暨SRMD論文閱讀筆記

最近一直在做基於卷積神經網絡的圖像去噪~感覺資料比較凌亂,本博文就是整理好經典的論文材料~

同時本博文也結合了閱讀論文《Learning a Single Convolutional Super-Resolution Network for Multiple Degradations》時的心得體會

 

目錄

Background 

DnCNN

FFDNet

CBDNet

SRMD

Theory

圖片的噪聲模型

退化參數模型

Dimensionality Stretching(維度拉伸)

維度拉伸的實現細節

SRMD網絡結構

Reference


 

Background 

DnCNN

使用了Batch Normalization和Residual Learning加速訓練過程和提升去噪性能。網絡的結構圖如下:

FFDNet

側重與去除更加複雜的高斯噪聲。主要是不同的噪聲水平。之前的基於卷積神經網絡的去噪算法,大多數都是針對於某一種特定噪聲的,爲了解決不同噪聲水平的問題,FFDNet的作者利用noise level map作爲輸入,使得網絡可以適用於不同噪聲水平的圖片

 

CBDNet

網絡由噪聲估計子網絡和去噪子網絡兩部分組成。同時進行end to end的訓練。並採用基於信號獨立的噪聲以及相機內部處理的噪聲合成的圖片和真是的噪聲圖片(所謂“真實”的噪聲圖片是來自於別人的數據集RENOIR、DND、NC12等,)聯合訓練。提高去噪網絡的泛化能力,也增強去噪的效果

SRMD

近年來,深度卷積神經網絡(CNN)方法在單幅圖像超分辨率(SISR)領域取得了非常大的進展。然而現有基於CNN的SISR方法主要假設低分辨率(LR)圖像由高分辨率(HR)圖像經過雙三次(bicubic)降採樣得到,因此當真實圖像的退化過程不遵循該假設時,其超分辨結果會非常差。此外,現有的方法不能擴展到用單一模型解決多種不同的圖像退化類型。

SISR方法主要分爲三類:基於插值的方法、基於模型的方法以及基於判別學習的方法。

基於插值的方法(例如:最近鄰插值、雙三次插值)雖然速度快,但是其效果比較差。

基於模型的方法通過引入圖像先驗,例如:非局部相似性先驗、去噪先驗等,然後求解目標函數得到視覺質量較好的HR圖像,然而速度較慢。雖然結合基於CNN的去噪先驗可以在某種程度上提升速度,但仍然受限於一些弊端,例如:無法進行端對端的訓練,包含一些比較難調的參數等。

基於判別學習的方法尤其是基於CNN的方法因其速度快、可以端對端的學習因而效果好等在近幾年受到了廣泛關注,並且逐漸成爲解決SISR的主流方法(如之前博文《 學習筆記之——基於深度學習的圖像超分辨率重構》介紹的系列方法)。

 

然而這些方法都存在一個共同缺點,也就是它們只考慮雙三次(bicubic)降採樣退化模型並且不能靈活地將其模型擴展到同時(非盲)處理其它退化類型。由於真實圖像的退化過程多種多樣,因而此類方法的有效實際應用場景非常有限。

 

一些SISR工作已經指出圖像退化過程中的模糊核的準確性對SISR起着至關重要的作用,然而並沒有基於CNN的相關工作將模糊核等因素考慮在內。爲此引出本文主要解決的問題:是否可以設計一個非盲超分辨率(non-blind SISR)模型用以解決不同的圖像退化類型?

因此,SRMD的作者通過提出類似於FFDNet的思想,將degradation model中的兩個關鍵因素(模糊核和噪聲水平)跟LR一起作爲網絡的輸入。以此提高網絡的泛化能力。注意這裏所說的泛化能力,是指網絡用於真實的圖片上,這真實的圖片上具有不同的且不均與的退化類型。而由於模糊核和噪聲水平需要跟LR匹配纔可以作爲網絡的輸入,爲此作者提出了一種維度拉伸的策略,使得其拉伸到跟LR大小一致

LR圖像y對應的HR圖像x可以通過求解下述問題近似:

簡單來說,上述公式包含兩點:

  • 估計得到的HR圖像不僅要符合SISR的退化過程,並且還要滿足清晰圖像所具有的先驗特徵;

  • 對於非盲超分辨率問題,x的求解與LR圖像y、模糊核k、噪聲水平以及權衡參數有關。

爲此,作者得到以下結論:

  • 由於數據保真項(似然項)對應着SISR的退化過程,因此退化過程的準確建模對SISR的結果起着至關重要的作用。然而現有的基於CNN的方法其目標是求解下面的問題:。由於沒有將模糊核和噪聲等因素考慮在內,因此其實用性非常有限。

  • 爲了設計更加有效的基於CNN的SISR模型,應該將更多的圖像退化類型考慮在內,一個簡單的思路就是將模糊核k和噪聲水平也作爲網絡的輸入。由於權衡參數(trade off)可以融入噪聲水平之中,因此CNN映射函數可以簡化成如下形式:

  • 由於MAP估計中大部分的參數都對應着圖像先驗部分,而圖像先驗是與圖像退化過程不相關的,因此單一的CNN模型具有處理不同退化類型的建模能力,需要把退化過程也輸入到網絡中,讓網絡學習。

通過上述分析可以得出非盲SISR應該將退化模型中的模糊核和噪聲水平也作爲網絡的輸入。然而LR圖像、模糊核和噪聲水平三者的維度是不同的,因此不能直接作爲CNN的輸入。

 

 

Theory

圖片的噪聲模型

爲了讓模型能應用於現實的噪聲圖像的去噪。Realistic LR Degradation模型的設置非常重要。將信號獨立噪聲以及相機內部處理噪聲都考慮在內,提出了一個更加真實的噪聲模型,並讓去噪表現有了大幅提高。實際上,就是通過一個更加接近真實的退化參數模型來成pair的去訓練一個非盲的網絡,使得這個非盲的網絡可以適用於blind denoise。

而不僅僅是通過更加接近真實的degradation model,還需要把degradation parameter也一併輸入網絡裏面,提高網絡的Generalization ability

真實圖像的噪聲分佈遠遠不同於高斯噪聲,它們更加複雜,並且信號是獨立的。因此,可以給定模型如下:

這裏,由信號獨立的噪聲部分(signal-dependent noise)和靜態噪聲部分(stationary noise)組成.的方差爲的高斯白噪聲,針對每個像素。而的噪聲方差和圖像強度相關,也就是注意,此處的x不是clean image應該是L,即clean image的irradiance。

至於相機內部的處理過程,CBDNet的作者提出了下面這個信號獨立和通道獨立的噪聲模型:

退化參數模型

degradation moel可以表述如下

當然,也可以換種形式,表述如下

如果加上JPEG,那麼將是

 

Dimensionality Stretching(維度拉伸)

假設LR圖像大小爲,首先將向量化的模糊核PCA降維,然後和噪聲水平並在一起得到一個t+1維的向量v,接着將v拉伸爲維的張量,我們將此張量稱之爲退化圖(Degradation Maps),其中第i個圖的所有元素均爲

至此。其實概念是十分清晰的。但是唯一不懂的是如何實現拉伸的過程。。。。幸虧作者有給出代碼,接下來找一下代碼裏面有沒有對這個過程的描述

維度拉伸的實現細節

如果是spatially uniform的blur和noise,那這個stretch就是一個repeat的操作,即每一個空間位置的t+1個元素都是相同的。

如果是spatially variant,則需要一個函數,表示每個pixel的噪聲~

補充關於FFDNet中的noise level map,將源代碼改寫如下:

    % noise level map
    [~,~,noiseSigma] = peaks(size(label,1));%peaks,其實就是一個spatially variant的函數
    noiseSigma = 0  + (50 - 0).*(noiseSigma - min(noiseSigma(:)))./(max(noiseSigma(:)) - min(noiseSigma(:)));%把noiseSigma限制在[0, 50]之間,是一個線性的歸一化操作
    noiseSigma = flipud(noiseSigma);%做翻轉的操作
    sigmas = imresize(noiseSigma,1/2,'bicubic')/255;

原代碼鏈接(論文閱讀筆記——《FFDNet Toward a Fast and Flexible Solution for CNN based Image Denoising》

noise level map的結果

 

SRMD網絡結構

可以將退化圖和LR圖像合併在一起作爲CNN的輸入。爲了證明此策略的有效性,選取了快速有效的ESPCN超分辨網絡結構框架。值得注意的是爲了加速訓練過程的收斂速度,同時考慮到LR圖像中包含高斯噪聲,因此網絡中加入了Batch Normalization層。網絡結構如下圖所示。

在訓練階段,SRMD採用了各向同性和各向異性的高斯模糊核、噪聲水平在[0, 75]之間的高斯白噪聲以及 bicubic降採樣算子。需要指出的是SRMD可以擴展到其它降採樣算子,甚至其它退化模型。

 

 

 

Reference

https://github.com/cszn/SRMD(SRMD論文的代碼)

http://www4.comp.polyu.edu.hk/~cslzhang/paper/CVPR18_SRMD.pdf(SRMD論文)

https://mp.weixin.qq.com/s?__biz=MzUzOTgzMjI5Ng==&mid=2247483795&idx=1&sn=8c485783243920c69054558d56284d5a&chksm=fac33b14cdb4b2025b8c90134700c0539c9740e8904e82c4edca58e64308f027b0203cc77854&mpshare=1&scene=1&srcid=1216c28FC2L59YiiVOczuvDl#rd(關於CBDNet的微信推文)

https://mp.weixin.qq.com/s?__biz=MzIwNjY3NTM3NA==&mid=2247484584&idx=1&sn=e66768cb45586b25e591be7d07eb84cc&chksm=971f4869a068c17f761146034e41ffb67c8f550ce5faef5b8ac13f3b6b3e14e31440b364f5ec&mpshare=1&scene=1&srcid=1216SmMKqqfoM6pXwXGeWMqv#rd

https://mp.weixin.qq.com/s?__biz=MzU5ODUxNzEyNA==&mid=2247483838&idx=1&sn=9b87cc432e0c5ce427b24e8e8feb1428&chksm=fe43b555c9343c43b3bf05d92afc7b1eef617bedd3c949f9a24162ec84577d3b7ac3c5d60a47&mpshare=1&scene=1&srcid=1216nzIiZBJNmlLiqhI21I1P#rd(關於SRMD的微信推文)

https://github.com/2wins/SRMD-pytorch(SRMD的pytorch實現版本)

 

 

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