共计 751 个字符,预计需要花费 2 分钟才能阅读完成。
提醒:本文最后更新于 2024-08-30 15:59,文中所关联的信息可能已发生改变,请知悉!
概述
对 DnCNN 算法进行优化
DnCNN 算法基于残差思想进行降噪,那么利用手工方法将“大概率噪声”“大概率非噪声”“其他”分类后进行训练,可能会有更好的效果
分析
原先拟通过修改 loss 函数的方式来完成上述过程,但实际上 DnCNN 的 loss 函数直接调用了 pytorch 的 mse 方法,如下:
torch.nn.functional.mse_loss(input, target, size_average=None, reduce=None, reduction='sum').div_(2)
其 loss 函数是对图像整体进行黑盒运算,所以现在采用一种等效方法。
原图 X + noise = 噪声图 Y
Y 中必然含有“大概率噪声 A”“大概率非噪声 B”“其他 C”,那么可以简单生成三张子图,如取“大概率噪声 A”和 X 中与 B、C 对应的像素就可以生成一张子图,当取 B 或 C 时,也以此类推
若如此做,便在实际意义上也是对这三类像素分开进行训练
训练结果
没有修改原训练参数,默认训练 180 epochs
180 1860 / 1862 loss = 1.2376
测试结果
本次训练
2022-10-17 02:27:21: Datset: Set68
PSNR = 29.23dB, SSIM = 0.9019
2022-10-17 02:27:23: Datset: Set12
PSNR = 30.45dB, SSIM = 0.9300
原模型
2022-10-17 02:32:16: Datset: Set68
PSNR = 29.24dB, SSIM = 0.9020
2022-10-17 02:32:16: Datset: Set12
PSNR = 30.46dB, SSIM = 0.9300
对于本套测试集来说测试结果没有明显差异
由于 python 版本、pytorch 版本、noise 随机差异等的不同,此种变化在误差范围内
正文完