Noise2Noise(2018):无监督去噪方法

Noise2Noise(2018):无监督去噪方法

导出时间:2025/11/24 08:48:42

1、研究背景与动机

image.png

1)传统去噪的常识:要有“干净图”教模型学

想象你在教一个小孩认干净的苹果。
你必须给他看:
  • 一张“脏苹果 🍎”(带泥的照片)
  • 一张“干净苹果 🍎”(擦亮后的照片)
让他学会区别哪里是“泥巴”,哪里是“苹果皮”。 👉 这就是以往的监督式去噪(如 DnCNN、MemNet 等)——用**成对的(噪声图,干净图)**训练模型。
但是问题是——在真实世界中:
  • 干净的图像往往根本拿不到!(比如低光环境、医学扫描、天文观测)
  • 想采集“干净样本”太难、太贵、太慢。

2)核心问题:没有干净图,还能去噪吗?

这个问题一度被认为“不可能”:

“如果你从没见过干净图,你怎么知道什么是噪声?”

传统观点认为:
  • 模型必须学“从噪声 → 干净”的映射;
  • 没有干净标签,模型就没法计算损失函数(Loss),自然无法学习。

3)Noise2Noise 的颠覆思路:

“我不需要干净图,只要两张带噪的图就够了!”

研究者提出一个大胆想法: 假设你有同一场景的两张照片,它们都带噪声,但噪声彼此不同(独立)
例如:
你拍一只猫:
  • 第一次拍:光线不稳,出现一些随机亮点;
  • 第二次拍:同样的猫,同样的姿势,但亮点换了地方。
👉 如果噪声是零均值且独立的,那在大量样本上平均时,模型会自动学到噪声的期望值(≈0),剩下的就是真实图像!
换句话说:
  • 模型看不见“干净猫”,但能看到两只“带不同噪声的猫”;
  • 它学会预测“另一张猫图的样子”,
  • 而唯一不变的部分就是——猫自己
💬 一句话:

“我们不教模型什么是‘干净’,只让它在两个‘脏样本’之间学会忽略脏的部分。”


4)背后的直觉原理(形象理解)

  • 你在听朋友讲笑话,他口吃两次,但笑话内容是一样的
  • 你的大脑自动忽略“噪声(口吃)”,只保留“有意义的部分(笑点)”。
  • Noise2Noise 就是让神经网络学会这种“重复听两遍,自动忽略随机误差”的能力。
数学上,这相当于在期望意义下,用带噪目标替代干净目标也能最小化同样的误差。

5)为什么这很重要?

在此之前,深度去噪的最大瓶颈是——

需要大量成对的(干净,带噪)训练数据。

Noise2Noise 一出,等于说:
  • “我只需要噪声样本,不用干净标签也能训练。”
  • 这极大降低了数据采集门槛
  • 在真实世界(比如医疗图像、显微镜、生物成像、低光摄影)中非常实用。
💡 这篇论文让“无监督图像恢复”成为现实的第一步。

6)它带来的研究动机与启示

  1. 让深度学习从“监督”走向“自我监督”: 模型可以从噪声中学结构,不再依赖“理想干净图”。
  2. 推动了后续一系列无监督方法: Noise2Void、Noise2Self、Blind-Spot Network、Self2Self 等都是从这里发展出来的。
  3. 揭示噪声学习的统计本质: 不是“看谁干净”,而是“看谁不变”——稳定的部分就是信号。

✍️ 一句话总结

Noise2Noise 的动机是: “既然噪声是随机的、真实内容是稳定的,那我就让模型自己从两个噪声中找出‘共同的真相’。”



2、核心创新点

一句话先概括:

Noise2Noise 的革命性在于——它证明了: 即使训练时从没见过干净图,也能学会去噪。

换句话说: “模型可以只靠噪声教自己变干净。”

核心创新点一:用“噪声当标签”也能学!

🔍 传统做法:

训练数据是成对的:
👉 (带噪图像 y,干净图像 x)
网络学:
f(y)≈x
也就是“输入脏图 → 输出干净图”。

💡 Noise2Noise 的神操作:

他们提出: 即便没有干净图,只要有两张噪声不同的图像 y₁, y₂,也可以学:
f(y1)≈y2
  • 因为两张图的内容相同,只是噪声不同;
  • 模型会自动忽略那些随机差异(噪声),
  • 逼近的其实是这两张图的共同部分,也就是真实干净图像的期望值

核心创新点二:数学上可证明“学噪声=学干净”

Noise2Noise 不只是“试试看”,而是数学上证明了这种训练方式是合理的。

简单逻辑:

  1. 假设每张观测图 y=x+n, 噪声 n 的期望是 0(即噪声“平均值为零”)。
  2. 目标是最小化均方误差 (MSE):
  3. Loss = E[(f(y₁) - y₂)^2]
  4. 在数学期望意义下,这个最小化问题与E[(f(y₁) - x)^2]是完全等价的
