基于深度学习的图像去噪算法:CBDNet(卷积盲去噪网络)
字数 1599 2025-11-07 12:33:00
基于深度学习的图像去噪算法:CBDNet(卷积盲去噪网络)
题目描述
图像去噪是计算机视觉中的基础任务,旨在从含噪图像中恢复干净图像。传统去噪算法通常假设噪声类型已知(如高斯噪声),但真实场景中的噪声往往是未知的、复杂的(如传感器噪声、压缩噪声的混合)。CBDNet提出了一种盲去噪方法,通过结合噪声估计子网络和非盲去噪子网络,实现对真实噪声的有效去除。
解题过程
1. 问题分析
真实图像噪声的特点:
- 信号依赖性:噪声强度可能与像素亮度相关(如泊松噪声)。
- 空间变化性:不同区域的噪声可能不同(如相机传感器缺陷)。
- 未知性:噪声类型和参数难以预先定义。
传统去噪算法(如DnCNN)依赖合成的高斯噪声训练,在真实场景中表现不佳。CBDNet的核心思想是先估计噪声特性,再针对性去噪。
2. 网络结构设计
CBDNet包含两个子网络:
(1)噪声估计子网络
- 输入:含噪图像。
- 输出:与输入同尺寸的噪声水平图(Noise Level Map),每个像素值表示该位置的噪声强度。
- 结构:5层全卷积网络(无下采样),保持空间分辨率。
- 作用:预测噪声的分布和强度,为后续去噪提供引导。
(2)非盲去噪子网络
- 输入:原始含噪图像 + 噪声估计子网络输出的噪声水平图(通道拼接)。
- 输出:去噪后的图像。
- 结构:采用U-Net架构,结合编码器-解码器与跳跃连接,保留细节信息。
- 原理:利用噪声水平图作为先验,指导网络自适应调整去噪强度。
3. 损失函数设计
为同时优化噪声估计和去噪效果,损失函数包含三部分:
(1)去噪损失
- 使用平滑L1损失(Charbonnier损失)衡量去噪图像与真实干净图像的差异:
\[ L_{denoise} = \sqrt{\|I_{clean} - I_{denoised}\|^2 + \epsilon^2} \]
- 优点:对异常值更鲁棒,避免L2损失的过度平滑。
(2)噪声估计损失
- 使用L2损失约束预测的噪声水平图与真实噪声图(合成数据中已知)一致:
\[ L_{noise} = \|\hat{N} - N_{gt}\|^2 \]
- 作用:确保噪声估计子网络的输出有意义。
(3)正则化损失
- 对噪声水平图施加总变分正则化(Total Variation Regularization):
\[ L_{tv} = \|\nabla \hat{N}\|_1 \]
- 目的:避免噪声图过于不平滑,抑制异常波动。
总损失:
\[L_{total} = L_{denoise} + \lambda_1 L_{noise} + \lambda_2 L_{tv} \]
(\(\lambda_1, \lambda_2\)为超参数,平衡各项权重)
4. 训练策略
(1)合成+真实数据混合训练
- 合成数据:在干净图像上添加模拟的真实噪声(如高斯-泊松噪声混合),噪声参数随机生成。
- 真实数据:使用未配对的真实噪声图像(如SIDD数据集),无需干净图像作为真值。
- 技巧:训练时交替使用合成数据(有完整监督)和真实数据(仅用去噪损失),提升泛化能力。
(2)渐进式训练
- 先训练噪声估计子网络(固定去噪网络),再联合微调两个子网络。
- 避免两个任务同时学习的冲突。
5. 推理过程
- 输入含噪图像至噪声估计子网络,得到噪声水平图。
- 将含噪图像与噪声水平图拼接,输入非盲去噪子网络。
- 输出最终去噪图像。
关键创新
- 盲去噪框架:通过噪声估计子网络自适应学习噪声特性,避免对噪声类型的强假设。
- 联合优化:噪声估计与去噪任务协同训练,提升对真实噪声的鲁棒性。
- 实用性强:在合成与真实数据上均表现优异,成为真实图像去噪的基准算法之一。
通过以上步骤,CBDNet实现了对复杂真实噪声的有效去除,为后续盲去噪研究提供了重要思路。