基于噪声学习的卷积降噪自动编码器用于图像去噪

     python tensorflow1.14实现

     卷积降噪自动编码器用于图像去噪,这个博客主要是借鉴了DnCNN用于图像去噪的方式,论文可以直接搜到(https://arxiv.org/pdf/1608.03981.pdf),也有很多人对于这个论文的中文讲解(https://www.jianshu.com/p/3687ffed4aa8https://blog.csdn.net/weixin_42296533/article/details/85171512?ops_request_misc=&request_id=&biz_id=&utm_source=distribute.pc_search_result.none-task),有需要的同学可以去看看。

     话不多说,直接说一下我的内容。DnCNN的结构简单来说是这样的:含噪图像被输入到设计的DCNN中,相应的输出是预测的噪声图像,然后用含噪图像减去预测的噪声图像,就能得到纯净的图像,如图1所示。

                              

                                                                                                      图1 

           DnCNN结合了ResNet的residual learning,不同的是DnCNN并非每隔两层就加一个shortcut connection,而是将网络的输出直接改成residual image(残差图片),设纯净图片为x,带噪音图片为y,假设y=x+v,则v是残差图片。即DnCNN的优化目标不是真实图片与网络输出之间的MSE(均方误差),而是真实残差图片与网络输出之间的MSE。(这段话参考的链接:https://www.jianshu.com/p/3687ffed4aa8,来源:简书,若原作者对于本博客的引用存在不妥,可联系我删除)。

           上述方法作者将其命名为基于残差学习的深度卷积神经网络图像去噪,基于此思想,本文提出一个基于噪声学习的卷积降噪自动编码器的图像去噪(总感觉这个方式学习的是噪声分布,因此取这么个名字),主题结构和原作者的不一样,取消了BN,因为我实际编程时发现加了BN层之后,测试集的要比不好,其结构如图2所示,图3是普通的卷积降噪自动编码器。

                           

                                                                            图2 基于噪声学习的卷积降噪自动编码器

                          

                                                                            图3 普通的卷积降噪自动编码器

           主要的框架为上图2,骨干网络是卷积降噪自动编码器,在MNIST手写字体数据下,进行训练,训练时是对数据中加[0 0.1]的正态随机噪声,即np.random.normal(0,0,1),得到的loss曲线如图4所示。

                                  

                                                                                      图4 loss曲线对比

             从图4可以看出,改进后的卷积降噪自编码(图2结构)的loss要比一般的卷积降噪自编码(图3结构)下降的更快,而且最终的loss更低,这呼应了DnCNN的结果,说明了对噪声学习,要比直接输入纯净图像的效果好。下面是MNIST测试集部分效果,训练时是对数据中加[0 0.1]的正态随机噪声,测试时我们加入不同等级的看看效果。

 

       可以看出,这种方式基于噪声学习的卷积降噪自动编码器应该是能够学习到噪声分布,刚才说过训练时是对数据中加[0 0.1]的正态随机噪声,而测试时我们加入不同等级的噪声,可以看出,当噪声为[0 0.4]时,依旧能够较好的消噪,直到噪声增强到[0 0.4]时,效果才变得比较差。因为加入的正态分布的随机数,那么是不是可以认为此方法能够能够学习到这个噪声分布规律,因为已经学到了这种分布规律,所以即使噪声增强了,此方法依旧具有不错的泛化性能呢?后面的工作可以有兴趣的同学接着研究。

      接着我们再来看看,训练时是对数据中加[0 0.1]的正态随机噪声,而测试时我们加入其他类型的噪声,比如均匀分布np.random.uniform,来看看效果

     从上面结果可以看出,采用正态分布随机数训练,测试时添加均匀分布随机数,效果依旧还可以,能够清晰的分辨出降噪前后的数据。

    为了对比,我们对图3的一般的卷积降噪自编码,进行上述操作, 首先是正态随机数训练,正态随机数测试。

        然后是正态随机数训练,均匀分布随机数测试

        从上面结果可以看出,一般的卷积降噪自编码的效果较差,当采用正态分布随机数测试时,在[0 0.2]的时候就出现较大的失真。而泛化到均匀分布随机数测试时,在[0 0.1]的时候就出现了较大的失真,随着噪声程度的增加,失真更为严重。因此一般的卷积降噪自编码泛化性能相比基于噪声学习的卷积降噪自编码效果差,泛化能力低。

       上述结果表明了本博客所提方法的有效性。

 

 

 

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值