旷视研究院 · 7月8日

2021CVPR论文解读 | NBNet:通过学习噪声基对图像投影来进行图像去噪

首发:旷视研究院
作者:张松阳&杜海琳

image.png
image.png

image.png
image.png

一.论文的Motivation

该文章是旷视科技在CVPR2021提出的一种图像去噪方案,其思想也可用于别的image restoration任务上。总的来说,一张降质的图像其实是噪声和真实的纹理的混合。如何将噪声纹理和图像原本的纹理解耦开?这是研究人员需要解决的问题。这篇文章的introduction部分让我想到了我之前介绍中科大ECCV2020的那篇文章FDRNet: 中科大提出对于混合失真图像修复的特征解耦表示网络,那篇文章采用了奇异值分解的思路,这篇文章则利用了向量的投影分解,有异曲同工之妙。

具体来说,作者通过神经网络学习到一组特征基向量,然后将原来的特征图中的向量投影到这些特征基向量上。这些学习到的特征基向量其实就能够将混杂的噪声和图像中的真实纹理进行分离,这样在后续过程中就能更好的将这些有噪声的向量进行抑制,而不影响到真实纹理所在的向量。作者认为这种投影可以自然的保持输入信号的局部结构信息。尤其适合于低光照区域或者是纹理比较少的区域。为此,作者设计了一种新颖的子空间注意力模块(SubSpace Attention, SSA)来进行噪声基的生成和子空间投影。

二.网络结构

总体的网络结构其实是一个U-Net的结构,这个结构在神经网络中是比较常见的。和U-Net结构不一样的是:U-Net的skip链接是直接一条线连过来的,中间没有卷积层,但是NBNet这个网络的skip链接是替换成了几个卷积模块和一个SSA模块。在分辨率越小的时候卷积模块的个数比较少,在分辨率越大的时候卷积模块的个数比较多。这可能是因为分辨率越大的时候skip前后的特征图的差异越大,需要更多的卷积模块进行修正。而卷积模块则是一个残差链接。本文的损失函数仅仅用了L1损失函数,用了这个函数还超过了很多SOTA的方法,说明网络结构特别是下文的SSA模块的设计对结果的增益很大。

image.png

三.SSA模块

SSA模块(参见图1c)是本篇文章的重点也是需要理解的地方。SSA模块包含两个关键步骤:

· Basis Generation(噪声基生成):用于根据图像特征生成子空间基向量;

· Projection(投影):用于将图像特征变换到信号子空间。

image.png
image.png
image.png

四.实验部分(和SOTA对比)

NBNet网络采用kaiming初始化,优化器为Adam,初始学习率为0.0002,余弦退化方式衰减,一共训练700000个iter。为验证所提方案的有效性,作者在合成数据与真实数据上将其与其他SOTA方案进行了对比。

首先是在合成数据集上的对比。测试集包含Set5、LIVE1以及BSD68。在合成数据集上对比所提方法与SOTA方案的性能对比,结果见下表。本文的降噪方法并未明确依赖于噪声数据的先验分布,但在评估中仍能取得最佳效果。这显示了所提出的投影方法的有效性,其通过利用图像先验来帮助分离特征空间中的信号和噪声。

在真实数据集上,NBNet在SIDD和DND两个数据集上做了测试。下图给出了所提方案与其他SOTA方案在SIDD数据上的性能对比,可以看出NBNet比最好的MIRNet高了0.03dB,取得了最佳指标,同时具有更好的视觉感知效果。相比MIRNet,NBNet仅需11.25%的计算复杂度和41.82%的参数量,而SSIM指标则提升了0.01。说明了NBNet不仅很快而且效果很不错。
image.png

五.实验部分(对比实验)

这篇文章的对比实验部分是非常有意思的,我重点介绍一下关于SSA模块的对比实验。首先是关于基向量的个数,作者做了基向量个数1,8,16,32的四组实验,发现基向量个数在32的时候不收敛。因为更高维的子空间(基向量的个数就是空间的维度)导致不收敛。但子空间的维度太小了肯定也不行,因此K取16的时候效果最好。

image.png
为了验证所提出的SSA模块不只是在UNet类的网络结构上有用,作者在DnCNN上测试了他们的模块的嵌入能够提高DnCNN的性能。具体来说,作者把第一层卷积层的输出当成上文的  ,把最后一层卷积层的输出当成上文的  ,然后把两者输入到SSA模块。相比不加SSA,加了SSA的DnCNN性能提高了0.55dB。为了实验的严谨性(别人可能质疑是因为仅仅concat了浅层特征带来的效果提升),作者加了一个 和  concat的实验,SSA模块和这个实验比起来效果也提升不少。

image.png

对比实验还探究了投影选择。目前的选择是把 和 concat起来生成噪声基,然后将  投影到子空间。那我们能不能将  投影到子空间呢?最后,实验发现并不收敛。我觉得是  这种高层次的语义特征图损失了底层的特征,因此不能够恢复出细节性的东西了。作者也做了生成噪声基的时候分别把  和  去掉的实验,去掉  时候也不能收敛。

image.png

最后,作者可视化了一下基向量,发现的确,有的基向量代表噪声,有的则是图像原来的pattern。
image.png

六.总结

其实,我想知道如果增大channel的个数,然后增加投影子空间的维度,能不能处理更加复杂的任务。如果可以,那么投影网络就能在image restoration领域有更好的处理信息的能力。

还有一个缺点是,从文章中的速度指标看来,投影操作因为有矩阵的逆运算,因此速度上可能会比较慢。这点可能也是美中不足吧。

专栏文章推荐

欢迎关注旷视研究院极术社区专栏,定期更新最新旷视研究院成果
加入旷视:career@megvii.com
3 阅读 316
推荐阅读
0 条评论
关注数
2042
内容数
104
专注旷视研究院学术论文解读推送,涵盖计算机视觉,文字识别等
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
Arm中国学堂公众号
关注Arm中国学堂
实时获取免费 Arm 教学资源信息
Arm中国招聘公众号
关注Arm中国招聘
实时获取 Arm 中国职位信息