一、进度概述
1、推进关于滤波的相关任务(详情见相关文件)
二、详情
1、噪声与滤波模块
在师兄 inversionnet 的基础上,在正则化模块前后添加了对应的噪声和滤波模块。
噪声采用的是最基本的高斯噪声和椒盐噪声,关于其他噪声的添加,可以参考以下文章:
【Numpy】图像处理——噪声模型_numpy 高斯噪声-CSDN博客
滤波部分最开始采用了比较简单的处理方法,如最基本中值滤波,均值滤波,但效果都不太好,甚至 loss 值还会增大。经过一系列筛选,最后采用之前提到过的卡尔曼滤波。几种最基本的低通滤波方法可以参考以下文章:
【Numpy]图像处理——图像空间低通滤波(只存在噪声的图像复原)一_numpy 滤波器-CSDN博客
三、遇到的问题&困惑
1、loss 值出现多大的浮动才能表明噪声确实存在影响?
这个问题的关键在于,如何表明滤波这一措施是有效于深度学习网络的自抗噪性。
在小样本的情况下,噪声的影响不太明显。观察以下相关数据,发现设置高斯噪声的相关方差值为下时,在 4 个 epoch 左右 loss 值并无明显变化。所以由此产生一个新问题,通过滤波真的能提高数据质量,从而达到小样本训练的目的吗?
无噪声
var=0.0001
var=0.001
var=0.01
当时当数据量上来后,影响逐渐显现(还是比较大的,loss 值差不多翻倍了),如下图:
无噪声
var=0.01
2、同样的问题发生在了滤波之后,维持在多少内才能表明滤波确实有效果?
无噪声无滤波
var=0.01
var=0.01,卡尔曼滤波
3、如果以上两个问题表明深度学习网络的自抗噪性完全够,是否开始考虑加入更复杂的噪声,和使用更复杂的滤波方法?
4、有无更好的滤波方法?
目前还没有查询到第二种比较好的滤波方式(最基本的那几种滤波效果有点差,这里就没准备继续采用)。
这一点还有待去咨询,准备从两方面下手:回顾之前的 “数字图像处理” 和 “数字信号处理” 的学习;而查找相关论文。
5、关于任务中提及的第三点、第四点
目前还没有比较明晰的想法,准备再对其他类型的数据(如 SEG 等)进行一些噪声添加和滤波的工作,再来思考回答。
四、反思
1、对代码的理解程度不够,以及相关基础知识不牢固
最开始实际上做的挺复杂的,当时的想法是:先将 .npy 文件转换为对应的速度模型图像,对图像进行滤波处理后再转换会 .npy,实际上完全没有必要。第一、因为 .npy 文件本身相当于能供 numpy 库直接读取的二维图像,完全可以直接对原始数据操作。第二、加噪声应该直接在原始数据上加就是了,从而构造新的 “带噪声原始数据” 再进行反演;如果在反演之后再处理的话属于后处理,是反演的一环了,这不是从深度学习的角度去出发的。