👉 换句话说:
即使你把干净图 x 换成带噪图 y2,
模型学到的最优映射仍然是“去噪函数”。
💬 形象理解: 你听别人说话时,噪声总是随机的; 多听几遍,你脑子里自动“平均”掉噪声,留下语义。 神经网络也是这样,靠统计规律自动把随机的噪声抵消掉。

核心创新点三:从“监督学习”跨向“无监督学习”的桥梁

Noise2Noise 打破了当时一个“信条”:

“没有干净标签,深度学习就学不了去噪。”

它证明: 如果你的数据里有统计独立的噪声,那么模型可以靠数据自身的一致性学到信号。
📌 启示: 这就是后续 Noise2Void、Noise2Self、Self2Self 等“自监督去噪”的起点。 这些方法更进一步——连成对噪声图都不要了,只靠一张图的不同像素关系,就能学会去噪。

核心创新点四:通用性强,不限于高斯噪声

  • 他们实验了多种噪声类型: 高斯噪声、泊松噪声、蒙特卡洛渲染噪声、文本损坏、MRI 扫描噪声等。
  • 都能实现接近有监督训练的去噪效果。
  • 说明这种思想不是特例,而是普适原理
💬 类比: 不管你是听人说英语、法语、德语,只要他们说的是同样的故事, 多听几次,你总能听懂意思——噪声只是“方言”,信息是一样的。

核心创新点五:简单到极致的实现方式

  • 不改网络结构:任何常规 CNN、UNet、ResNet 都能直接用。
  • 只改训练标签:把“干净图”换成“另一张噪声图”。
  • 训练和推理完全一样,推理时依旧输入单张噪声图。


3、模型的网络结构

一、整体架构:一个标准的“卷积式图像复原网络”

🔹 输入:

  • 带噪图像 y1(比如:有随机亮点、斑点或模糊的图)

🔹 网络结构:

Noise2Noise 并没有自创新结构,而是用了一个标准的 U-Net 或 CNN 去噪架构。 典型示例如下:
输入噪声图 (y₁) [卷积层 × N] → 提取局部特征 [下采样 + 编码部分] → 学习全局结构 [上采样 + 解码部分] → 重建图像 输出预测图 (ŷ)
  • 每一层都在做“提取特征 → 去除噪声 → 保留细节”的工作。
  • 你可以把它想成一个**“自动修图工”**: 每一层都试着更清晰地还原图像,最后输出“更干净的版本”。
💡 形象比喻:

网络就像一支“多层滤镜”的修图笔,每一层把不同尺度的噪声擦掉一点,最后叠加起来,画面就干净了。


二、关键区别:训练数据的“双噪声输入输出”机制

传统去噪(比如 DnCNN):
输入:噪声图 y 输出:干净图 x Loss: (ŷ - x)²
Noise2Noise:
输入:噪声图 y₁ 输出:另一张噪声图 y₂ Loss: (ŷ - y₂)²
两张图像来自同一个场景,但噪声不同!
例如:
  • 拍同一个场景两次,第一次 ISO=3200,第二次 ISO=3200,但噪声分布不一样;
  • 或者在渲染任务中,两次 Monte Carlo 采样得到不同噪声的结果。
💬 形象理解:

模型在看两张“同样的照片但脏点不同”的图,学会忽略这些不一致的脏点,只保留它们的共同部分——也就是干净的内容。


三、网络的具体实现细节(论文中示例)

在论文实验中,作者分别针对不同任务选用了不同的网络:
应用场景
使用的网络结构
特点

图像去噪(自然图像)
U-Net
编解码结构,能处理细节与全局信息
Monte Carlo 渲染去噪
ConvNet(ResNet风格)
连续卷积层提特征
文本恢复、MRI重建
特定任务网络
针对性调整输入通道与激活函数

  1. 编码部分(Encoder):
    1. 连续 3×3 卷积 + ReLU 激活;
    2. 2×2 最大池化(下采样);
    3. 多层堆叠(捕获不同尺度的噪声模式)。
  2. 解码部分(Decoder):
    • 反卷积(上采样);
    • skip connection(跳连到对称层);
    • 输出最终特征图。
  3. 最后一层输出与输入同尺寸, 输出通道 = 输入通道(灰度=1,彩色=3)。

四、训练机制:损失函数与优化策略

  • 损失函数:均方误差 (MSE)
  • L=E[(f(y1)−y2)2]
  • 优化器:Adam
  • 学习率:1e-3 到 1e-4
  • 批量大小:4~16
  • 数据增强:随机裁剪、翻转、旋转
💬 关键点:

它训练时的所有超参数都跟普通去噪网络差不多,唯一变化的是 —— 训练目标换成了“另一张噪声图”。


🔁 五、推理阶段(Inference):

  • 测试时只需一张噪声图 y;
  • 网络预测输出 x^=f(y), 直接就是去噪后的图像;
  • 不需要配对或额外噪声样本。
💡 类比:

