Record study record life
大创第十一次汇报
大创第十一次汇报

大创第十一次汇报

File name : 第十一次汇报.pdf

DNCNN

从数据样本中学到有效信号和噪声的区别

去噪问题的定义

图像的去噪问题普遍存在,首先我们知道图像是真实世界的反映,或者说对真实世界的采样,既然是采样,难免失真,再加上采集元器件的一些不稳定性,后期得到的图像就含有更多的噪声。设理想的无噪声图像为x,每个像素都有一个噪声偏移量,得到的噪声图为v,作者把噪声产生的原因简化为下面的式子,y为添加噪声后的图像。 y=x+v去噪任务的目的,就是根据噪声图像y,恢复出干净x 的过程。很显然,一个式子里未知数有两个,是有无穷多解的。传统算法通过各种滤波器算子处理噪声图像,而本文使用卷积神经网络(以下简称CNN)实现。CNN是强大的图像拟合器,把经验保存在网络中,在新样本中表现出较强的泛化性,以及比传统算法更好的去噪效果。

模型的主要任务是,根据噪声图像y,估计干净图像x,但是,模型的直接输出并不是x,而是噪声图像v,最终干净图的获取过程用公式表达就是x=y−R(y),这里R就相当于模型,且R(y)≈v。作者把这种方式称作残差学习(Residual Learning),并通过实验证实了残差学习对于提高训练稳定性和去噪效果的好处。

残差学习

DnCNN结合了ResNet的残差学习,但不同的是,DnCNN并非是每隔两层就加一个shortcut,而是将网络的输出直接改成residual image(残差图片)。 假设纯净图片为x,带噪音图片为y,假设y=x+v,则v是残差图片。 即DnCNN的优化目标不是真实图片与网络输出之间的MSE(均方误差),而是真实残差图片与网络输出之间的MSE(均方误差)。

数据预处理

先对纯净数据进行加噪(生成随机浮值的噪声)—->获得含噪数据 分别对无噪声数据和含噪声数据采用相同的方式在高宽方向滑动一定的步长,得到同一个位置的特征和标签。切割为多个64*64大小的patch形成patches列表,每一个patche作为标签和特征分别放到labe和feature文件夹中(可以进行数据增强(如对20%对数据进行随机翻转)) 划分数据集,训练集:验证集:测试集=8:1:1

模型的构建

假设无噪声数据为x,每个像素都有一个噪声偏量v,得到含噪声数据为y。——>y=x+v 去噪任务的目的,根据噪声图像y=x+v,恢复出干净的图像y的过程 网络结构: 第一部分:Conv(3 * 3 * c * 64) + ReLU(c代表图片通道数) 第二部分:Conv(3 * 3 * 64 * 64) + BN(batch normalization) + ReLU 第三部分:Conv(3 * 3 * 64) 每一层都使用零填充,使得每一层的输入输出尺寸保持一致。以此防止产生人工边界。 第二部分每一层在卷积与ReLU之间都加了批量标准化(batch normalization、BN)。

模型的训练与验证

epochs=20,LR=0.001,Adam 损失函数:criterion=MSELoss(均方方差)

优化的目标不再是干净图片与网络输出之间的误差(loss),而是残差(y-x)与网络输出(err_out1)之间的误差。(loss=criterior(err_out1,(batch_x-batch_y)))

验证集验证网络 加载验证集 和训练类似,但不用计算梯度

测试集测试网络 采用计算一个batch数据的信噪比(snr)作为评估指标 err_out3输出预测的结果(训练的时噪声) clean_out=test_x-err_out3(去噪数据为含噪数据-噪声) SNR1=batch_snr(test_x,test_y)去噪前的信噪比 SNR2=batch_snr(clean_out,test_y)去噪后的信噪比

赞赏

微信赞赏 支付宝赞赏

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注