论文阅读:Multi-Scale Boosted Dehazing Network with Dense Feature Fusion

论文题目及作者
代码:https://github.com/BookerDeWitt/MSBDN-DFF

1. 摘要

    本文提出了基于U-Net的Multi-Scale Boosted Dehazing Network with Dense Feature Fusion(MSBDN-DFF)。该方法基于以下两个原则,boosting(提升)和error feedback(错误反馈)。

2. 提出的方法

    文章中Section Ⅲ分为两个部分描述该网络,即3.1和3.2。3.1题目为Multi-Scale Boosted Dehazing Network,但是除了一张图(图1)外及几句极其简单的话语,其余都是描述解码器中的SOS Boosted Module。3.2题目为Dense Feature Fusion Module,这一小节题目和标题描述的一致。所以我觉得更好的排版应该是先给出关于整体网络的简单描述,之后再重新编排两节用于描述本文的核心创新点会好一点。
    我重新编排了文章的结构,个人感觉更好理解文章。当然读者可以完全不用管编排,直接阅读内容即可。

2.1 Multi-Scale Boosted Dehazing Network

    网络总体结构如图1所示。
网络总体结构

图1 网络总体结构

    如图1所示,该网络包含三个组件,分别为:编码器 G E n c G_{Enc} GEnc、boosted解码器 G D n c G_{Dnc} GDnc和特征修复模块 G R e s G_{Res} GRes

2.2 SOS Boosted Module

    受Strengthen-Operate-Subtract(SOS) boosting方法的启发,本文设计了一个多尺度boosted解码器。本小节只详细介绍 G D n c G_{Dnc} GDnc中SOS Boosted模块,对于整体结构可以查看源代码或者图1。

1) Boosting in image dehazing

    该算法是在《Boosting of image denoising algorithms》这篇文章中提出的,最初是用于图像去噪。SOS boosting算法公式化如下:
J ^ n + 1 = g ( I + J ^ n ) − J ^ n (2) \hat{J}^{n+1}=g\left(I+\hat{J}^{n}\right)-\hat{J}^{n} \tag{2} J^n+1=g(I+J^n)J^n(2)

    为了方便对照原文,以后都采用与文章公式相同的编号,而不是另起炉灶。

    其中, J ^ n \hat{J}^{n} J^n是第 n n n次迭代的预测结果, g ( ⋅ ) g(\cdot) g()为去雾操作, I + J ^ n I + \hat{J}^{n} I+J^n表示用雾图 I I I增强 J ^ n \hat{J}^{n} J^n。和去噪的公理相似,上述公式已被证明,对于指标PoH(见下),可以促进图像去雾性能。
    定义PoH(Portion of Haze,雾的部分)为: P o H ( J ) = ( 1 − T ) A / J PoH(J) = (1 - T) A / J PoH(J)=(1T)A/J
    公理1:一幅图像经由去雾方法 g g g,对于指标PoH可以获得更好的结果,即相同场景但是会有更少的雾。
    根据公理1, ( 2 ) (2) (2)中SOS boosting算法可以提升去雾效果,即:
P o H ( J ^ n + 1 ) < P o H ( J ^ n ) (3) {PoH}\left(\hat{J}^{n+1}\right)<{PoH}\left(\hat{J}^{n}\right) \tag{3} PoH(J^n+1)<PoH(J^n)(3)

    文章中提到,关于公理1的证明见补充材料,但是我没找到相应的补充材料,主要是大概率我会看不懂,所以我就没去找。

    有了公理1,作者根据SOS boosting算法,提出了一个深度boosted网络,即本小节的解码器。

2) Deep boosted dehazing network

    在U-Net网络中,编码器为雾特征提取的模块,解码器为无雾图像复原的模块。为了逐步复原从特征修复模块 G R e s G_{Res} GRes中得到的结果 j L j^L jL,作者结合了SOS boosted算法提出了解码器 G D n c G_{Dnc} GDnc G D n c G_{Dnc} GDnc整体结构如图1所示,下面为 G D n c G_{Dnc} GDnc中其中一个模块,即SOS boosted模块的图解,见图2(e)。
五种不同boosted模块模块

图2 五种不同boosted模块模块

    对于第 n n n层的SOS boosted模块,首先对上一层得到的特征图 j n + 1 j^{n+1} jn+1(因为这里是倒着数的)进行上采样,然后用同一层对应的编码器得到的特征图 i n i^{n} in进行相加,送入到修复单元 G θ n n \mathcal{G}_{\theta_n}^n Gθnn中,结果减去上采样后的 j n + 1 j^{n+1} jn+1最为最终第 n n n层的SOS boosted模块的输出,即 j n j^n jn。公式表达如下:
j n = G θ n n ( i n + ( j n + 1 ) ↑ 2 ) − ( j n + 1 ) ↑ 2 (4) j^{n}=\mathcal{G}_{\theta_{n}}^{n}\left(i^{n}+\left(j^{n+1}\right) \uparrow_{2}\right)-\left(j^{n+1}\right) \uparrow_{2} \tag{4} jn=Gθnn(in+(jn+1)2)(jn+1)2(4)

    其中, ↑ 2 \uparrow_{2} 2表示2倍上采样操作, G θ n n \mathcal{G}_{\theta_n}^n Gθnn表示第 n n n层参数为 θ n \theta_n θn的可训练修复单元。在每一个修复单元中,都使用了残差组。
    在解码器的最后一层中,使用一个卷积层从最后的特征图中得到最终的无雾图像 J ^ \hat{J} J^

在这里插入图片描述
    这里有一点需要特别注意,如上图所示,编码器和解码器中红色框中的两部分才是对应的编码解吗结构。即编码器红框输出的结果为 i 2 i^2 i2,解码器红框输出结果为 j 2 j^2 j2。明白了这一点,就清楚为什么 i 2 i^2 i2 j 2 j^2 j2是在同一条水平线上了。

