新聞: Drunet
最先進的denoising績效
可用於插件圖像修復

https://github.com/cszn/dpir/blob/master/main_dpir_denoising.py
I recommend to use the PyTorch code for training and testing. The model parameters of MatConvnet and PyTorch are same.
main_train_dncnn.py
main_test_dncnn.py
main_test_dncnn3_deblocking.py
import torch
import torch . nn as nn
def merge_bn ( model ):
''' merge all 'Conv+BN' (or 'TConv+BN') into 'Conv' (or 'TConv')
based on https://github.com/pytorch/pytorch/pull/901
by Kai Zhang ([email protected])
https://github.com/cszn/DnCNN
01/01/2019
'''
prev_m = None
for k , m in list ( model . named_children ()):
if ( isinstance ( m , nn . BatchNorm2d ) or isinstance ( m , nn . BatchNorm1d )) and ( isinstance ( prev_m , nn . Conv2d ) or isinstance ( prev_m , nn . Linear ) or isinstance ( prev_m , nn . ConvTranspose2d )):
w = prev_m . weight . data
if prev_m . bias is None :
zeros = torch . Tensor ( prev_m . out_channels ). zero_ (). type ( w . type ())
prev_m . bias = nn . Parameter ( zeros )
b = prev_m . bias . data
invstd = m . running_var . clone (). add_ ( m . eps ). pow_ ( - 0.5 )
if isinstance ( prev_m , nn . ConvTranspose2d ):
w . mul_ ( invstd . view ( 1 , w . size ( 1 ), 1 , 1 ). expand_as ( w ))
else :
w . mul_ ( invstd . view ( w . size ( 0 ), 1 , 1 , 1 ). expand_as ( w ))
b . add_ ( - m . running_mean ). mul_ ( invstd )
if m . affine :
if isinstance ( prev_m , nn . ConvTranspose2d ):
w . mul_ ( m . weight . data . view ( 1 , w . size ( 1 ), 1 , 1 ). expand_as ( w ))
else :
w . mul_ ( m . weight . data . view ( w . size ( 0 ), 1 , 1 , 1 ). expand_as ( w ))
b . mul_ ( m . weight . data ). add_ ( m . bias . data )
del model . _modules [ k ]
prev_m = m
merge_bn ( m )
def tidy_sequential ( model ):
for k , m in list ( model . named_children ()):
if isinstance ( m , nn . Sequential ):
if m . __len__ () == 1 :
model . _modules [ k ] = m . __getitem__ ( 0 )
tidy_sequential ( m )簡單版本
DAGNN版本
[demos] Demo_test_DnCNN-.m 。
[模型]包括訓練有素的高斯脫諾模型;一個用於高斯denoising,單圖像超分辨率(SISR)和去除的單個模型。
[測試集] BSD68和SET10用於高斯denoising評估; SET5,SET14,BSD100和用於SISR評估的數據集; Classic5和Live1用於JPEG圖像去阻止評估。
我已經培訓了基於FFDNET的新的Flexible DNCNN(FDNCNN)型號。
FDNCNN可以通過單個模型處理[0,75]的噪聲水平範圍。
demo_fdncnn_gray.m
demo_fdncnn_gray_clip.m
demo_fdncnn_color.m
demo_fdncnn_color_clip.m
網絡架構

批次歸一化和殘留學習對高斯denoising有益(尤其是單個噪聲水平)。嘈雜的圖像的殘留物被添加劑白色高斯噪聲(AWGN)損壞,遵循恆定的高斯分佈,在訓練過程中穩定了批准。


預測殘差可以解釋為在起點(即嘈雜的圖像)上執行一個梯度下降推理步驟。
DNCNN中的參數主要代表圖像先驗(任務無關),因此可以學習一個用於不同任務的單個模型,例如圖像DeNoising,圖像超分辨率和JPEG圖像脫機。
左側是因不同降解而損壞的輸入映像,右側是DNCNN-3的恢復圖像。


