蔡林紋,王 冠
(天津大學(xué) 數(shù)學(xué)學(xué)院,天津 300350)
下雨是一種常見(jiàn)的天氣狀況,雨不僅會(huì)影響人類的視覺(jué)感知,而且會(huì)影響室外的計(jì)算機(jī)視覺(jué)系統(tǒng).在雨天,雨線(rain streak)和附著在相機(jī)鏡頭上的雨滴(raindrop)都會(huì)顯著降低拍攝圖像的質(zhì)量.因此,雨線或雨滴去除問(wèn)題引起了廣泛的研究.近些年來(lái),研究者們?cè)谌コ昃€上已經(jīng)取得了很好的成果.然而,這些方法不能直接用于去除雨滴,因?yàn)橛甑蔚男螤詈臀锢沓上襁^(guò)程與雨線完全不同.圖像上的雨線一般是呈條紋狀均勻分布在整張圖像上,且雨線的方向是一致的.與雨線相比,雨滴呈現(xiàn)出更加不規(guī)則的幾何形狀,在圖像上的分布沒(méi)有規(guī)律,使得雨滴去除問(wèn)題更具有挑戰(zhàn)性.
一些研究者們基于雨滴的物理成像過(guò)程或幾何形態(tài)來(lái)模擬雨滴的分布.Kurihata 等[1]試圖通過(guò)主成分分析(PCA)來(lái)檢測(cè)雨滴,但當(dāng)場(chǎng)景中的物體與雨滴相似時(shí),PCA 無(wú)法有效地提取雨滴的特征,而且容易獲得錯(cuò)誤的檢測(cè)結(jié)果.Yamashita 等[2]先是通過(guò)測(cè)量玻璃和立體相機(jī)之間的距離來(lái)檢測(cè)雨滴,用其它圖像區(qū)域替換該雨滴位置來(lái)達(dá)到去除雨滴的目的,但這種方法是在假設(shè)其它圖像的相同位置沒(méi)有雨滴覆蓋的前提下進(jìn)行的,實(shí)際中這一假設(shè)有較大的局限性.之后,Yamashita等[3]又通過(guò)移動(dòng)相機(jī)拍攝出的圖像序列來(lái)替代立體相機(jī)拍攝出的圖像.
近些年來(lái),隨著深度學(xué)習(xí)的流行和廣泛應(yīng)用,有一些研究者們開(kāi)始嘗試?yán)蒙窠?jīng)網(wǎng)絡(luò)來(lái)解決雨滴去除問(wèn)題.Eigen 等[4]建立了一個(gè)三層網(wǎng)絡(luò)來(lái)提取合成圖像中雨滴的特征.雖然這種方法在雨滴小而稀疏的情況下效果較好,但它不能去除大而密集的雨滴.Qian 等[5]提出了一種可以同時(shí)檢測(cè)和去除雨滴的方法Attentive-GAN,該方法先利用一個(gè)小型遞歸網(wǎng)絡(luò)檢測(cè)雨滴在圖像上的位置并生成相應(yīng)的注意力圖(attention maps),然后這些注意力圖進(jìn)一步用于后續(xù)網(wǎng)絡(luò)處理,以提高去雨滴的性能.雖然該方法可以很好地去除單張圖像中的雨滴,然而其網(wǎng)絡(luò)結(jié)構(gòu)包含的參數(shù)相對(duì)較多,這限制了它在計(jì)算資源有限的實(shí)際應(yīng)用中的潛在價(jià)值.因此,設(shè)計(jì)有效且高效的雨滴去除算法對(duì)于廣泛的實(shí)際應(yīng)用是很有必要的.由于PReNet[6]在去除雨線方面是一種很好的輕量級(jí)網(wǎng)絡(luò)基本模型(Baseline),但直接將其應(yīng)用于雨滴去除任務(wù),得到的去雨滴結(jié)果并不好.
本文基于PReNet 提出了一種用于單張圖像雨滴去除的網(wǎng)絡(luò)PRSEDNet,與現(xiàn)有的基于深度學(xué)習(xí)的去雨滴方法相比,可以獲得相近或更優(yōu)的去雨滴效果.特別地,PRSEDNet 顯著降低了網(wǎng)絡(luò)的參數(shù)量.實(shí)驗(yàn)結(jié)果驗(yàn)證了我們的PRSEDNet 可以在達(dá)到高效的去雨滴性能的同時(shí),有更少的參數(shù)量,能獲得和Attentive GAN 相近的去雨效果,并且比輕量級(jí)網(wǎng)絡(luò)PReNet 表現(xiàn)得更好.
為了更好地細(xì)化分析本文方法,在本節(jié)中,我們首先介紹了雨滴去除問(wèn)題的基本理論模型,其次對(duì)我們使用的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了描述,最后給出了我們使用的損失函數(shù).
Attentive GAN中將雨滴圖像建模為:
其中,I是帶雨滴的圖像,B和R分別為背景圖層和雨滴圖層,M是一個(gè)二值變量,當(dāng)M=1時(shí),代表此像素屬于雨滴區(qū)域,當(dāng)M=0時(shí),代表該像素屬于背景區(qū)域.但其對(duì)M的真值采用了如下的設(shè)置:當(dāng)x≥30,M=1; 當(dāng)x<30,M=0,其中x為圖像像素(取值范圍為0-255).該方法簡(jiǎn)單地將閾值設(shè)置為30,這種方式在實(shí)際應(yīng)用中有一定的局限性.為了讓模型有更好的泛化能力,我們不使用雨滴位置的信息,即上述的M,而是將雨滴去除問(wèn)題看作是兩個(gè)圖層的分離問(wèn)題,建模如下:
其中,I,B,R的定義同上.
本文提出的去雨滴網(wǎng)絡(luò)PRSEDNet 如圖1所示,由兩個(gè)卷積層,卷積長(zhǎng)短期記憶網(wǎng)絡(luò)和特征提取模塊組成.即1 個(gè)卷積層fin用于接收輸入圖像,經(jīng)過(guò)卷積長(zhǎng)短期記憶網(wǎng)絡(luò)flstm和特征提取模塊fblock來(lái)提取特征,1 個(gè)卷積層fout用于輸出去除雨滴后的清晰圖像.因此,第t階段PRSEDNet 可以用如下公式表述:
圖1 PRSEDNet的網(wǎng)絡(luò)結(jié)構(gòu)
最大階段數(shù)為T(mén),除特殊說(shuō)明,網(wǎng)絡(luò)中所有的卷積層的卷積核大小都設(shè)置為3,步幅(stride)和填充(padding)都設(shè)置為1,激活函數(shù)使用ReLU[7].在網(wǎng)絡(luò)的整個(gè)過(guò)程中,都沒(méi)有上下采樣的操作,卷積核的其它參數(shù)設(shè)置都是為了讓特征圖的分辨率不會(huì)發(fā)生改變,旨在恢復(fù)出的清晰圖不會(huì)有圖像內(nèi)容細(xì)節(jié)的損失.下面,我們將給出每一層的實(shí)現(xiàn)細(xì)節(jié).
fin:該部分僅由一個(gè)卷積層組成.3 通道的雨滴圖y和3 通道的輸出圖xt-1按通道數(shù)連接在一起組成一個(gè)6 通道的輸入,將6 通道輸入送給卷積核大小為3的卷積層,輸出一個(gè)32 個(gè)通道的特征圖.其中,x0初 始化為y.
flstm:這部分參考PReNet的網(wǎng)絡(luò)結(jié)構(gòu),本文也使用ConvLSTM[8]中所提出的Convolutional LSTM 結(jié)構(gòu).Convolutional LSTM 接收一個(gè)32 個(gè)通道的特征圖,最終輸出一個(gè)通道數(shù)仍為32的特征圖.
fblock:此部分為特征提取模塊,一共由5 個(gè)RSED Block 組成,每個(gè)RSED Block 可以分為3 個(gè)部分,即兩個(gè)卷積層和一個(gè)注意力機(jī)制模塊,具體結(jié)構(gòu)如圖2所示.接收到的特征圖先通過(guò)一個(gè)卷積核大小為3的空洞卷積,該空洞卷積的填充(padding)和擴(kuò)張(dilation)都設(shè)置為10.之后再經(jīng)過(guò)一個(gè)卷積核大小為3的卷積層(該卷積不是空洞卷積,步幅和填充均設(shè)置為1),最后再通過(guò)一個(gè)注意力機(jī)制模塊,我們?cè)趯?shí)驗(yàn)中采用SENet[9]中的SE 模塊作為注意力機(jī)制模塊,SE的具體結(jié)構(gòu)如圖3所示,H和W分別代表特征圖X的長(zhǎng)和寬,C表示通道數(shù),r是放縮因子.實(shí)驗(yàn)中我們將C和r分別設(shè)置為32和16.每個(gè)RSED Block中的輸入和輸出都是32 個(gè)通道,在特征提取的整個(gè)過(guò)程中我們和文獻(xiàn)[10]一樣使用了殘差學(xué)習(xí)[11].
圖2 RSED block的具體結(jié)構(gòu)
圖3 SE 模塊的具體結(jié)構(gòu)
fout:該部分作為最終的輸出層僅由一個(gè)卷積層組成.該卷積層的卷積核大小為3,且沒(méi)有激活函數(shù).它將前面特征提取模塊輸出的32 個(gè)通道的特征作為輸入,輸出一個(gè)3 通道的圖像,并將其加到原始雨滴圖y上,生成最終的去雨滴圖像.
PRSEDNet 有T個(gè)階段,通過(guò)實(shí)驗(yàn)我們發(fā)現(xiàn)只需對(duì)網(wǎng)絡(luò)最終的輸出xT進(jìn)行監(jiān)督.我們不再簡(jiǎn)單地使用SSIM 損失函數(shù),而是將L1損 失和LW-SSIM損失[12]結(jié)合起來(lái),最終采用的損失函數(shù)如下:
其中,α和β分別代表兩種損失在整個(gè)損失中的權(quán)重系數(shù),gt是用于監(jiān)督訓(xùn)練的無(wú)雨滴清晰圖像,LW-SSIM是在SSIM 損失函數(shù)中運(yùn)用哈爾小波[13],使SSIM 損失函數(shù)接收到的不再是整個(gè)圖像,而是經(jīng)過(guò)哈爾小波變換計(jì)算出的各個(gè)圖像切片.通過(guò)這種方式,我們可以在損失函數(shù)中改變圖像分辨率,以有效地抑制最終輸出圖像出現(xiàn)不希望的偽影.
實(shí)驗(yàn)采用全監(jiān)督方法,用雨滴數(shù)據(jù)集(參考2.2 節(jié))中雨滴圖和相對(duì)應(yīng)的無(wú)雨滴圖(ground truth)形成訓(xùn)練對(duì),然后在我們提出的網(wǎng)絡(luò)結(jié)構(gòu)上進(jìn)行端到端(imageto-image)的訓(xùn)練.旨在學(xué)習(xí)到雨滴圖到無(wú)雨滴圖的映射或殘差.
實(shí)驗(yàn)采用AttentiveGAN中Qian 等創(chuàng)建的雨滴數(shù)據(jù)集[5]來(lái)訓(xùn)練和測(cè)試我們的算法.該數(shù)據(jù)集一共有861對(duì)雨滴圖和清晰圖用于訓(xùn)練,含有兩個(gè)測(cè)試集,test A和test B.其中test A是test B的子集,test A 包含58對(duì)質(zhì)量?jī)?yōu)良且對(duì)齊的圖像,test B 包含249對(duì)圖像,但test B中有部分圖像沒(méi)有完全對(duì)齊,用來(lái)計(jì)算評(píng)價(jià)指標(biāo)會(huì)得到不準(zhǔn)確的結(jié)果,為了便于定量比較并精準(zhǔn)計(jì)算評(píng)價(jià)指標(biāo),我們只在test A 上測(cè)試我們的結(jié)果,并將結(jié)果與其他去雨滴算法進(jìn)行比較.
評(píng)價(jià)指標(biāo)我們采用最常用的衡量圖像質(zhì)量的兩個(gè)值,峰值信噪比(PSNR)[14]和結(jié)構(gòu)相似度(SSIM)[15].PSNR和SSIM 值越大,表示圖像失真越小,質(zhì)量越好.
在整個(gè)網(wǎng)絡(luò)訓(xùn)練中,我們?cè)O(shè)置了合適的卷積核以及相應(yīng)的步幅和填充以使處理圖像的分辨率不發(fā)生變化.為了加快網(wǎng)絡(luò)的訓(xùn)練且減小顯存占用,我們將訓(xùn)練的861對(duì)圖像全都裁剪為100×100 分辨率的圖像塊,然后將所有的圖像塊輸入到網(wǎng)絡(luò)進(jìn)行圖像端到端的訓(xùn)練.
我們?cè)O(shè)置網(wǎng)絡(luò)的最大階段數(shù)T為6.損失函數(shù)(4)中的權(quán)重系數(shù) α和β分別設(shè)置為0.15和0.85.實(shí)驗(yàn)采用PyTorch 框架,并在單張NVIDIA GTX 1080Ti GPU 上進(jìn)行訓(xùn)練.梯度下降的優(yōu)化器采用Adam[16],Batchsize固定為18.整個(gè)實(shí)驗(yàn)訓(xùn)練100 個(gè)epoch,初始學(xué)習(xí)率設(shè)為0.001,當(dāng)達(dá)到第30,50和80 個(gè)epoch 時(shí),學(xué)習(xí)率變?yōu)榍耙浑A段的一半.
為了量化去雨滴的性能,表1給出了Eigen,PReNet,AttentiveGAN,PRSEDNet 四種算法的結(jié)構(gòu)相似度與峰值信噪比的數(shù)值比較(其中上下箭頭分別代表提升和不足,數(shù)值是我們的結(jié)果和其它算法結(jié)果相減得到的).其中Eigen的結(jié)果是用其作者訓(xùn)練好的模型直接在測(cè)試集test A 上進(jìn)行測(cè)試,而AttentiveGAN的作者在GitHub 上并未給出訓(xùn)練代碼,只給出了其訓(xùn)練好的模型.我們直接使用其提供的模型在測(cè)試集test A 上進(jìn)行測(cè)試.雖然PReNet的作者在GitHub 上提供了訓(xùn)練好的模型,但由于它是用于處理雨線去除問(wèn)題,其提供的模型不能直接用于雨滴去除問(wèn)題,我們便按照其作者的默認(rèn)設(shè)置參數(shù)在訓(xùn)練集上重新訓(xùn)練了PReNet 來(lái)進(jìn)行測(cè)試.可以看到,我們的結(jié)果遠(yuǎn)遠(yuǎn)優(yōu)于Eigen的結(jié)果,和我們的基準(zhǔn)模型PReNet 相比有很大的提升,同時(shí)也能達(dá)到和AttentiveGAN 相近的結(jié)果.我們還給出了PReNet,AttentiveGAN,PRSEDNet 三種算法的參數(shù)量比較,具體見(jiàn)表2,值得注意的是,我們比PReNet 只多了很少的參數(shù),但去雨滴效果卻提升很多,而且我們能得到和AttentiveGAN 很相近的結(jié)果,但我們的參數(shù)量只有其參數(shù)量的2.7%左右.
表1 幾種算法在測(cè)試集test A 上的PSNR與SSIM 平均值比較
表2 幾種算法的參數(shù)量比較
圖4給出了本文和其他算法在測(cè)試集test A 上的去雨滴效果圖,為了便于觀察,我們從每張圖中選取了3 個(gè)矩形區(qū)域進(jìn)行放大并排列在相應(yīng)圖的下方.如圖4中的第一幅圖所示,Eigen 算法只能處理很小且稀疏的雨滴,當(dāng)遇到大而密集的雨滴時(shí),其不能達(dá)到去除雨滴的效果,PReNet 能去掉部分雨滴,但其去除雨滴不徹底(參考紅色和綠色特寫(xiě)框).從圖4中第2 幅圖的3 個(gè)特寫(xiě)框可以看出,四種算法去除雨滴都不徹底,但Eigen,PReNet,AttentiveGAN 三種算法會(huì)在得到的清晰圖中保留更明顯的雨滴印跡,相比之下我們的算法可以得到更優(yōu)的效果.圖4中第3 幅圖的綠色特寫(xiě)框反映了PReNet 在生成清晰圖像時(shí)會(huì)產(chǎn)生不希望出現(xiàn)的偽影,而我們的算法在損失函數(shù)中運(yùn)用了哈爾小波變換,能有效地抑制該問(wèn)題的出現(xiàn).通過(guò)視覺(jué)效果圖的對(duì)比可以看出,我們所提出算法的去雨滴效果遠(yuǎn)遠(yuǎn)優(yōu)于Eigen 算法的效果,同時(shí)可以達(dá)到不輸于AttentiveGAN算法的效果,并且比同為輕量級(jí)網(wǎng)絡(luò)的PReNet 效果更好.
圖4 不同算法在測(cè)試集test A 上的去雨滴效果對(duì)比
為了更好地證明我們算法的有效性,圖5給出了整個(gè)實(shí)驗(yàn)流程中PRSENet和PReNet 隨epoch 變化的PSNR和SSIM 值.從圖5中可以看出,PRSENet的PSNR和SSIM 值在實(shí)驗(yàn)中均大于PReNet的PSNR和SSIM 值,這進(jìn)一步說(shuō)明了PRSENet 在去雨滴任務(wù)中比PReNet 更有效.另一方面,PRSENet的PSNR和SSIM 曲線最終趨于平緩,這也說(shuō)明了我們算法的在實(shí)驗(yàn)中是可以收斂的.
圖5 訓(xùn)練過(guò)程中PSNR和SSIM 值的變化
本文提出了一種用于單張圖像去雨滴的輕量級(jí)網(wǎng)絡(luò)算法.實(shí)驗(yàn)結(jié)果表明,與當(dāng)前流行的去雨滴方法Eigen和AttentiveGAN 相比,我們的PRSEDNet 可以達(dá)到更優(yōu)或相近的去雨滴效果,和我們的基本模型輕量級(jí)網(wǎng)絡(luò)PReNet 相比,無(wú)論是在去雨滴清晰圖的視覺(jué)感觀上,還是在PSNR和SSIM 數(shù)值上,我們的去雨滴效果都更好.此外,我們所提出的輕量級(jí)網(wǎng)絡(luò)也可以應(yīng)用于其他圖像恢復(fù)任務(wù)中,以平衡圖像的恢復(fù)質(zhì)量和相應(yīng)的計(jì)算開(kāi)銷.
計(jì)算機(jī)系統(tǒng)應(yīng)用2021年8期