3) Alternatives to SOS boosted module

    这一部分主要介绍在解码器中使用图2(a)(b)(c)(d)四种模块的情况。感兴趣的看原文,这里不过多赘述。在后面消融实验中证明了SOS boosted模块效果是最好的。

2.3 Dense Feature Fusion Module

    U-Net体系结构固有地在几个方面受到限制,例如,在编码器的下采样过程中缺少空间信息,并且在非相邻层级的特征之间缺少足够的连接。

    很好理解,下采样一定会丢失空间信息;U-Net只在水平上有联系,而在竖直上没有联系,所以非相邻层级之间会缺少信息交互。

    受back-projection algorithm(Bilateral back-projection for single image super resolution)启发,为了增强非相邻层级特征之间的连接,本文提出了DFF模块。本文描述了解码器中DFF模块的使用,关于编码器可以相应的推导出。编码器中第 n n n层中DFF模块的框架如图3所示。
编码器第n层DFF模块的框架

图3 编码器第n层DFF模块的框架

    公式化如下:
j ~ n = D d e n ( j n , { j ~ L , j ~ L − 1 , ⋯   , j ~ n + 1 } ) (10) \tilde{j}^{n}=\mathcal{D}_{d e}^{n}\left(j^{n},\left\{\tilde{j}^{L}, \tilde{j}^{L-1}, \cdots, \tilde{j}^{n+1}\right\}\right) \tag{10} j~n=Dden(jn,{j~L,j~L1,,j~n+1})(10)

    其中, j n j^n jn为解码器第 n n n层中的boosted特征图(即SOS Boosted Module的输出), j ~ n \tilde{j}^n j~n为第 n n n层DFF模块的输出, L L L为网络层级数, { j ~ L , j ~ L − 1 , ⋯   , j ~ n + 1 } \{\tilde{j}^{L}, \tilde{j}^{L-1}, \cdots, \tilde{j}^{n+1}\} {j~L,j~L1,,j~n+1}为解码器中前面所有 ( L − n ) (L-n) (Ln)层DFF模块的输出。下面关于每次用一个增强特征 j ~ L − t , t ∈ { 0 , 1 , ⋯   , L − n − 1 } \tilde{j}^{L-t},t \in \{0, 1, \cdots, L-n-1\} j~Lt,t{0,1,,Ln1},增强当前boosted特征 j n j^n jn的介绍。更新过程如下:

  a. 计算第 t t t次迭代, j t n ( j 0 n = j n ) j_t^n(j_0^n = j^n) jtn(j0n=jn) j ~ L − t \tilde{j}^{L-t} j~Lt的差距 e t n e_t^n etn
e t n = p t n ( j t n ) − j ~ L − t (11) e_{t}^{n}=p_{t}^{n}\left(j_{t}^{n}\right)-\tilde{j}^{L-t} \tag{11} etn=ptn(jtn)j~Lt(11)

    其中, p t n p_t^n ptn为投影操作,将 j t n j_t^n jtn下采样到和 j ~ L − t \tilde{j}^{L-t} j~Lt相同维度。

  b. 更新 j t n j_t^n jtn
j t + 1 n = q t n ( e t n ) + j t n (12) j_{t+1}^{n}=q_{t}^{n}\left(e_{t}^{n}\right)+j_{t}^{n} \tag{12} jt+1n=qtn(etn)+jtn(12)
    其中, q t n q_t^n qtn为反投影操作,将 e t n e_t^n etn上采样到和 j t n {j}_t^{n} jtn相同维度。

  c. 迭代完以前所有增强特征(即 t t t取遍 { 0 , 1 , ⋯   , L − n − 1 } \{0, 1, \cdots, L-n-1\} {0,1,,Ln1}),得到现在最终的增强特征 j ~ n \tilde{j}^n j~n
    
    超分中的back-projection algorithm, p t n p_t^n ptn q t n q_t^n qtn是未知的。本文则直接采用了卷积/反卷积层学习相应的下采样/上采样操作。为了避免过多参数,本文采用stride=2的方式实现 p t n / q t n p_t^n/q_t^n ptn/qtn

    相应地,编码器中第 n n n层的DFF模块定义如下:
i ~ n = D e n n ( i n ∣ i ~ 1 , i ~ 2 , ⋯   , i ~ n − 1 ) (13) \tilde{i}^{n}=\mathcal{D}_{e n}^{n}\left(i^{n} \mid \tilde{i}^{1}, \tilde{i}^{2}, \cdots, \tilde{i}^{n-1}\right) \tag{13} i~n=Denn(ini~1,i~2,,i~n1)(13)

    根据上述解码器中的详细介绍,该部分可以相应的推导出。这里不作赘述。

    通过和先前的特征进行融合,弥补了U-Net损失的空间信息。

2.4 Others

    其余部分,例如实验细节,实验结果,消融实验等,感兴趣的可以去阅读原文。

3. 读后感

    本文两个核心创新点,SOS Boosted Module和DFF Module,都是从其他领域(去噪和超分),得到启发的。这也验证了我的导师经常说的,阅读论文不能仅限于自己那个狭隘的领域(我的方向是图像去雾),在阅读自己方向的论文的同时,也要多多阅读相邻领域。
    本文提出的网络非常大,参数量巨大,效果也好,有种大力出奇迹的感觉。
    最后是一点最近的心路旅程。上次更新是在差不多十天前了,这一个多星期经历了很多事情,对我的打击很大,让我坚信我不是搞科研的这块料。但生活总要继续,毕业论文终究会到来,所以还是拿起论文继续努力吧。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页