Noise2Noise:无监督去噪方法-k学长深度学习专栏
Noise2Noise颠覆了传统图像去噪需要干净样本的局限,提出仅用成对噪声图像即可训练模型。其核心思想是利用噪声的随机性,通过两张独立噪声图像让网络自动学习忽略噪声、保留真实内容。该方法在数学上证明了用噪声图像替代干净标签的可行性,且适用于多种噪声类型。虽然降低了数据采集门槛,但仍需成对噪声图像,且对噪声的独立性、零均值假设较理想化,难以处理相关性噪声或带偏置的噪声。这一工作为后续无监督去噪方法
本文来源:k学长的深度学习宝库,点击查看源码&详细教程。深度学习,从入门到进阶,你想要的,都在这里。包含学习专栏、视频课程、论文源码、实战项目、云盘资源等。

- 研究背景与动机
![[图片]](https://i-blog.csdnimg.cn/direct/7a39ce30c4934c0ab1f04431f73a1d43.png)
🧩 1)传统去噪的常识:要有“干净图”教模型学
想象你在教一个小孩认干净的苹果。
你必须给他看:
- 一张“脏苹果 🍎”(带泥的照片)
- 一张“干净苹果 🍎”(擦亮后的照片)
让他学会区别哪里是“泥巴”,哪里是“苹果皮”。
👉 这就是以往的监督式去噪(如 DnCNN、MemNet 等)——用**成对的(噪声图,干净图)**训练模型。
但是问题是——在真实世界中: - 干净的图像往往根本拿不到!(比如低光环境、医学扫描、天文观测)
- 想采集“干净样本”太难、太贵、太慢。
🤔 2)核心问题:没有干净图,还能去噪吗?
这个问题一度被认为“不可能”:
“如果你从没见过干净图,你怎么知道什么是噪声?”
传统观点认为:
- 模型必须学“从噪声 → 干净”的映射;
- 没有干净标签,模型就没法计算损失函数(Loss),自然无法学习。
💡 3)Noise2Noise 的颠覆思路:
“我不需要干净图,只要两张带噪的图就够了!”
研究者提出一个大胆想法:
假设你有同一场景的两张照片,它们都带噪声,但噪声彼此不同(独立)。
例如:
你拍一只猫:
- 第一次拍:光线不稳,出现一些随机亮点;
- 第二次拍:同样的猫,同样的姿势,但亮点换了地方。
👉 如果噪声是零均值且独立的,那在大量样本上平均时,模型会自动学到噪声的期望值(≈0),剩下的就是真实图像!
换句话说: - 模型看不见“干净猫”,但能看到两只“带不同噪声的猫”;
- 它学会预测“另一张猫图的样子”,
- 而唯一不变的部分就是——猫自己。
💬 一句话:
“我们不教模型什么是‘干净’,只让它在两个‘脏样本’之间学会忽略脏的部分。”
🔍 4)背后的直觉原理(形象理解)
- 你在听朋友讲笑话,他口吃两次,但笑话内容是一样的。
- 你的大脑自动忽略“噪声(口吃)”,只保留“有意义的部分(笑点)”。
- Noise2Noise 就是让神经网络学会这种“重复听两遍,自动忽略随机误差”的能力。
数学上,这相当于在期望意义下,用带噪目标替代干净目标也能最小化同样的误差。
🚀 5)为什么这很重要?
在此之前,深度去噪的最大瓶颈是——
需要大量成对的(干净,带噪)训练数据。
Noise2Noise 一出,等于说:
- “我只需要噪声样本,不用干净标签也能训练。”
- 这极大降低了数据采集门槛。
- 在真实世界(比如医疗图像、显微镜、生物成像、低光摄影)中非常实用。
💡 这篇论文让“无监督图像恢复”成为现实的第一步。
🧠 6)它带来的研究动机与启示
- 让深度学习从“监督”走向“自我监督”:
模型可以从噪声中学结构,不再依赖“理想干净图”。 - 推动了后续一系列无监督方法:
Noise2Void、Noise2Self、Blind-Spot Network、Self2Self 等都是从这里发展出来的。 - 揭示噪声学习的统计本质:
不是“看谁干净”,而是“看谁不变”——稳定的部分就是信号。
✍️ 一句话总结
Noise2Noise 的动机是:
“既然噪声是随机的、真实内容是稳定的,那我就让模型自己从两个噪声中找出‘共同的真相’。”
- 核心创新点(通俗形象版)
🌈 一句话先概括:
Noise2Noise 的革命性在于——它证明了:
即使训练时从没见过干净图,也能学会去噪。
换句话说:
“模型可以只靠噪声教自己变干净。”
🧠 核心创新点一:用“噪声当标签”也能学!
🔍 传统做法:
训练数据是成对的:
👉 (带噪图像 y,干净图像 x)
网络学:
f(y)≈x
也就是“输入脏图 → 输出干净图”。
💡 Noise2Noise 的神操作:
他们提出:
即便没有干净图,只要有两张噪声不同的图像 y₁, y₂,也可以学:
f(y1)≈y2
- 因为两张图的内容相同,只是噪声不同;
- 模型会自动忽略那些随机差异(噪声),
- 逼近的其实是这两张图的共同部分,也就是真实干净图像的期望值!
📊 核心创新点二:数学上可证明“学噪声=学干净”
Noise2Noise 不只是“试试看”,而是数学上证明了这种训练方式是合理的。
简单逻辑:
- 假设每张观测图 y=x+n,
噪声 n 的期望是 0(即噪声“平均值为零”)。 - 目标是最小化均方误差 (MSE):
- Loss = E[(f(y₁) - y₂)^2]
- 在数学期望意义下,这个最小化问题与E[(f(y₁) - x)^2]是完全等价的。
👉 换句话说:
即使你把干净图 x 换成带噪图 y2,
模型学到的最优映射仍然是“去噪函数”。
💬 形象理解:
你听别人说话时,噪声总是随机的;
多听几遍,你脑子里自动“平均”掉噪声,留下语义。
神经网络也是这样,靠统计规律自动把随机的噪声抵消掉。
🪄 核心创新点三:从“监督学习”跨向“无监督学习”的桥梁
Noise2Noise 打破了当时一个“信条”:
“没有干净标签,深度学习就学不了去噪。”
它证明:
如果你的数据里有统计独立的噪声,那么模型可以靠数据自身的一致性学到信号。
📌 启示:
这就是后续 Noise2Void、Noise2Self、Self2Self 等“自监督去噪”的起点。
这些方法更进一步——连成对噪声图都不要了,只靠一张图的不同像素关系,就能学会去噪。
⚙️ 核心创新点四:通用性强,不限于高斯噪声
- 他们实验了多种噪声类型:
高斯噪声、泊松噪声、蒙特卡洛渲染噪声、文本损坏、MRI 扫描噪声等。 - 都能实现接近有监督训练的去噪效果。
- 说明这种思想不是特例,而是普适原理。
💬 类比:
不管你是听人说英语、法语、德语,只要他们说的是同样的故事,
多听几次,你总能听懂意思——噪声只是“方言”,信息是一样的。
🧩 核心创新点五:简单到极致的实现方式
- 不改网络结构:任何常规 CNN、UNet、ResNet 都能直接用。
- 只改训练标签:把“干净图”换成“另一张噪声图”。
- 训练和推理完全一样,推理时依旧输入单张噪声图。
- 模型的网络结构
🧩 一、整体架构:一个标准的“卷积式图像复原网络”
🔹 输入:
- 带噪图像 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 结构(论文推荐版本)
- 编码部分(Encoder):
- 连续 3×3 卷积 + ReLU 激活;
- 2×2 最大池化(下采样);
- 多层堆叠(捕获不同尺度的噪声模式)。
- 解码部分(Decoder):
- 反卷积(上采样);
- skip connection(跳连到对称层);
- 输出最终特征图。
- 最后一层输出与输入同尺寸,
输出通道 = 输入通道(灰度=1,彩色=3)。
🔄 四、训练机制:损失函数与优化策略
- 损失函数:均方误差 (MSE)
- L=E[(f(y1)−y2)2]
- 优化器:Adam
- 学习率:1e-3 到 1e-4
- 批量大小:4~16
- 数据增强:随机裁剪、翻转、旋转
💬 关键点:
它训练时的所有超参数都跟普通去噪网络差不多,
唯一变化的是 —— 训练目标换成了“另一张噪声图”。
🔁 五、推理阶段(Inference):
- 测试时只需一张噪声图 y;
- 网络预测输出 x^=f(y),
直接就是去噪后的图像; - 不需要配对或额外噪声样本。
💡 类比:
模型已经从“双噪声训练”中学会了“忽略噪声的模式”,
所以面对新图,只要看一眼就能分辨出什么是“真实”,什么是“脏的”。
暂时无法在飞书文档外展示此内容
🌟 七、形象总结
可以把 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 都要读两张图,还要确保噪声独立,
训练效率其实没有比传统去噪快多少。
此外,为了防止“噪声相关性”,数据采集与同步仍需控制环境变量。
💬 类比:
你不再需要“完美的答案卷”,
但仍得准备“两份错不同的作业卷”才能教学生。
本文来源:k学长的深度学习宝库,点击查看源码&详细教程。深度学习,从入门到进阶,你想要的,都在这里。包含学习专栏、视频课程、论文源码、实战项目、云盘资源等。
更多推荐
所有评论(0)