胡明娣,宋 堯,鄭 甜,范九倫
(1.西安郵電大學(xué) 通信與信息工程學(xué)院,陜西 西安 710121;2.陜西漢江機床有限公司,陜西 漢中 723003)
雨、雪、霧、霾等惡劣天氣導(dǎo)致計算機視覺性能的下降是戶外視覺任務(wù)面臨的難題之一。惡劣天氣中雨天最為常見,當(dāng)汽車擋風(fēng)玻璃或者鏡頭上有雨滴時,獲取的圖像或視頻會被雨滴損毀,嚴(yán)重時背景圖像的信息幾乎全部被遮擋,如圖1所示。去除被雨損毀圖像中的偽影是當(dāng)前的研究熱點,雨滴導(dǎo)致圖像質(zhì)量量下降的恢復(fù)工作日益被重視。
圖1 透過玻璃拍攝的被雨滴損毀的單幅圖像Fig.1 Pictures are captured through glass with raindrops
近年來,越來越多的研究者關(guān)注去雨問題[1-3],以及與去雨相關(guān)聯(lián)的聯(lián)合任務(wù)的處理,比如去雨后自動駕駛的視覺質(zhì)量和刑事鑒定中視覺追蹤的精確度問題[4-5]。一般情況下,去雨大致可分為去除雨滴、去除雨紋和去除雨霧3種類型,現(xiàn)階段大多數(shù)去雨算法是雨紋去除算法[6-9]。當(dāng)前,關(guān)于雨滴去除的研究較少,但在應(yīng)用中卻不可避免面對雨滴損毀圖像的處理問題。附著在車窗或鏡頭上的雨滴會對背景像素有不同程度的退化,這種退化與雨紋造成的圖像質(zhì)量的退化是不同的,與雨滴大小和雨滴污染背景程度密切相關(guān)。解決雨滴去除的核心技術(shù)是定位圖像中雨滴的位置,以及如何描述雨滴對于背景像素的模糊程度,恢復(fù)出被雨滴遮蓋區(qū)域的像素值。
從對所有的雨圖采用統(tǒng)一標(biāo)準(zhǔn)分割提取二元雨滴mask到提出soft mask,學(xué)者們不斷探索雨滴定位的靈活性。由于雨滴的大小、深淺等模式是多樣的,雨滴mask既要提取雨滴位置,同時又要體現(xiàn)雨滴對背景的損毀程度,因此,本文提出利用分組函數(shù)提取雨滴自適應(yīng)分組mask的方法。綜合實驗表明去除雨滴的效果顯著提高。
Bustince等人提出了分組函數(shù)的概念,分組函數(shù)是一種特定類型的聚合函數(shù),它將兩個不可比的信息組合成為一組可比的信息[10]。Jurio等人在文獻[10]的基礎(chǔ)上進一步探究了分組函數(shù)的相關(guān)性質(zhì),并將其性質(zhì)應(yīng)用于圖像分割領(lǐng)域,將圖像看做模糊集,分別計算每個像素點屬于目標(biāo)和背景的隸屬度,計算兩個隸屬度函數(shù)的分組函數(shù),利用分組函數(shù)的相關(guān)性質(zhì)尋找最佳閾值對圖像進行閾值分割[11]。
Qian等人提出用于單幅圖像去除雨滴的注意力生成對抗網(wǎng)絡(luò),將視覺注意力機制引入到生成對抗網(wǎng)絡(luò)中,通過二元mask引導(dǎo)注意力循環(huán)網(wǎng)絡(luò)生成的注意力映射對雨滴進行定位,引導(dǎo)上下文自動編碼器完成雨滴的去除[12];Quan等人在卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上使用聯(lián)合形狀和通道的雙重注意力機制對雨滴進行定位,引導(dǎo)后續(xù)的網(wǎng)絡(luò)去除雨滴[13];Liu等人在殘差網(wǎng)絡(luò)的基礎(chǔ)上提出了一個通用于圖像復(fù)原任務(wù)的雙殘差網(wǎng)絡(luò)結(jié)構(gòu),針對雨滴的去除,在卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上添加了通道注意力對雨滴進行定位,指導(dǎo)后續(xù)的卷積神經(jīng)網(wǎng)絡(luò)去除雨滴[14]。但是,二元mask沒有考慮到雨滴的多樣性,對所有的雨圖都采用統(tǒng)一的準(zhǔn)則提取雨滴mask,只能反映雨滴的位置信息,并不能體現(xiàn)出雨滴的大小、薄厚,以及雨滴對背景像素的模糊程度。
Shao等人提出選擇性跳躍連接生成對抗網(wǎng)絡(luò)(selective skip connection generative adversarial network,SSCGAN)[15],在生成網(wǎng)絡(luò)中采用U-Net結(jié)構(gòu),引入自注意力模塊(self attentionblock,SAB)提取雨滴圖像當(dāng)中的雨滴位置信息,在提取雨滴位置信息的同時,采用選擇跳躍連接模塊(selective skip connection model, SSCM )提取雨滴圖像的背景結(jié)構(gòu)信息, 以輔助SAB更加準(zhǔn)確地提取雨滴位置信息, 在判別網(wǎng)絡(luò)中采用局部判別器判別生成的無雨圖; Shao等人在二元mask的基礎(chǔ)上, 提出了取值位于[-1,1]之間的軟掩碼(soft mask), 并在不同的尺度下利用soft mask引導(dǎo)注意力循環(huán)網(wǎng)絡(luò)生成注意力映射, 對雨滴進行定位,指導(dǎo)后續(xù)的U-Net去除雨滴[16]。 這類算法提取的soft mask是通過將殘差圖的像素值映射到[-1,1]之間得到的。其中,正值表示雨滴對背景像素的亮度有增強效果,負(fù)值表示雨滴對背景像素的亮度有削弱效果,并且其值的大小表示了雨滴對背景像素亮度增強或削弱的程度,越接近于1表示對背景像素亮度增強或削弱的程度越高。soft mask相較于二元mask不僅能夠表示雨滴所在的位置,還能表示雨滴對背景像素的模糊程度,提高了雨滴定位的精細(xì)度,從而去除雨滴的性能明顯得到提高,但這種軟掩碼簡單地利用雨圖與干凈背景圖相減得到的殘差圖就對雨滴進行定位,并沒有考慮到現(xiàn)實中雨滴大小、薄厚等不同的模式。
綜上所述,本文針對現(xiàn)有雨滴去除算法在雨滴定位方面存在的問題,提出了分組mask引導(dǎo)的單幅圖像去除雨滴算法,定位雨滴的同時關(guān)注雨滴大小的模糊性,以及雨滴對背景損毀的模糊程度的表現(xiàn)。
雨滴在雨圖中表現(xiàn)的模式是多種多樣的,因此,為網(wǎng)絡(luò)訓(xùn)練提供細(xì)粒度的mask引導(dǎo)深度網(wǎng)絡(luò)對雨滴進行更精準(zhǔn)的定位,然后去除雨滴,這是雨滴去除研究的難點之一。受Jurio等人[11]的啟發(fā),本文將分組函數(shù)引入到單幅圖像雨滴去除領(lǐng)域,利用分組函數(shù)對雨滴圖進行分割,得到雨圖的分組mask,將其作為基準(zhǔn)與原始雨圖一起送入神經(jīng)網(wǎng)絡(luò),訓(xùn)練神經(jīng)網(wǎng)絡(luò)進行雨滴的去除,本文算法的總體架構(gòu)如圖2所示。
如圖1中的雨滴圖像所示,雨滴對被覆蓋區(qū)域背景像素值的影響是一個漸變的過程,有很多學(xué)者給出雨滴圖像形成的物理模型[12-13,16],本文采納文獻[16]提出的雨滴圖像的形成,表示為
I=(1-G)+G⊙R,G∈[0,1]。
(1)
其中:I表示雨滴退化的圖像;B表示背景圖像;R表示雨滴帶來的影響;G表示利用分組函數(shù)提取的分組mask,其值位于0到1之間,表示雨滴對該點背景像素?fù)p毀的大小和模糊程度;⊙表示點乘。通過分組函數(shù)提取出的分組mask可以更精確地表示雨滴的位置信息以及背景信息的模糊程度。
本文提出的mask是基于分組函數(shù)生成的,稱為分組mask。將圖像看做模糊集,針對雨圖,首先構(gòu)造兩個模糊集,分別表示雨滴像素與背景像素,目標(biāo)是找到一個最佳閾值使其對應(yīng)的每個灰度值對于雨滴像素的隸屬度或?qū)τ诒尘跋袼氐碾`屬度取值最大,這樣就可以確定這些灰度值是屬于雨滴像素還是屬于背景像素;然后,計算對應(yīng)最佳閾值的雨滴像素隸屬度,用其作為分組mask,其值位于0到1之間,值越大,表示該灰度值越可能屬于雨滴像素。為了得到一個合理貼近實際的最佳閾值,本文引入了分組函數(shù),作為一個二元聚合函數(shù),分組函數(shù)具有當(dāng)且僅當(dāng)其中一個參數(shù)為1時,該函數(shù)才獲得最大值的性質(zhì),利用分組函數(shù)的這一性質(zhì)求解最佳閾值,得到最終的分組mask,具體的算法思路如下。
2.2.1 構(gòu)造模糊集 針對雨圖,本文構(gòu)造兩個模糊集,分別表示圖像中的雨滴像素與圖像中的背景像素,利用限制等價函數(shù)REF[17]構(gòu)建這兩個模糊集,將雨滴像素的隸屬度函數(shù)記為μQRt(q),將背景像素的隸屬度函數(shù)記為μQBt(q),
(2)
(3)
其中:q為灰度值;L為灰度值上限256;mR(t)與mB(t)分別表示屬于雨滴像素的灰度平均值和屬于背景像素的灰度平均值,其計算公式為
(4)
(5)
其中,h(q)表示灰度值為q的像素個數(shù)。
2.2.2 計算分組函數(shù) 得到雨滴像素與背景像素的模糊集后,最終的目的是將雨滴像素與背景像素區(qū)分開。Jurio等人[11]提出分組函數(shù)作為一個二元聚合函數(shù),具有當(dāng)且僅當(dāng)其中一個參數(shù)為1時,該函數(shù)取得最大值的性質(zhì)。而要將雨滴像素與背景像素分開,即要判斷在每一個灰度值下,該灰度值關(guān)于雨滴像素的隸屬度與關(guān)于背景像素的隸屬度哪個更大。利用分組函數(shù)這一性質(zhì),可以通過優(yōu)化的方式得到最佳的分割閾值,使圖中的雨滴像素與背景像素能夠更好地區(qū)分。本文對雨滴像素模糊集和背景像素模糊集求如下4個分組函數(shù),
GG1(μQRt(q),μQBt(q)=
max(μQRt(q),μQBt(q)),
(6)
GG2(μQRt(q),μQBt(q))=
(7)
GG3(μQRt(q),μQBt(q))=
(8)
GG4(μQRt(q),μQBt(q))=
μQRt(q)+μQBt(q)-μQRt(q)*μQBt(q)。
(9)
由于不同的分組函數(shù)所適應(yīng)的分類問題不同,且因分組函數(shù)的凸組合還是分組函數(shù),本文對式(6)~式(9)的4個分組函數(shù)求凸組合,得到一個新的分組函數(shù),其表達式為
(10)
2.2.3 求解最佳閾值與最終的分組mask 在得到最終的分組函數(shù)GGcomb(q),根據(jù)分組函數(shù)的性質(zhì),利用每一個灰度值對式(11)的目標(biāo)函數(shù)進行迭代求解,直到得到一個最佳的灰度值t*,使得該目標(biāo)函數(shù)的取值最大,此時可以將圖像中的雨滴與背景最好的分開。
(11)
在得到最佳閾值t*后,計算雨滴像素關(guān)于該像素值得隸屬度函數(shù),即為最終得到的分組mask,
G=μQRt(t*)。
(12)
生成分組mask的具體算法如下。
算法1分組mask提取算法
1) fort={0,1,…,L-1}(對于每一個灰度級)do
2) 構(gòu)建一個與背景像素相關(guān)的模糊集QBt
3) 構(gòu)建一個與雨滴像素相關(guān)的模糊集QRt
4) forq={0,1,…,L-1}(對于每一個灰度級)do
5) 計算QBt(q)和QRt(q)的4個分組函數(shù)
6) 計算4個分組函數(shù)的凸組合,得到一個新的分組函數(shù)GGcomb
7) end for
8) 計算先前分組函數(shù)的加權(quán)和
9) end for
10) 取最佳閾值t*為使分組函數(shù)和GGcomb最大的一個:
11) 計算最佳閾值t*對應(yīng)的目標(biāo)隸屬度函數(shù),即為所求的分組mask,
G=μQRt(t*)。
2.2.4 包含分組mask的雨滴圖/干凈背景像對
Qian等在文獻[12]中提出現(xiàn)有的去雨滴算法使用的主流雨滴數(shù)據(jù)集, 其中, 訓(xùn)練集包含861個圖像對(雨滴圖和其干凈背景圖), 測試訓(xùn)練網(wǎng)絡(luò)的數(shù)據(jù)集為Tast a和Tast b, 分別包含58張和149張雨滴退化圖像。 雨滴退化圖像和干凈的背景圖像是通過將兩個完全相同的玻璃放置在相機前方, 一個玻璃噴水, 一個玻璃保持干凈拍攝得到的。 本文的實驗在文獻[12]提出的雨滴數(shù)據(jù)集上進行。
如圖3所示,是利用不同算法在文獻[12]的數(shù)據(jù)集上提取的雨滴圖像mask結(jié)果展示。圖3A是雨滴圖像;圖3B是真實的干凈無雨圖;圖3C是利用雨滴圖減去真實的干凈無雨圖得到的殘差圖;圖3D是Qian等人[12]利用固定閾值T=30,認(rèn)為殘差圖中像素值大于30的像素點為雨滴,小于30的為背景得到的二元mask;圖3E是Shao等人[16]利用殘差值除以256得到的soft mask;圖3F是利用分組函數(shù)得到的分組mask。明顯可見,本文提取的分組mask得到的雨滴的定位圖僅僅只有雨滴的掩碼,沒有背景的紋理的遺留,而且雨滴掩碼表現(xiàn)出與現(xiàn)實相符的雨滴大小、薄厚的不同,雨滴捕獲率最高。
本文在文獻[12]所提出的雨滴數(shù)據(jù)集基礎(chǔ)上添加了利用分組函數(shù)提取的雨滴圖像分組mask,構(gòu)建了包含分組mask的雨滴圖/干凈背景像對數(shù)據(jù)集[18],供感興趣的研究者下載使用。
圖3 不同算法得到的maskFig.3 Mask obtained by different algorithms
針對雨滴覆蓋區(qū)域背景像素恢復(fù)問題,在文獻[12]提出的網(wǎng)絡(luò)基礎(chǔ)上,提出了基于分組mask的生成對抗網(wǎng)絡(luò)(group generative adversarial network,GGAN),其結(jié)構(gòu)如圖4所示。GGAN主要由兩個部分組成,分別是生成網(wǎng)絡(luò)與鑒別網(wǎng)絡(luò),將雨滴退化的圖像與其對應(yīng)的分組mask級聯(lián)送入由U-Net編解碼結(jié)構(gòu)構(gòu)成的特征提取網(wǎng)絡(luò)中,訓(xùn)練其生成無雨圖;將生成的無雨圖送入鑒別網(wǎng)絡(luò)中,訓(xùn)練鑒別網(wǎng)絡(luò)判斷生成的無雨圖,輸出真?zhèn)螛?biāo)簽。
圖4 GGAN網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 The network structure of GGAN
生成網(wǎng)絡(luò)的作用是生成無雨滴圖像,將雨滴退化圖像與其對應(yīng)的分組mask級聯(lián)送入生成網(wǎng)絡(luò),生成網(wǎng)絡(luò)是由16個Conv-ReLU的模塊組成,其中添加了跳躍連接,為了防止輸出模糊,如圖5所示為生成網(wǎng)絡(luò)的結(jié)構(gòu)。
圖5 生成網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 The network structure of generator network
由圖5可知,在生成網(wǎng)絡(luò)中包含兩個損失函數(shù):多尺度損失和感知損失。對于多尺度損失,從生成網(wǎng)絡(luò)的解碼器部分提取不同尺度的輸出,利用這種方式提取上下文信息,將多尺度損失定義為
(13)
其中:Si表示從解碼層提取的第i個輸出;Ti表示與有相同尺度的干凈背景圖;λi表示不同尺度的權(quán)重,給較大的尺度賦予較大的權(quán)重。具體地說,使用第1,3,5層的輸出,它們的大小分別是原始圖像的1/4,1/2和1。尺度越小的層包含的信息越少,賦予較小的權(quán)重。設(shè)定對應(yīng)層的權(quán)重λ分別為0.6,0.8,1。
除了多尺度損失外,還使用了感知損失,用來測量上下文自動編碼器輸出特征與干凈背景圖特征之間的全局差異,這些特征可以從CNN中提取,將感知損失定義為
LP(O,T)=LMSE(VGG(O),VGG(T))。
(14)
其中:VGG是經(jīng)過訓(xùn)練的CNN,給定輸入圖像可以生成其對應(yīng)的特征圖;O是生成網(wǎng)絡(luò)輸出的無雨圖;T是不含雨滴的干凈背景圖。
綜上所述,整個特征提取的損失可以表示為
LG=10-2LGAN(O)+LM({S},{T})+
LP(O,T)。
(15)
其中,LGAN(O)=log(1-D(O))。
本文中使用的是局部鑒別網(wǎng)絡(luò),在使用局部鑒別網(wǎng)絡(luò)時,需要知道哪些局部像素是被雨滴退化的,是需要在局部鑒別網(wǎng)絡(luò)中關(guān)注的區(qū)域。為了使鑒別網(wǎng)絡(luò)可以自己尋找這些被雨滴退化的區(qū)域,在鑒別網(wǎng)絡(luò)提取的特征和分組mask之間定義了一個損失函數(shù),通過這樣的設(shè)計使鑒別網(wǎng)絡(luò)將注意力集中在雨滴退化區(qū)域,判斷生成網(wǎng)絡(luò)輸出的無雨圖像是真是假。
整個鑒別網(wǎng)絡(luò)的損失函數(shù)可以表示為
LD(O,R,G)=-log(D(R))-
log(1-D(O))+γLmap(O,R,G)。
(16)
其中:γ設(shè)置為0.05;R表示由雨滴圖減去無雨圖得到的殘差圖;D為鑒別器;Lmap是鑒別網(wǎng)絡(luò)提取的特征與分組mask之間的損失,
Lmap(0,R,G)=LMSE(Dmap(0),G)+
LMSE(Dmap(R),0)。
(17)
其中:Dmap表示由鑒別網(wǎng)絡(luò)生成的2維映射;0表示只包含0值的映射。
實驗基于PyTorch,在本文構(gòu)建的包含分組mask的雨滴圖/干凈背景圖像對數(shù)據(jù)集上進行訓(xùn)練,如圖6所示。在Nvidia K80 GPU上實現(xiàn),在訓(xùn)練過程中設(shè)置batch size為1,訓(xùn)練的次數(shù)是105,模型的訓(xùn)練時間是15 d。
圖6 包含分組mask的雨滴數(shù)據(jù)集示例Fig.6 Examples of the raindrop dataset with group mask
為了評估網(wǎng)絡(luò)在半自動合成數(shù)據(jù)集上的去雨滴性能,采用峰值信噪比(PSNR)[19]和結(jié)構(gòu)相似性指數(shù)(SSIM)兩種常用指標(biāo)進行評價[20]。由于現(xiàn)實世界的圖像中沒有對應(yīng)真實的干凈背景圖,因此,只能主觀地評估現(xiàn)實世界數(shù)據(jù)集上的性能。將本文所提方法與5種先進的方法進行比較,包括RESCAN[6]、UMRL[7]、DuRN[14]、IADN[8]。
為了驗證本文所提分組mask在雨滴定位任務(wù)上的有效性,使用文獻[12]所提的半自動生成雨滴數(shù)據(jù)集訓(xùn)練網(wǎng)絡(luò),將本文提出的基于分組mask的GAN網(wǎng)絡(luò)與近幾年的去雨網(wǎng)絡(luò)去雨滴效果進行對比。
4.2.1 定量評價 表1展示了基于分組mask引導(dǎo)的神經(jīng)網(wǎng)絡(luò)GGAN與近幾年去雨網(wǎng)絡(luò)的定量比較。實驗在Raindrop數(shù)據(jù)集上進行,對測試集Test a和Test b上的結(jié)果進行了比較。從表1中可以看出,與其他去雨算法相比較,本文所提基于分組mask引導(dǎo)的神經(jīng)網(wǎng)絡(luò)GGAN在SSIM值上是最高的,在PSNR上排名較高。這表示與其他算法相比,本文算法在單幅圖像雨滴去除上的效果更好。
表1 不同算法定量評價結(jié)果Tab.1 Quantitative evaluation results of different algorithms
4.2.2 定性評價 圖7展示了基于分組mask引導(dǎo)的GGAN與近幾年去雨網(wǎng)絡(luò)在半自動合成數(shù)據(jù)集上去雨滴結(jié)果的對比,觀察圖7中黃框所標(biāo)注的部分,可以直觀地看出,Attentive GAN去雨滴后的圖像在有些位置過度去雨導(dǎo)致背景像素出現(xiàn)失真,RESCAN[6]、UMRL[7]、DuRN[14]及IADN[8]去除雨滴不干凈,在一些位置還存在雨滴殘留的現(xiàn)象,而利用本文所提基于分組函數(shù)mask引導(dǎo)的雨滴去除網(wǎng)絡(luò),更多的雨滴被去除的同時,保留了更豐富的圖像背景細(xì)節(jié),在單幅圖像去除雨滴方面更加有效。
4.2.3 網(wǎng)絡(luò)參數(shù)量及測試時間分析 表2顯示了不同去雨算法提出的網(wǎng)絡(luò)模型參數(shù)量,在Raindrop數(shù)據(jù)集上進行測試,處理一張圖片所需的時間。從表2可以看出,本文算法相較于RESCAN[6]和DuRN[14],雖然參數(shù)量提高了,但性能有所提升(見表1);相較于UMRL[7]和IADN[8],雖然本文算法參數(shù)量有所提高,但測試運行時間更少;相較于Attentive GAN[12],本文算法的參數(shù)量及測試運行時間都有所提升。
圖7 不同方法的去雨滴結(jié)果對比Fig.7 Comparison of results from different methods
表2 不同算法網(wǎng)絡(luò)參數(shù)量及測試時間分析Tab.2 Analysis of network parameters and test time of different algorithms
此外,還將本文的算法與其他先進的去雨算法在真實采集的含雨滴圖像上進行了測試,結(jié)果如圖8所示,可以直觀的看出,本文提出的由分組mask引導(dǎo)的網(wǎng)絡(luò)在真實雨滴的去除上效果更加好,算法的泛化性更強。
圖8 真實雨圖去雨結(jié)果Fig.8 Rain removal effect of real rain map
本文針對單幅圖像去雨滴問題存在的雨滴定位問題,提出了基于分組函數(shù)的soft mask,為神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)雨滴的位置信息提供了基準(zhǔn),提高了神經(jīng)網(wǎng)絡(luò)對雨滴定位的準(zhǔn)確性,以引導(dǎo)后續(xù)的去雨滴網(wǎng)絡(luò)更靈活地確定雨滴定位以及雨滴的污染程度,從而達到更好的去雨滴效果。本文的創(chuàng)新點在于將分組函數(shù)引入雨滴圖像mask的提取過程中,通過雨滴的去除,圖像的質(zhì)量得到了提高,對后續(xù)進行自動駕駛、刑偵中視頻或圖像檢索技術(shù)輔助偵破等機器視覺相關(guān)應(yīng)用的預(yù)處理過程做了基礎(chǔ)性貢獻。未來我們將在基于分組mask的雨圖空間注意力提取網(wǎng)絡(luò)的基礎(chǔ)上,提高去雨滴算法恢復(fù)背景的性能,并進一步考慮雨滴與雨紋的聯(lián)合去除算法的研究。