AI人工智能,技术编程|一维自编码深度学习去噪效果如何?我用实验告诉你

不举不知物重 , 不试不知水深
AI人工智能,技术编程|一维自编码深度学习去噪效果如何?我用实验告诉你
文章图片

文章图片

某天一位老师提出 , 地震剖面就是由N条地震道曲线构成 。只要把每个地震道的噪声去掉 , 是不是效果同样好呢?这个问题实际上就是一维地震信号去噪 。
其实前面研究了很多二维深度学习降噪 , 效果都非常不错 。下面先来看看二维深度学习降噪的效果 。
01 二维深度学习降噪的效果有多好?
使用自编码做有监督学习降噪 , 使用卷积神经网络 , 最好效果的PSNR达到22.94 。
【AI人工智能,技术编程|一维自编码深度学习去噪效果如何?我用实验告诉你】原图 , 加噪声图片和去噪图片的效果是这样的:
AI人工智能,技术编程|一维自编码深度学习去噪效果如何?我用实验告诉你
文章图片

文章图片

AI人工智能,技术编程|一维自编码深度学习去噪效果如何?我用实验告诉你
文章图片

文章图片

AI人工智能,技术编程|一维自编码深度学习去噪效果如何?我用实验告诉你
文章图片

文章图片

从上面图片来看 , 去噪后的效果图与原图的差距非常小 , 而且还提升了层位的分辨率 。
02 一维全连接神经网络去噪
现在来谈谈一维深度学习去噪怎么做 。
既然是一维信号 , 并没有那么多复杂的特征信息 , 我想全连接网络足够学习了吧 。
设计的网络结构是这样的:
AI人工智能,技术编程|一维自编码深度学习去噪效果如何?我用实验告诉你
文章图片

文章图片

就是使用了6个全连接网络进行深度自编码学习 , 前面3层是编码压缩信号 , 后3层是解码还原信号 。
训练数据还是前文的数据集:见《自编码降噪效果到底怎么样?我用对比实验告诉你》 。不同的是要将28*28的二维数据 , 转换为784*1的一维数据 。
怎样把二维数据转换为一维数据?
比如有个数据noisy_imgs为(441,28,28) , 即是441个28*28的图块 。那使用这个代码
noisy_imgs = noisy_imgs.reshape((len(noisy_imgs), np.prod(noisy_imgs.shape[1:])))
这样二维信号就变为了(441,784) , 成了441个781*1的一维信号 。
经过100次迭代学习 , 选取其中效果最好的网络进行去噪的实验 。
最好的PSNR是17.47 。
AI人工智能,技术编程|一维自编码深度学习去噪效果如何?我用实验告诉你
文章图片

文章图片

看来这个效果与二维深度学习的差距还是比较大的 。
当然 , 有一个优势就是训练时间相对比较短 。一维全连接迭代100个周期的时间是29.71分钟 , 二维卷积神经网络迭代50个周期的时间是66.67分钟 。
03 一维卷积神经网络去噪
全连接学习信号的特征的能力差于卷积神经网络 。如果我改成一维卷积神经网络来去噪 , 效果又如何呢?
设计网络是这样的:
AI人工智能,技术编程|一维自编码深度学习去噪效果如何?我用实验告诉你
文章图片

文章图片

基本上就是把二维的深度自编码改为一维的深度自编码 。其它的算法和一维全连接神经网络学习差不多 。
最后的效果如何呢?
比如使用卷积核为32 , 训练50个迭代 , 花了58.62分钟和二维卷积神经网络差不了多少 。最好PSNR为18.65


推荐阅读