Berita: Drunet
Kinerja denoising canggih
Dapat digunakan untuk restorasi gambar plug-and-play

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 )Versi Sederhana
Versi Dagnn
[demo] Demo_test_DnCNN-.m .
[Model] termasuk model terlatih untuk denoising Gaussian; Model tunggal untuk denoising gaussian, single image super-resolution (SISR) dan deblocking.
[Testset] BSD68 dan Set10 untuk evaluasi denoising Gaussian; Set5, set14, dataset BSD100 dan Urban100 untuk evaluasi SISR; Classic5 dan Live1 untuk evaluasi deblocking gambar JPEG.
Saya telah melatih model DNCNN (FDNCNN) fleksibel baru berdasarkan FFDNET.
FDNCNN dapat menangani rentang tingkat kebisingan [0, 75] melalui model tunggal.
Demo_fdncnn_gray.m
Demo_fdncnn_gray_clip.m
Demo_fdncnn_color.m
Demo_fdncnn_color_clip.m
Arsitektur Jaringan

Normalisasi batch dan pembelajaran residual bermanfaat bagi denoising Gaussian (terutama untuk tingkat kebisingan tunggal). Residual gambar bising yang rusak oleh aditif putih Gaussian Noise (AWGN) mengikuti distribusi Gaussian yang konstan yang menstabilkan normalisasi batch selama pelatihan.


Memprediksi residual dapat diartikan sebagai melakukan satu langkah inferensi gradien pada titik awal (yaitu, gambar bising).
Parameter dalam DNCNN terutama mewakili gambar gambar (independen-tugas), sehingga dimungkinkan untuk mempelajari model tunggal untuk tugas yang berbeda, seperti denoising gambar, gambar super-resolusi dan deblocking gambar JPEG.
Kiri adalah gambar input yang rusak oleh degradasi yang berbeda, kanan adalah gambar yang dipulihkan oleh DNCNN-3.


Hasil rata -rata PSNR (DB) dari berbagai metode pada dataset BSD68.
| Tingkat kebisingan | 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 |
Hasil visual
Kiri adalah gambar bising yang rusak oleh AWGN, bagian tengah adalah gambar yang dienoisasi oleh dncnn, kanan adalah kebenaran tanah.









Average PSNR(dB)/SSIM results of different methods for Gaussian denoising with noise level 15, 25 and 50 on BSD68 dataset, single image super-resolution with upscaling factors 2, 3 and 40 on Set5, Set14, BSD100 and Urban100 datasets, JPEG image deblocking with quality factors 10, 20, 30 and 40 on Classic5 and LIVE11 datasets.
| Dataset | Tingkat kebisingan | 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 |
| Dataset | Faktor peningkatan | 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 |
| Dataset | Faktor kualitas | Ar-cnn | Tnrd | Dncnn-3 |
|---|---|---|---|---|
| Klasik5 | 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 | |
| Hidup1 | 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 |
Atau hanya Matlab R2015b untuk menguji model.
Dncnn/demo_test_dncnn.m
Baris 64 hingga 65 dalam 4A4B5B8
@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}
}
Sementara gambar denoising untuk penghapusan AWGN telah dipelajari dengan baik, sedikit pekerjaan telah dilakukan pada denoising gambar nyata. Kesulitan utama muncul dari fakta bahwa suara nyata jauh lebih kompleks daripada AWGN dan bukan tugas yang mudah untuk mengevaluasi kinerja Denoiser secara menyeluruh. Gambar 4.15 menunjukkan empat jenis kebisingan khas di dunia nyata. Dapat dilihat bahwa karakteristik suara -suara tersebut sangat berbeda dan tingkat kebisingan tunggal mungkin tidak cukup untuk parameterisasi jenis kebisingan tersebut. Dalam kebanyakan kasus, seorang Denoiser hanya dapat bekerja dengan baik di bawah model kebisingan tertentu. Misalnya, model denoising yang dilatih untuk penghapusan AWGN tidak efektif untuk pemindahan kebisingan Gaussian dan Poisson campuran. Ini secara intuitif masuk akal karena metode berbasis CNN dapat diperlakukan sebagai kasus umum Persamaan. (4.3) dan istilah data yang penting sesuai dengan proses degradasi. Terlepas dari ini, gambar denoising untuk penghapusan AWGN sangat berharga karena alasan berikut. Pertama, ini adalah tes bed yang ideal untuk mengevaluasi efektivitas metode denoising berbasis CNN yang berbeda. Kedua, dalam inferensi yang belum digulung melalui teknik pemisahan variabel, banyak masalah restorasi gambar dapat diatasi dengan secara berurutan memecahkan serangkaian subproblem Denoising Gaussian, yang selanjutnya memperluas bidang aplikasi.

Untuk meningkatkan kepraktisan CNN Denoiser, mungkin cara yang paling mudah adalah dengan menangkap jumlah pelatihan yang cukup bising untuk pelatihan sehingga ruang degradasi nyata dapat ditutupi. Solusi ini memiliki keuntungan bahwa tidak perlu mengetahui proses degradasi yang kompleks. Namun, menurunkan gambar bersih yang sesuai dari yang bising bukanlah tugas sepele karena kebutuhan langkah-langkah pasca pemrosesan yang cermat, seperti penyelarasan spasial dan koreksi pencahayaan. Atau, seseorang dapat mensimulasikan proses degradasi nyata untuk mensintesis gambar bising untuk yang bersih. Namun, tidak mudah untuk memodelkan proses degradasi kompleks secara akurat. Secara khusus, model kebisingan dapat berbeda di berbagai kamera. Namun demikian, secara praktis lebih disukai daripada secara kasar memodelkan jenis kebisingan tertentu untuk pelatihan dan kemudian menggunakan model CNN yang dipelajari untuk denoising spesifik jenis.
Selain data pelatihan, arsitektur yang kuat dan pelatihan yang kuat juga memainkan peran penting untuk keberhasilan CNN Denoiser. Untuk arsitektur yang kuat, merancang CNN multiskala yang dalam yang melibatkan prosedur kasar-ke-halus adalah arah yang menjanjikan. Jaringan seperti itu diharapkan mewarisi manfaat multiskala: (i) tingkat kebisingan berkurang pada skala yang lebih besar; (ii) kebisingan frekuensi rendah di mana-mana dapat dikurangi dengan prosedur multiskala; dan (iii) downsampling gambar sebelum denoising dapat secara efektif memperbesar yang diajukan reseptif. Untuk pelatihan yang kuat, efektivitas Denoiser yang dilatih dengan Generative Adversarial Networks (GAN) untuk denoising gambar nyata masih masih penyelidikan lebih lanjut. Gagasan utama denoising berbasis GAN adalah untuk memperkenalkan kerugian permusuhan untuk meningkatkan kualitas perseptual citra denoised. Selain itu, keuntungan khas GAN adalah bahwa ia dapat melakukan pembelajaran tanpa pengawasan. Lebih khusus lagi, gambar bising tanpa kebenaran dasar dapat digunakan dalam pelatihan. Sejauh ini, kami telah memberikan beberapa solusi yang mungkin untuk meningkatkan kepraktisan CNN Denoiser. Kita harus mencatat bahwa solusi tersebut dapat digabungkan untuk lebih meningkatkan kinerja.