論文閱讀:Multi-Scale Boosted Dehazing Network with Dense Feature Fusion

Space_walk發表於2020-09-24

論文題目及作者
程式碼: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,都是從其他領域(去噪和超分),得到啟發的。這也驗證了我的導師經常說的,閱讀論文不能僅限於自己那個狹隘的領域(我的方向是影像去霧),在閱讀自己方向的論文的同時,也要多多閱讀相鄰領域。
    本文提出的網路非常大,引數量巨大,效果也好,有種大力出奇跡的感覺。
    最後是一點最近的心路旅程。上次更新是在差不多十天前了,這一個多星期經歷了很多事情,對我的打擊很大,讓我堅信我不是搞科研的這塊料。但生活總要繼續,畢業論文終究會到來,所以還是拿起論文繼續努力吧。

相關文章