Denoising Prior Driven Deep Neural Network for Image Restoration为Weisheng Dong在2018年TPAMI上发表的一篇关于先验驱动的图像复原网络。这篇文章不仅仅设计了融合先验知识的图像复原网络,也在前面introduction部分和related work部分针对已有的图像复原网络进行了综述。
- Motivation
现有的大多数基于深度学习的图像复原算法仅仅是利用深度网络直接学习一个从低像质图像到高像质图像的映射,而传统方法中的观测特征建模、退化机理等先验知识却被完全忽略掉了。因此,这篇文章提出来一个基于去噪先验的图像复原网络。这个网络通过端到端训练,既能保留深度学习方法的高精度与高运行速度的优势,又能利用观测模型中的先验知识,进而达到更好的效果。
- Introduction
一般来说,不同的图像复原问题都可以用下式来进行建模:
y=Ax+n
其中,y是观测到的退化图像,x为退化前的清晰图像,A为图像退化对应的矩阵,n为随机噪声。该公式可以对应多种图像退化形式,比如噪声退化、模糊退化、甚至是雨条退化、雨雾退化等等,均可以用这样的一个公式进行描述。不同退化类型对应着不同的A矩阵,比如在噪声退化中,A就是一个单位矩阵;在模糊退化中,A就代表模糊操作;在低分辨率退化中,A就代表降采样操作。
一般来说,针对图像复原这个病态问题(给定y求x),现有方法主要是分为两大类,一种是基于模型的优化方法、另一种则是基于深度学习的方法。基于模型的优化方法主要将给定y求x这个问题从贝叶斯角度进行建模,优化一个后验概率P(x|y),即给定观测退化图像y情况下,清晰图像x概率最大,即优化下式:
其中,P(y|x)代表数据项,也就是说在清晰图像x确定的情况下,退化图像y出现的概率最高。同时,P(x)代表先验项,用于建模针对于清晰图像的一些先验知识,比如总变分先验,稀疏先验等。进一步,上式可以被改写成以下形式:
其中,二范数中的是前面提到的数据项,约束y和Ax要接近,此外,J(x)即为先验项。一般来说,先验项都会在基于优化的图像复原算法中占据非常重要的地位,而不同的先验项所带来的优化方向也略有不同。比如总变分先验能很好地建模分段恒定信号,但是没办法有效复原更复杂的边缘和图像纹理;稀疏先验更有助于基于现有的转换矩阵(比如离散余弦变换、小波变换)来恢复局部图像结构。除此之外,还有非局部自相似先验和低秩先验等。
传统方法主要通过人的手工设计先验进行图像的复原,而大部分基于深度学习的方法则是直接从退化数据学习到清晰图像的映射,完全忽视现有的退化模型和先验。在这篇文章之前也有两个工作尝试将传统先验知识融合进入网络模块,虽然取得了非常好的效果,但是由于依旧需要迭代多次求解,导致算法计算效率较低。
因此,这篇文章提出了一个融合深度学习与去噪先验的网络架构。进一步,将迭代过程展开成了一个前馈神经网络,通过端到端的学习,使得网络既有深度学习的高精度高运算效率,又融合了先验知识。
- Proposed Method
首先需要介绍以下传统优化方法中,图像复原一般是怎么做的,前面说到图像复原可以写成如下式:
通过引入中间变量v,可以将这个优化问题写成下式:
通过引入中间变量,将单个优化问题分解成两个子问题,从而将数据项和先验项进行分离,进而写成下面的迭代形式,求解一遍x,然后求解一遍v:
其中,为拉格朗日乘子,满足u(t+1)=u(t)+ρ(x(t+1)-v(t+1))。并且,可以写出x
的闭式解如下:
而这篇文章,提出将上式显式的写成了以x(t)和v(t)进行单步更新的形式如下:
其中,,δ
为更新步长。进一步,v(t+1)则通过一个隐式的网络建模得到:
因此,最后的算法流程如下:
初始化完毕后,先求解一次v(t+1),然后求解一次x(t+1),循环交替迭代得到最后结果。由于我本身没有接触过传统算法的具体实现,这里就先不涉及到文章中的后续传统优化中的收敛性证明等内容,直接进入网络设计阶段。
根据这个算法流程,就可以得到总体的网络框架如下图:
以第t个阶段为例,上面一支就是所谓的,下面一支则为
,中间的DCNN denoiser则是学习的
,通过三者的结合,得到这个阶段最终的输出。
进一步,每个阶段中间的DCNN denoiser,主要采用的是类似于Unet的encoder-decoder结构,如下图所示,通过上下采样得到不同尺度的信息,也同时获取更大的感受野。在网络中还增加了一个long-term skip connection,用于线性映射让网络学习到图像中的噪声。同时,为了将降采样和上采样过程中丢失掉的信息找回来,仿照unet一样中间加了对应网络层的skip用于融合该分辨率的原始信号。
- Experiments and ablation
这篇文章首先给出了几个ablation,分别是关于采用什么网络参数初始化方法、采用或者不采用预训练网络,得出的结论是这些都不影响网络的学习。不过我个人觉得这个可能是网络太小,需要搜索的解空间实际上并不是特别大,所以导致这些都不太影响网络最终的性能。还给了不同DCNN denoiser得到的结果,发现这个Unet形状的网络相比于传统的plain网络更有效。
此外,还做了一些其他图像复原任务,可视化结果如下:
图像去噪
图像去模糊
图像超分
- Conclusion
总的来说,这篇文章公式证明非常详细,思路在当时很新颖,实验比较充分,作为一篇2018年的TPAMI水准确实非常高,也给现有的基于模型驱动的网络结构和模块设计提供了指导和借鉴作用。这个文章其实是从传统优化方法做图像复原的基本解决思路出发,把传统方法分成多步利用网络进行实现,这个为我们现在想做的基于模型驱动的图像复原工作是一致的,可以说这篇文章做了一个很好的示例,虽然现在2020年看这个网络觉得可能有点简单,但是不可否认的是在当时这种将模型融合进网络架构设计的思路为学界提供了新的方向。