BSD68數據集上不同方法的平均PSNR(DB)結果。
| 噪音水平 | BM3D | wnnm | epll | MLP | CSF | tnrd | dncnn | dncnn-b | fdncnn | Drunet |
|---|---|---|---|---|---|---|---|---|---|---|
| 15 | 31.07 | 31.37 | 31.21 | - | 31.24 | 31.42 | 31.73 | 31.61 | 31.69 | 31.91 |
| 25 | 28.57 | 28.83 | 28.68 | 28.96 | 28.74 | 28.92 | 29.23 | 29.16 | 29.22 | 29.48 |
| 50 | 25.62 | 25.87 | 25.67 | 26.03 | - | 25.97 | 26.23 | 26.23 | 26.27 | 26.59 |
視覺結果
左側是AWGN損壞的嘈雜圖像,中間是DNCNN的DeNoized圖像,右邊是地面真相。









在BSD68數據集上使用噪聲15、25和50的高斯denosing方法的平均PSNR(DB)/SSIM結果,set5,set14,bsd100和urban100數據集,jpeg圖像deplocking,jpeg Image DETAS,jpeg factor fimest 5、25和40上的單圖像超級分辨率,jpeg firces firples filess filess filess firce active firces firce firces classial 10,20,30和30和經典5和經典5和經典5和經典5和40。
| 數據集 | 噪音水平 | BM3D | tnrd | DNCNN-3 |
|---|---|---|---|---|
| 15 | 31.08 / 0.8722 | 31.42 / 0.8826 | 31.46 / 0.8826 | |
| BSD68 | 25 | 28.57 / 0.8017 | 28.92 / 0.8157 | 29.02 / 0.8190 |
| 50 | 25.62 / 0.6869 | 25.97 / 0.7029 | 26.10 / 0.7076 |
| 數據集 | 升級因素 | tnrd | VDSR | DNCNN-3 |
|---|---|---|---|---|
| 2 | 36.86 / 0.9556 | 37.56 / 0.9591 | 37.58 / 0.9590 | |
| set5 | 3 | 33.18 / 0.9152 | 33.67 / 0.9220 | 33.75 / 0.9222 |
| 4 | 30.85 / 0.8732 | 31.35 / 0.8845 | 31.40 / 0.8845 | |
| 2 | 32.51 / 0.9069 | 33.02 / 0.9128 | 33.03 / 0.9128 | |
| set14 | 3 | 29.43 / 0.8232 | 29.77 / 0.8318 | 29.81 / 0.8321 |
| 4 | 27.66 / 0.7563 | 27.99 / 0.7659 | 28.04 / 0.7672 | |
| 2 | 31.40 / 0.8878 | 31.89 / 0.8961 | 31.90 / 0.8961 | |
| BSD100 | 3 | 28.50 / 0.7881 | 28.82 / 0.7980 | 28.85 / 0.7981 |
| 4 | 27.00 / 0.7140 | 27.28 / 0.7256 | 27.29 / 0.7253 | |
| 2 | 29.70 / 0.8994 | 30.76 / 0.9143 | 30.74 / 0.9139 | |
| Urban100 | 3 | 26.42 / 0.8076 | 27.13 / 0.8283 | 27.15 / 0.8276 |
| 4 | 24.61 / 0.7291 | 25.17 / 0.7528 | 25.20 / 0.7521 |
| 數據集 | 質量因素 | AR-CNN | tnrd | DNCNN-3 |
|---|---|---|---|---|
| 經典5 | 10 | 29.03 / 0.7929 | 29.28 / 0.7992 | 29.40 / 0.8026 |
| 20 | 31.15 / 0.8517 | 31.47 / 0.8576 | 31.63 / 0.8610 | |
| 30 | 32.51 / 0.8806 | 32.78 / 0.8837 | 32.91 / 0.8861 | |
| 40 | 33.34 / 0.8953 | - | 33.77 / 0.9003 | |
| Live1 | 10 | 28.96 / 0.8076 | 29.15 / 0.8111 | 29.19 / 0.8123 |
| 20 | 31.29 / 0.8733 | 31.46 / 0.8769 | 31.59 / 0.8802 | |
| 30 | 32.67 / 0.9043 | 32.84 / 0.9059 | 32.98 / 0.9090 | |
| 40 | 33.63 / 0.9198 | - | 33.96 / 0.9247 |
或者只是MATLAB R2015B來測試模型。
dncnn/demo_test_dncnn.m
4A4B5B8中的第64至65行
@article { zhang2017beyond ,
title = { Beyond a {Gaussian} denoiser: Residual learning of deep {CNN} for image denoising } ,
author = { Zhang, Kai and Zuo, Wangmeng and Chen, Yunjin and Meng, Deyu and Zhang, Lei } ,
journal = { IEEE Transactions on Image Processing } ,
year = { 2017 } ,
volume = { 26 } ,
number = { 7 } ,
pages = { 3142-3155 } ,
}
@article { zhang2020plug ,
title = { Plug-and-Play Image Restoration with Deep Denoiser Prior } ,
author = { Zhang, Kai and Li, Yawei and Zuo, Wangmeng and Zhang, Lei and Van Gool, Luc and Timofte, Radu } ,
journal = { arXiv preprint } ,
year = { 2020 }
}=================================================================
@Inbook{zuo2018convolutional,
author={Zuo, Wangmeng and Zhang, Kai and Zhang, Lei},
editor={Bertalm{'i}o, Marcelo},
title={Convolutional Neural Networks for Image Denoising and Restoration},
bookTitle={Denoising of Photographic Images and Video: Fundamentals, Open Challenges and New Trends},
year={2018},
publisher={Springer International Publishing},
address={Cham},
pages={93--123},
isbn={978-3-319-96029-6},
doi={10.1007/978-3-319-96029-6_4},
url={https://doi.org/10.1007/978-3-319-96029-6_4}
}
儘管已進行了充分研究的圖像,但對真實圖像降級的工作很少。主要的困難源於以下事實:真實的噪聲比AWGN複雜得多,並且徹底評估Denoiser的性能並不是一件容易的事。圖4.15顯示了現實世界中的四種典型噪聲類型。可以看出,這些聲音的特徵非常不同,單個噪聲水平可能不足以參數化這些噪聲類型。在大多數情況下,Denoiser只能在某個噪聲模型下正常工作。例如,訓練AWGN去除的Denoising模型對於混合高斯和泊松噪聲無效。這在直覺上是合理的,因為基於CNN的方法可以視為等式的一般情況。 (4.3)和重要的數據保真度術語對應於退化過程。儘管如此,由於以下原因,驅除AWGN的圖像是有價值的。首先,它是評估不同基於CNN的denoising方法的有效性的理想測試床。其次,在通過可變分割技術的展開推理中,可以通過依次求解一系列高斯denoising子問題來解決許多圖像恢復問題,從而進一步拓寬了應用領域。

為了提高CNN Denoiser的實用性,也許最直接的方法是捕獲足夠數量的真正嘈雜清潔的訓練對進行培訓,以便可以涵蓋真正的退化空間。該解決方案的優勢是不需要知道複雜的降解過程。但是,由於需要仔細的後處理步驟,例如空間比對和照明校正,因此得出嘈雜的相應圖像並不是一項瑣碎的任務。另外,可以模擬真正的退化過程,以合成清潔圖像的嘈雜圖像。但是,準確地對複雜的降解過程進行建模並不容易。特別是,在不同的相機中,噪聲模型可能不同。然而,實際上,最好將某種噪聲類型大致建模以進行訓練,然後將學習的CNN模型用於特定於類型的denoisising。
除了培訓數據外,強大的體系結構和強大的培訓還起著至關重要的作用,為CNN Denoiser的成功而言。對於強大的體系結構,設計一個深度尺度的CNN,涉及粗到精細的過程是一個有希望的方向。這種網絡有望繼承多尺度的優點:(i)噪聲水平在較大的尺度下降低; (ii)多尺度程序可以緩解普遍存在的低頻噪聲; (iii)在降解之前對圖像進行縮減採樣可以有效地擴大所提交的接受。為了進行強大的訓練,通過生成對抗網絡(GAN)進行真實圖像Denoing的DeNoiser的有效性仍然是進一步的研究。基於GAN的DeNoising的主要思想是引入對抗性損失,以提高DeNocied Image的感知質量。此外,GAN的獨特優勢是它可以進行無監督的學習。更具體地說,沒有地面真相的嘈雜形象可以在培訓中使用。到目前為止,我們提供了幾種可能的解決方案來改善CNN Denoiser的可實用性。我們應該注意,這些解決方案可以合併以進一步提高性能。