模型已经从“双噪声训练”中学会了“忽略噪声的模式”, 所以面对新图,只要看一眼就能分辨出什么是“真实”,什么是“脏的”。

对比维度
传统去噪(DnCNN等)
Noise2Noise
输入
一张噪声图
一张噪声图
标签
干净图像
另一张噪声图
网络结构
CNN/U-Net
CNN/U-Net(不变)
核心创新
架构与正则化
训练方式(数据标签)
理论基础
有监督学习
无监督统计学习
实验表现
去噪效果好
去噪效果几乎相同甚至更鲁棒

🌟 六、形象总结

可以把 Noise2Noise 看成这样一个过程:

👩‍🏫 “老师给你两张带脏点的卷子,让你自己找出题目的真正答案。”网络学会了:哪些细节是恒定的,哪些是随机的。最后,它掌握的不是“去除噪声的规则”,而是“从随机里找出不变的本质”。



模型的核心不足与缺陷

一、前提条件太理想:要求“噪声要独立”

Noise2Noise 的理论成立,是建立在一个非常理想化的假设上的:

两张带噪图像的噪声必须是独立的、零均值的

也就是说:
  • 噪声不能带有固定的偏移(比如相机曝光偏差);
  • 两次采样之间噪声必须不同(独立)。
举个例子:
就像你要学会听清一个口吃的人说话—— 前提是他每次口吃的地方不一样。 如果他每次都卡在同一个词上, 那你就永远学不会“原句”。
👉 这就是 Noise2Noise 最大的局限:
  • 如果噪声是相关的(例如压缩伪影、条纹噪声、固定模式噪声), 模型就分不清什么是噪声、什么是真实结构
  • 这种情况下训练会失败,甚至会“学坏”图像。

二、需要“噪声成对图”,仍不是真正的无监督

虽然论文标题说是 “without clean data”(没有干净图), 但它还是需要两张同一场景的噪声图像来训练。
现实中,这个要求也挺苛刻的:
  • 很多时候我们只有一张图,没法拍两张;
  • 有些动态场景(比如人脸、动物)即使拍两张,也对不齐;
  • 在医学图像或天文图像里,获取成对噪声样本的代价仍然很高。
💬 形象理解:

它不需要“干净答案”, 但仍然需要“两份脏答案”。 这虽然比以前省事,但还不够“自由”。

👉 这也是后续 Noise2Void、Noise2Self 等方法出现的原因—— 它们进一步做到单图去噪,无需配对样本

三、假设的“噪声期望为零”不总成立

Noise2Noise 的数学推导依赖于一个条件:
E[n]=0E[n] = 0E[n]=0
也就是说噪声的平均值必须为 0。
但真实世界中的噪声往往带有偏差(bias):
  • 摄像头的亮度漂移;
  • 感光元件的固定模式;
  • 医学图像中某些方向性的伪影;
  • 夜景照片的非均匀亮度噪声。
当噪声均值不为 0 时, 模型学习到的“平均图像”就会被偏移,导致去噪后画面过亮或过暗
💬 类比:

像你每次听别人讲故事,他都带点口音。 听多了,你反而把口音当成了“正确发音”。


四、对噪声分布敏感,泛化性有限

  • 训练时的噪声分布(比如高斯或泊松)和测试时不一样时,性能会急剧下降;
  • 在真实世界中,噪声通常是复杂的混合类型,模型无法很好适应。
💬 类比:

模型在实验室里学的是“白噪声”(干净的沙沙声), 但现实中的噪声像“工地噪声”或“压缩噪声”——完全不一样。


五、仍然容易过度平滑、损失细节

虽然 Noise2Noise 可以去除随机噪声, 但它仍然可能模糊纹理细节,尤其在:
  • 噪声较强;
  • 图像细节密集;
  • 数据不够丰富时。
原因在于:
  • MSE 损失函数倾向于“平均化”结果;
  • 网络会选择“最保险”的方式——输出平滑结果,牺牲局部锐度。
💬 类比:

模型宁可把“草地的草叶”抹成绿色平面,也不敢冒险保留可能是“噪声”的尖刺。


六、无法处理结构性或非随机噪声

Noise2Noise 只能处理随机噪声(independent random noise), 但现实中还有很多结构性噪声
  • JPEG 压缩产生的方块;
  • 条纹纹理;
  • 高频重复伪影;
  • 传感器固定条纹;
  • 视频噪声中随时间相关的干扰。
这些噪声是有规律的,
模型很容易“把噪声当细节”,结果反而失败。
💬 类比:

它能听懂两次“随机口吃”的话,但听不懂“机械重复卡顿”的机器人说话。


七、训练成本依旧较高

虽然不需要干净图,但要成对数据。
每个 batch 都要读两张图,还要确保噪声独立,
训练效率其实没有比传统去噪快多少。
此外,为了防止“噪声相关性”,数据采集与同步仍需控制环境变量。
💬 类比:

你不再需要“完美的答案卷”,但仍得准备“两份错不同的作业卷”才能教学生。