4. 从传统到深度学习:为什么需要深度学习?深度学习降噪的基本范式

说实话,我刚入行那会儿,图像降噪基本就是BM3D、NLM这些传统方法的天下。那时候大家比的是谁家的参数调得更好,谁家的先验模型更精巧。但慢慢地,你会发现一个很尴尬的问题——传统方法的上限,被数学公式给锁死了。

4.1 传统降噪方法的瓶颈

传统方法的核心思路,说白了就是“建模”。我们假设噪声是高斯分布,假设图像是分段平滑的,然后在这个假设框架下去求解。但真实世界的噪声,哪有那么听话?

传统方法的三个硬伤:

  • 先验假设太强:真实噪声往往不是纯高斯,还有泊松、散粒噪声、读出噪声混在一起。你用一个简单模型去套,必然丢细节。
  • 计算效率低:BM3D的块匹配和协同滤波,处理一张1080p图像要好几秒。放到视频流里,根本跑不动。
  • 参数调优靠玄学:我记得有一次做工业检测项目,换了一个传感器,之前调好的BM3D参数全废了。重新调参又花了两周。

你想想看,传统方法本质上是在“猜”图像的统计规律。而深度学习,是让网络自己去“学”这个规律。这就是根本区别。

4.2 为什么深度学习能破局?

深度学习降噪的优势,其实就三点:

  1. 端到端学习:输入噪声图,输出干净图。中间的特征提取、噪声建模、细节重建,全交给网络自己搞定。
  2. 非线性表达能力:传统方法受限于线性滤波或简单非线性变换。深度网络有几十层非线性激活函数,能拟合极其复杂的映射关系。
  3. 数据驱动:换一个传感器?重新采集一批数据,微调一下网络就行。不用从头推导数学公式。

我在一个手机影像项目里做过对比:同样的测试集,BM3D的PSNR大概在32dB左右,而一个简单的DnCNN就能到34dB以上。而且细节保留上,深度学习方法明显更自然。

我的经验: 不要迷信“深度学习万能”。如果训练数据和测试数据分布差异太大,深度模型可能还不如传统方法稳定。但只要你数据够、场景对,深度学习的优势是碾压级的。

4.3 深度学习降噪的基本范式

现在主流的降噪范式,按训练方式可以分为三类。我按出现时间顺序给你捋一遍。

4.3.1 有监督降噪

这是最直接、效果也最好的方式。你需要成对的训练数据:一张干净图,一张对应的噪声图。网络的任务就是学习从噪声图到干净图的映射。

经典网络有DnCNN、FFDNet、CBDNet等。损失函数一般用L1或L2损失,有时候加上感知损失来保细节。

注意: 有监督降噪最大的痛点是数据获取。真实场景下,你很难拍到一张“干净”的图。我做过一个天文图像项目,为了得到干净图,需要把几十张长曝光图像叠平均。那个采集成本,想想都头疼。

4.3.2 无监督降噪

无监督就是不依赖成对数据。常见思路有两种:

  • 噪声建模法:先估计噪声分布,然后从噪声图中采样生成训练对。比如Noise2Noise,它用两张不同噪声的图来训练。
  • 生成对抗法:用GAN来生成干净图,判别器判断真假。但GAN训练不稳定,容易产生伪影。

说实话,无监督降噪在实际工程中用的不多。效果比有监督差一截,而且调参更麻烦。除非你真的搞不到成对数据,否则我不建议走这条路。

4.3.3 自监督降噪

这是近几年比较火的方向。核心思想是:从单张噪声图内部,自己生成训练信号。

最经典的例子是Noise2Void和Noise2Self。它们利用“盲点”策略——用一个像素周围的邻居去预测这个像素的值。因为噪声是独立的,而图像结构是相关的,所以网络能学会去噪。

自监督的优势:

  • 不需要成对数据,甚至不需要知道噪声分布
  • 适用于医学图像、显微图像等难以获取干净图的场景
  • 训练过程相对稳定

我在一个病理切片项目里用过Noise2Void。当时实验室没有干净图,传统方法效果很差。自监督方法虽然不如有监督那么完美,但至少把噪声压下去了,细节也保留得不错。

4.4 三种范式的对比

我整理了一个表格,方便你对比选择:

范式 数据需求 效果 适用场景 工程难度
有监督 成对数据(干净+噪声) 最优 有干净图来源的场景 低
无监督 不成对数据 中等 数据获取困难但可建模噪声 高
自监督 单张噪声图 中等偏下 完全无干净图、噪声独立 中

4.5 知识结构图

下面这张图,把三种范式的关系和演进路径画清楚了:

深度学习降噪三大范式 传统降噪方法 深度学习降噪 有监督降噪 DnCNN / FFDNet / CBDNet 无监督降噪 Noise2Noise / GAN 自监督降噪 Noise2Void / Noise2Self 说明: • 有监督:需要成对数据,效果最好,工程最成熟 • 无监督:不需要成对数据,但训练不稳定,效果中等 • 自监督:仅需单张噪声图,适合医学/显微等特殊场景

4.6 如何选择?

我个人的建议是:

  • 有数据就选有监督:效果最好,工程最稳。别跟自己过不去。
  • 没数据但噪声可建模:试试无监督。但要做好调参的心理准备。
  • 完全没数据,噪声独立:自监督是最后的退路。虽然效果不是最优,但至少能用。

一个小技巧: 如果你不确定选哪种,可以先跑一个自监督的baseline。然后看效果差距,再决定要不要花成本去采集成对数据。我在好几个项目里都是这么干的,省了不少时间。