【CVPR2021】NBNet解读


【CVPR2021】NBNet: Noise basis learning for image denoising with subspace projection

基于子空间注意力模块的图像降噪,作者尚未公开官方代码,但 github上目前有一个非官方的实现可参考。下面内容主要来自青源LIVE,旷视CVPR20201预讲。这是一个来自旷视、快手和电子科大的工作

1、背景

图像降噪是 ill-posed 问题:设噪声观测图为 \(y\),真实图像为\(x\),噪声为\(n\),则降噪是从 \(y\) 恢复 \(x\) 的过程。传统方法在抹掉噪声的同时容易丢失细节,最近比较流行的方法是深度CNN方法,当前基于深度学习的方法大多使用L1或者L2 loss,这样的损失函数趋于输出平均值,导致结果会过平滑。如下图所示,左边的是知名的 DnCNN 方法的结果,可以看到,很多信息丢失了,一个好的算法应该能够在降噪的同时保留图像细节。

2、子空间方法

子空间方法用于图像分析是相当经典的,经常见到的是傅立叶变换、小波去噪、SVD。基本原理就是把图像拆分为一组基,只要找到噪声所处的基,把这部分去掉就可以了。

但是,当前方法的主要问题是,图像分析中的基是人工构造的。图像信息和噪声往往在一组基中,当把这组基抹掉的同时,图像的细节也损失了。

因此,作者想到,能不能利用深度学习自动的学习一组基,就可以更好的区分信息和噪声的分布。论文中使用 subspace projection 来实现这个想法。投影可以较好的保留图像的结构信息,同时,投影也是一种捕获全局相关性的方式。同时,投影可以训练一种信息与噪声分离的网络。

为此,作者提出了 SSA (subspace attention)模块,如下图所示。\(X_1, X_2 \in \mathbb{R}^{H\times W\times C}\) 表示两个特征,首先输入一个卷积网络,得到一组 basis vectors。然后,将 \(X_1\) 投影到此子空间。值得注意的是\(X_1\)\(X_2\)是来自不同 level 的特征,这里想用\(X_2\)来引导 \(X_1\) 的重构。

3、整体网络结构

整体网络是基于 U-NET,如下图所示。首先,作者在 skip connection 位置加了很多 conv-block。同时,还发现越顶层的 block 对于降噪越有利,因此,在顶层加了很多 conv-block。每一个 level 上都加了一个SSA模块。

在SSA中,左边直接过来的特征作为 \(X_1\),因为它的特征抽象能力,是比从 decoder 那边来的要小的。因此,从 decoder 过来的特征作为 \(X_2\),用来引导 \(X_1\) 的重构。

该网络使用了简单的损失函数:\(L(G,x,y)=|| x-G(y)||_1\) ,其中,\(G(\cdot)\)表示NBNet网络。

4、实验结果

作者指出,该方法在线条、点状等弱纹理图案处优于其他方法。这说明该方法能够很好的利用全局信息修复图像。

Ablation study 中,第一个实验表明SSA模块确实有效,只增加了很小的计算量就取得了非常好的效果。

作者还对基底进行了一组可视化,可以看到在绿框区域,NBNet对于细节的重构更好。同时,左侧是16个基底的可视化结果,可以看出细微的纹理在基底上较好的学了出来,利用这样的一组基底可以更好的实现图像细节的修复。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM