Proximal Dehaze-Net: A Prior Lea
这是论文的Supplementary Material,因为这篇论文太过于偏近于传统方法,然后只会用pytorch的渣渣自然是看不懂matconvnet框架的,所以还是先看看这个吧
1 Preliminaries

分通道把Ac往下除



o是矩阵的数对应进行点乘
暗通道的先验公式为

然后把3代入4中,在一小块中默认T为常数

然后联立公式3和公式5,再加上T和Q的暗通道的正则项,建立能量函数

通过最小化方程(6)求解Q,T是一个不适定的问题,因为有多种解决方案。 与其他图像反问题不同,例如去噪,超分辨率和非盲去模糊,单图像去除表现为盲反问题,并且显然更难以解决。
使用半二次分裂算法求解上述能量函数,我们引入一个辅助变量U来代替Qdk,我们得到增强能量函数

通过以迭代方式在HQS算法下交替地求解三个优化子问题来实现Eqn(7)的最小化。 令Q0 = P,T0为M×N大小为1s的矩阵,U0为M×N大小的零矩阵

2 Deductions of Updating Formulas
在本节中,我们将详细说明如何解决优化问题(8)。 但首先,我们将介绍邻近算子[3]

在我们的提交中,我们进一步假设正则化R(Z)在Z上是可分的,即

对于许多常见的正则化,例如L-1或L-2范数,各向异性的总变差等,这种假设是正确的。
可以以一般形式解释在问题(8)中更新Un和Tn的子问题

其中μk> 0是正系数,Ak,Bk,Z是M×N大小的矩阵,R(Z)是Z上可分离的一些正则化。然后Eqn(10)可以求解为

现在假设正则化f(T)和g(U)分别在T和U上是可分的。 使用方程(11),可以容易地实现方程(8)中的U和T的更新。

为了解决上述优化问题,我们首先让Tn为M×N×3的三维矩阵,每个颜色通道为Tn。我们将→Q表示为矩阵Q的矢量化形式。计算图像暗通道的操作是提取局部斑块的最小值,可以将其视为对图像矢量进行操作的线性变换D导致

操作符D满足DTD是对角线的.然后Eqn(16)可以写成

采用相对于Q的梯度并将其设为零,然后得到



3 Computing Gradients for Back Propagation
3.1 Gradient computation of the whole network

在我们的提交中,我们将f(·)和g(·)扩展为不需要可分离的一般正则化,并使用深度卷积神经网络学习它们相应的近端算子。 因此,我们将上述迭代算法展开为深度神经网络,称为近端dehaze-net,如图1所示。
我们的近端dehaze-net是一个多阶段网络,每个阶段实现HQS算法的迭代。 对于近端除雾网的每个阶段,

其中,我们将Un和Tn与模糊图像P连接起来,以便更好地合并图像结构信息。 D-Net和T-Net是CNN,Θg,n,Θf,n分别是D-Net和T-Net的网络参数。 遵循T-Net的GIF块实现了引导图像过滤,这是我们端到端可训练系统的一部分,这将在后面讨论。
通过反向传播获得训练网络的梯度。 如算法1所示,在反向传播期间,
我们首先计算最终损失UN,TN和QN的梯度,表示为


为了使用梯度法训练我们的近端dehaze-net,我们需要计算以下必要的梯度

Gradients involved in updating Un .
当计算最终损失的梯度w.r.t. 参与方程(13)的Tn-1,所有操作都是矩阵内点值方面的。 因此,对于每个像素x∈Ω(x),我们有

So the partial gradient of Un (x) w.r.t. Tn−1 (x) is

备注1.对于图像P,线性算子D用于计算其暗通道P dk。转置算子D>是将暗通道中的像素放回图像中的原点。 在实现中,我们使用CUDA程序实现D和D>运算符。
备注2.在计算Qn时,我们需要计算暗通道Qdkn,这不是因果关系,因此我们近似计算Q n-1的Qdkn。 此外,算法中出现的划分是元素方面的。
备注3.对于阶段n中的D-Net和T-Net,网络输入分别是U n和T n与缩放的输入图像P连接,以便合并图像结构信息以更好地更新暗通道和透射图。
3.2 Computation graph of GIF-Block
接下来我们展示了近端dehaze-net的GIF-Block的计算图。 GIF-Block遵循[2]中的标准计算过程。 为了更好地说明,我们绘制了一个简单的引导图像滤波数据流图,如图2所示,其中蓝色实线表示前向流,橙色虚线表示后向流。 GIF块将图像p作为输入,I作为引导图像并输出滤波后的图像q。 在我们的例子中,p是由T-Net估计的透射图,I是原始的模糊图像,q是精细的透射图。 在实现中,我们使用卷积实现滤波操作,因此GIF块的正向通道可以表示为算法2。
虽然GIF-Block的前向传递很清晰,但后向传递也很简单。 由于我们不学习滤波器f,我们需要的是计算相对于输入p的损耗L的梯度。 遵循反向传播原理,我们需要沿着图2中的橙色虚线逐步计算中间梯度。我们在算法3中显示了GIF块的反向传播。在下文中,我们表示 dconv的卷积导数,即

根据链规则和图2,给出∂L/∂q,我们有...





