日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

图像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID

發布時間:2025/3/20 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID

  • 圖像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID
    • 1. 基本原理
      • 1.1 DnCNN
      • 1.2 FFDNet
      • 1.3 CBDNet
      • 1.4 RIDNet
      • 1.5 PMRID
      • 1.6 SID
    • 2. pytorch代碼
    • 3. 結論

圖像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID

1. 基本原理

這篇博客主要介紹幾篇經典的CNN相關的圖像降噪算法,其中DnCNN -> FFDNet -> CBDNet -> RIDNet -> PMRID我覺得這是一條越來越優的降噪網絡主線,而SID是一個端到端的ISP網絡,除了降噪還包含了demosaic等功能,因此單獨列到最后。

1.1 DnCNN

Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising
這篇論文算是使用CNN進行圖像降噪最為經典的算法之一,算法并不復雜,但是在PSNR的指標上超過了BM3D,該算法框架如下圖所示:

該網絡的特點主要有:

  • 網絡分為三部分,第一部分為Conv+Relu(一層),第二部分為Conv+BN+Relu(若干層),第三部分為Conv(一層),網絡層數為17或者20層。
  • 網絡學習的是圖像殘差,也就是帶噪圖像和無噪圖像差值,損失函數采用的MSE。
  • 論文中強調了batch normalization的作用
  • 1.2 FFDNet

    FFDNet: Toward a Fast and Flexible Solution for CNN based Image Denoising
    這篇論文是DnCNN的升級版,網絡在對噪聲的適應能力和計算量均要由于DnCNN,該算法網絡結構如下:

    該網絡的特點主要有:

  • 該網絡的結構和DnCNN一致,但是輸入輸出不同,網絡輸入為原始帶噪圖像降采樣獲得的四張子圖以及一張由用戶輸入的參數σ\sigmaσ生成的噪聲水平圖像,輸出為四張降噪后的子圖,通過上采樣獲得最終的降噪圖像。使用的損失函數仍然是MSE。
  • 由于該網絡的輸入中包含一個有用戶控制的參數,該算法對于不同噪聲的適應程度要優于DnCNN
  • 1.3 CBDNet

    Toward Convolutional Blind Denoising of Real Photographs
    這篇論文算是FFDNet的再一次升級,在FFDNet中通過添加一個用戶輸入的噪聲強度參數σ\sigmaσ,在CBDNet中通過添加一個全卷積網絡來學習該參數,從而達到自適應噪聲的目的,該算法的網絡結構如下:

    該網絡的特點主要有:

  • 該網絡的結構分為兩部分:第一部分為五層全卷積網絡用于噪聲估計噪聲水平圖,第二部分與FFDNet不同,為帶殘差的UnNet,用于降噪。

  • 設計了非對稱損失函數,目的主要是為了消除非對稱敏感性,所謂非對稱敏感性指的像BM3D和FFDNet這樣的降噪算法,輸入降噪參數σ\sigmaσ較小時,降噪效果較差,輸入降噪參數σ\sigmaσ較大時,雖然紋理有損失,但是降噪效果仍然比較好。給定像素iii的估計水平σ^(yi)\hat{\sigma}(y_i)σ^(yi?)和真實值σ(yi)\sigma(y_i)σ(yi?),當σ^(yi)<σ(yi)\hat{\sigma}(y_i)<\sigma(y_i)σ^(yi?)<σ(yi?)時,應該對MSE引入更多的懲罰,因此:Lasymm?=∑i∣α?I(σ^(yi)?σ(yi))<0∣?(σ^(yi)?σ(yi))2\mathcal{L}_{\text {asymm }}=\sum_{i}\left|\alpha-\mathbb{I}_{\left(\hat{\sigma}\left(y_{i}\right)-\sigma\left(y_{i}\right)\right)<0}\right| \cdot\left(\hat{\sigma}\left(y_{i}\right)-\sigma\left(y_{i}\right)\right)^{2} Lasymm??=i??α?I(σ^(yi?)?σ(yi?))<0???(σ^(yi?)?σ(yi?))2e<0e<0e<0時,Ie=1\mathbb{I}_{e}=1Ie?=1,否則為0。如果設定0<α<0.50<\alpha<0.50<α<0.5,則可以對低估誤差引入更多的懲罰。同時引入全變分正則項約束σ^(y)\hat{\sigma}(y)σ^(y)的平滑性:LTV=∥?hσ^(y)∥22+∥?vσ^(y)∥22\mathcal{L}_{T V}=\left\|\nabla_{h} \hat{\sigma}(y)\right\|_{2}^{2}+\left\|\nabla_{v} \hat{\sigma}(y)\right\|_{2}^{2} LTV?=?h?σ^(y)22?+?v?σ^(y)22?最后一部分就是MSE:Lrec=∥x^?x∥22\mathcal{L}_{r e c}=\|\hat{x}-x\|_{2}^{2} Lrec?=x^?x22?綜上所述,整個CBDNet的目標損失函數為:L=Lrec+λasymmLasymm+λTVLTV\mathcal{L}=\mathcal{L}_{r e c}+\lambda_{a s y m m} \mathcal{L}_{a s y m m}+\lambda_{T V} \mathcal{L}_{T V} L=Lrec?+λasymm?Lasymm?+λTV?LTV?

  • 該算法學習的是更接近于真實噪聲的高斯泊松噪聲,而前面兩篇論文都是學習高斯噪聲;并且結合使用合成和真實噪聲數據來訓練模型,提高模型泛化能力,可以更好地對真實場景進行降噪;

  • 1.4 RIDNet

    Real Image Denoising with Feature Attention
    這篇論文效果比CBDNet要更好,應該算目前降噪效果最好的算法了,論文中指出CBDNet是一個二階段去噪網絡,不夠高效靈活,而本文的一階段算法更加實用,可以在標準差已知或者未知的情況下同時處理高斯泊松噪聲,網絡結構如下:

    該網絡的特點主要有:

  • 這個網路的結構設計得相對復雜,主要包括三部分:特征提取、4個EMA組成的殘差模型、重建。其中特征提取和重建模塊都是卷積層+ReLU層。EMA的結構如上圖中下半部分框圖所示:
    (1)首先是兩個空洞卷積分支,用來增加感受野,然后進行拼接并進行卷積融合
    (2)然后是兩個類似殘差學習的結構,用于進行特征的提取
    (3)最后是注意力機制,主要由一系列1x1的卷積核構成(這個注意力機制我還不太理解是怎么回事,后面再花時間研究下),結構如下圖所示:
  • 該網絡的損失函數為L1損失函數: L(W)=1N∑i=1N∥RIDNet?(xi)?yi∥1L(\mathcal{W})=\frac{1}{N} \sum_{i=1}^{N}\left\|\operatorname{RIDNet}\left(x_{i}\right)-y_{i}\right\|_{1} L(W)=N1?i=1N?RIDNet(xi?)?yi?1?
  • 1.5 PMRID

    Practical Deep Raw Image Denoising on Mobile Devices
    這篇論文是2020 CVPR上曠視提出來的一篇非常elegant的算法,該算法的特點網絡結構比較小,通過一個k-sigma變換來解決小網絡在不同增益噪聲下的魯棒性問題,網絡結構如下圖所示:
    該網絡的主要特點有:

  • 這個網絡的結構大體上還是一個UNet的結構,為了降低計算量使用了separable conv卷積,然后使用的是5x5的模型來降低模型深度,使用stride為2的卷積進行下采樣,以及2x2的deconv結構進行上采樣,使用3x3的separable conv來進行skip connnection的通道構建。可以說網絡結構是小而精美。
  • 該論文我覺得最有啟示的一點是提出了k-sigma變換,像FFDNet,CBDNet都是通過設置網絡參數來適應不同強度的噪聲,而本文是通過將不同強度的噪聲進行歸一化來簡化網絡結構,這個思路有點類似于generalization anscombe transform,不了解的同學可以了解下,下面我們來簡單進行下k-simga變換的推導,首先是CMOS Sensor的成像模型入下圖所示:
    理想像素值x?x^*x?和實際像素值xxx的計算分別如下所示:
    x?=gαu?x^{*}=g \alpha u^{*} x?=gαu?x=g(αu+nd)+nrx=g\left(\alpha u+n_ozvdkddzhkzd\right)+n_{r} x=g(αu+nd?)+nr?其中,由于光子服從波粒二象性,因此服從如下高斯分布u~P(u?)u \sim P\left(u^{*}\right) uP(u?)暗電流噪聲服從nd~N(0,σd2)n_ozvdkddzhkzd \sim N\left(0, \sigma_ozvdkddzhkzd^{2}\right) nd?N(0,σd2?)讀出噪聲服從nr~N(0,σr2)n_{r} \sim N\left(0, \sigma_{r}^{2}\right) nr?N(0,σr2?)因此整體滿足高斯泊松分布x~(gα)P(x?gα)+N(0,g2σd2+σr2)x \sim(g \alpha) P\left(\frac{x^{*}}{g \alpha}\right)+N\left(0, g^{2} \sigma_ozvdkddzhkzd^{2}+\sigma_{r}^{2}\right) x(gα)P(gαx??)+N(0,g2σd2?+σr2?)我們令k=gαk=g \alphak=gασ2=g2σd2+σr2\sigma^{2}=g^{2} \sigma_ozvdkddzhkzd^{2}+\sigma_{r}^{2}σ2=g2σd2?+σr2?則有x~kP(x?k)+N(0,σ2)x \sim k P\left(\frac{x^{*}}{k}\right)+N\left(0, \sigma^{2}\right) xkP(kx??)+N(0,σ2)這是xxx的均值和方差分別為E(x)=x?E(x)=x^{*} E(x)=x?Var?(x)=kx?+σ2\operatorname{Var}(x)=k x^{*}+\sigma^{2} Var(x)=kx?+σ2接下就是k-sigma變換的公式:f(x)=xk+σ2k2f(x)=\frac{x}{k}+\frac{\sigma^{2}}{k^{2}} f(x)=kx?+k2σ2?經過k-sigma變換后,f(x)f(x)f(x)滿足f(x)~P(x?k)+N(σ2k2,σ2k2).f(x) \sim \mathcal{P}\left(\frac{x^{*}}{k}\right)+\mathcal{N}\left(\frac{\sigma^{2}}{k^{2}}, \frac{\sigma^{2}}{k^{2}}\right) . f(x)P(kx??)+N(k2σ2?,k2σ2?).我們將泊松分布P\mathcal{P}P近似是喲啊那個高斯分布N(λ,λ)\mathcal{N}(\lambda, \lambda)N(λ,λ)代替,則有P(x?k)+N(σ2k2,σ2k2)≈N(x?k,x?k)+N(σ2k2,σ2k2)=N(x?k+σ2k2,x?k+σ2k2)=N[f(x?),f(x?)]\begin{aligned} & P\left(\frac{x^{*}}{k}\right)+\mathcal{N}\left(\frac{\sigma^{2}}{k^{2}}, \frac{\sigma^{2}}{k^{2}}\right) \\ \approx & \mathcal{N}\left(\frac{x^{*}}{k}, \frac{x^{*}}{k}\right)+\mathcal{N}\left(\frac{\sigma^{2}}{k^{2}}, \frac{\sigma^{2}}{k^{2}}\right) \\ =& \mathcal{N}\left(\frac{x^{*}}{k}+\frac{\sigma^{2}}{k^{2}}, \frac{x^{*}}{k}+\frac{\sigma^{2}}{k^{2}}\right) \\ =& \mathcal{N}\left[f\left(x^{*}\right), f\left(x^{*}\right)\right] \end{aligned} ==?P(kx??)+N(k2σ2?,k2σ2?)N(kx??,kx??)+N(k2σ2?,k2σ2?)N(kx??+k2σ2?,kx??+k2σ2?)N[f(x?),f(x?)]?使用標定的k和sigma按照k-sigma公式變換后,原始的噪聲分布就只和沒有噪聲的數據x?x^*x?有關,因此就可以避免不同增益下噪聲不同帶來的負擔。
  • 1.6 SID

    Learning to See in the Dark
    這篇論文除了提供一個非常有用的數據集之外,還提出了一個端到端的網絡結果,直接處理Raw數據得到去馬賽克,去噪和色彩變化后的圖像,網絡結果如下:

    該網絡的特點主要有:

  • 輸入為bayer圖拆分出來的4通道數據,分辨率變為原來的一半,輸出為12通道的數據,分辨率為原圖的一般,然后經過sub-pixel復原全分辨率的RGB三通道數據,其中ConvNet默認是一個UNet的數據結構。
  • 損失函數使用L1的損失函數,因此降噪的結果顯得比較平滑。
  • 該網絡并沒有專門的設計降噪網絡,因此降噪效果并不是特別出色,但是其在顏色復原上會有較為明顯的優勢,并且該網絡泛化能力差,一款相機得單獨訓練一個網絡。
  • 2. pytorch代碼

    以上說的所有的網絡模型都是可以下載到源碼的,其中一部分我在pytorch上進行過訓練和測試,這里我基于pytorch寫了一份用于PMRID訓練和測試的代碼,歡迎參考Jichao-Peng/PMRID-Pytorch

    3. 結論

    最近幾年的頂會CNN的降噪方法已經完全占據了主流,實驗也確實證明了CNN的降噪算法相對傳統算法在一些方面的優勢,我自己也確實被CNN方法給驚艷到了,之后再慢慢深入學習補充

    此外,這里我寫一個各種算法的總結目錄圖像降噪算法——圖像降噪算法總結,對圖像降噪算法感興趣的同學歡迎參考

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的图像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。