基于模型驅(qū)動(dòng)的單圖像去雨深度神經(jīng)網(wǎng)絡(luò)
A Model-driven Deep Neural Network for Single Image Rain Removal
paper link:https://openaccess.thecvf.com/content_CVPR_2020/papers/Wang_A_Model-Driven_Deep_Neural_Network_for_Single_Image_Rain_Removal_CVPR_2020_paper.pdf
github link:https://github.com/hongwang01/RCDNet
1Background
深度學(xué)習(xí)技術(shù)在單圖去雨任務(wù)上取得了很好的性能,但是并沒(méi)有足夠的可解釋性,且并沒(méi)有很好的結(jié)合雨條紋的特征(連續(xù)、形狀相似),針對(duì)這些問(wèn)題,作者提出了一種模型驅(qū)動(dòng)的網(wǎng)絡(luò)。 一張雨圖中重復(fù)出現(xiàn)的雨條紋在局部上有著相似的特征:例如 形狀、粗細(xì)、位置。因此可以利用這一先驗(yàn)來(lái)恢復(fù)圖像,即問(wèn)題轉(zhuǎn)變成從這些局部的類(lèi)似退化中估計(jì)出rainy kernel。雖然特定的場(chǎng)景中(說(shuō)白了就是合成數(shù)據(jù)集),這種依賴于客觀先驗(yàn)的假設(shè)相當(dāng)work,但是在真實(shí)場(chǎng)景中,這種方法并不適應(yīng)復(fù)雜、多樣的雨條紋。因此作者提出將rain layer做一個(gè)分解,核心思路就是rain layer分解為雨核和雨圖,rain layer可以由二者卷積而成。
2Method
對(duì)于一張雨圖,其形成可描述為:
其中 代表背景層,代表雨層。大部分深度學(xué)習(xí)算法直接學(xué)習(xí)到的映射或到的映射。
作者提出,雨層其實(shí)可以表示為雨核集合與雨圖局部重復(fù)圖()的卷積:

因此,式可以重寫(xiě)為:
因此,可以用卷積集合(paper原文中描述為:convolutional dictionary),來(lái)表示雨條紋重復(fù)和類(lèi)似的局部模式,數(shù)量不多的核就可以很好的表示多種的雨條紋退化模式,這些核可以從大量的數(shù)據(jù)中學(xué)習(xí)得來(lái)。
與雨核不同,雨圖必須隨輸入的雨量圖像而變化,因?yàn)橛陾l紋的位置和偏移是完全隨機(jī)的。因此,為了得到干凈的輸出圖像,固定雨核,問(wèn)題的關(guān)鍵是準(zhǔn)確估計(jì) 和。
優(yōu)化問(wèn)題可以被表示為:
其中,是來(lái)自的張量,和是用于保留先驗(yàn)結(jié)構(gòu)信息的正則項(xiàng)。
估計(jì)雨圖M與背景B
作者采用一種多個(gè)重復(fù)的成對(duì)子網(wǎng)絡(luò)組合來(lái)構(gòu)成多階段的架構(gòu)設(shè)計(jì),整體的架構(gòu)設(shè)計(jì)在下一節(jié)解釋?zhuān)冉忉屢幌聠蝹€(gè)階段的成對(duì)子網(wǎng)絡(luò)設(shè)計(jì)和網(wǎng)絡(luò)設(shè)計(jì)后的解釋性原理。

上圖中,估計(jì)雨圖的部分即M-net,估計(jì)背景的部分即B-net,箭頭指向?qū)?yīng)的網(wǎng)絡(luò)。通過(guò)求解優(yōu)化問(wèn)題表示式的二次逼近,雨圖更新式可以表示為:
其中,為上一階段的更新結(jié)果。為步長(zhǎng)參數(shù),。與一般的正則項(xiàng)對(duì)應(yīng),上式的解為:
我們將下式代入上式中:
式中的是一個(gè)4維張量,表示轉(zhuǎn)置卷積,最終我們可以獲得雨圖M的更新式:
其中, 是依賴于正則項(xiàng),關(guān)于的近似更新函數(shù)。
同理,關(guān)于背景的二次逼近為:
其中,,所以可以推出B的最終更新規(guī)則為:
其中, 是依賴于正則項(xiàng),關(guān)于的近似更新函數(shù)。
雨卷積字典網(wǎng)絡(luò)
受low-level vision task比如反卷積、壓縮感知和去霧等中利用的deep unfolding技術(shù)的啟發(fā),作者將上述方法的每個(gè)迭代步驟都展開(kāi)作為相應(yīng)的網(wǎng)絡(luò)模塊,從而構(gòu)建多階段迭代的可解釋去雨網(wǎng)絡(luò)。

如上圖中所示,提出的網(wǎng)絡(luò)由個(gè)階段組成,對(duì)應(yīng)算法的次迭代步驟。每個(gè)階段通過(guò)兩個(gè)子網(wǎng)絡(luò)和實(shí)現(xiàn)雨圖和背景圖的更新。在網(wǎng)絡(luò)的每個(gè)階段,都會(huì)把上一個(gè)階段得到的兩個(gè)輸出和作為下一階段的網(wǎng)絡(luò)輸入。
展開(kāi)算法的關(guān)鍵在于我們?nèi)绾斡镁矸e神經(jīng)網(wǎng)絡(luò)去近似關(guān)于和的更新函數(shù),。作者使用了ResNet塊來(lái)近似兩個(gè)函數(shù),簡(jiǎn)單來(lái)說(shuō),首先可以將一個(gè)階段的更新規(guī)則分解為多個(gè)步驟:
:
:
,由多個(gè)級(jí)聯(lián)的resnet塊組成,參數(shù)分別為:和。雨核,和等都從數(shù)據(jù)中自動(dòng)學(xué)習(xí)得來(lái)。
作者巧妙的思路和推導(dǎo)使得兩個(gè)子網(wǎng)絡(luò)都有著很健壯的解釋性,如上圖中所示,首先通過(guò)上一階段估計(jì)得到的背景與原圖,得到雨層,當(dāng)前階段的雨層,雨核與上一階段的雨圖利用轉(zhuǎn)置卷積求得雨層,二者相減,從而計(jì)算出兩個(gè)雨圖的殘差信息。
接下來(lái),利用當(dāng)前階段的雨核和雨圖恢復(fù)出背景圖,并用可訓(xùn)練參數(shù)做了一個(gè)上一階段輸出的和當(dāng)前階段計(jì)算出的的融合結(jié)果圖作為當(dāng)前階段的更新結(jié)果送入殘差網(wǎng)絡(luò):
Loss function
作者采用了每個(gè)階段學(xué)習(xí)的背景和雨層的均方誤差作為訓(xùn)練目標(biāo)函數(shù):
指標(biāo)結(jié)果
paper中展示了常用的幾個(gè)數(shù)據(jù)集上的指標(biāo)結(jié)果,指標(biāo)非常不錯(cuò)。

效果圖展示
合成數(shù)據(jù)集上:

真實(shí)雨圖上:

3結(jié)論
作者提出了一種利用雨條紋的內(nèi)在先驗(yàn)結(jié)構(gòu)的可解釋網(wǎng)絡(luò),網(wǎng)絡(luò)中的每個(gè)模塊都可以與求解模型中一一對(duì)應(yīng)而實(shí)現(xiàn),網(wǎng)絡(luò)不再是黑盒子了,變成了每一模塊都能觀察、分析的白盒子~讓人感覺(jué)眼前一亮,非常值得細(xì)細(xì)學(xué)習(xí)和分析。


