袁 園,吳 文,萬 毅
(1.新疆理工學(xué)院信息工程系,新疆阿克蘇 843100;2.溫州大學(xué)電氣與電子工程學(xué)院,浙江溫州 325035)
(*通信作者電子郵箱1119764335@qq.com)
受到光源的遮擋,日常生活中的多數(shù)場景均存在著陰影。陰影能保存場景動態(tài)及其對象的重要信息,如建筑物和植被區(qū)檢測[1]、通過衛(wèi)星圖像中的陰影對云進行定位[2];另一方面,陰影同樣是誤差和不確定性的主要來源,如動態(tài)目標(biāo)跟蹤任務(wù)中,陰影可能被誤標(biāo)記為目標(biāo)[3]。因此,識別圖像中的陰影能顯著提高諸多視覺任務(wù)的性能。陰影的形狀、亮度取決于光源的強度、方向、顏色以及遮擋物的幾何形狀和反照率,根據(jù)陰影的強度,可將陰影分為硬陰影和軟陰影。硬陰影具有較為清晰的陰影邊界,而軟陰影常在光源強度較低時產(chǎn)生,陰影邊界模糊。已有的大多陰影檢測方法,常常局限于硬陰影的檢測。而相較于視頻陰影檢測,單幅圖像陰影檢測因缺少前后幀的相關(guān)信息,顯得更具有挑戰(zhàn)性。
傳統(tǒng)陰影檢測方法大多建立于陰影像素的亮度與非陰影像素不同的基礎(chǔ)上[4-5]。此外,文獻[6]基于統(tǒng)計學(xué)習(xí)方法,首先將圖像分成多個圖像塊,然后使用最小二乘支持向量機(Least Squares Support Vectors Machine,LSSVM)對這些塊進行分類以得到陰影檢測結(jié)果。近年來,基于深度學(xué)習(xí)的諸多方法[7-12]以其良好的效果與運算效率迅速成為業(yè)內(nèi)標(biāo)桿。其中,文獻[7]結(jié)合條件隨機場(Conditional Random Field,CRF)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)用于提取圖像中陰影像素的局部特征。文獻[8]首次基于大規(guī)模陰影檢測數(shù)據(jù)集提出棧式卷積神經(jīng)網(wǎng)絡(luò)(Stacked CNN,Stacked-CNN),它令一個CNN 學(xué)習(xí)到的語義特征去訓(xùn)練另一個CNN并提煉陰影區(qū)域的細節(jié)。最近,文獻[9]基于條件生成對抗網(wǎng)絡(luò)(Conditional Generative Adversarial Network,CGAN)提出了一種新穎的陰影檢測的方法,該框架受益于特殊的敏感因子和對抗學(xué)習(xí)框架,可以得到較為準(zhǔn)確的陰影掩膜。文獻[10]基于對抗學(xué)習(xí)的思想,訓(xùn)練一個陰影圖像衰減器以生成額外具有挑戰(zhàn)性的圖像數(shù)據(jù)以加強陰影檢測的魯棒性。文獻[11]提出棧式條件生成對抗網(wǎng)絡(luò)(STacked Conditional Generative Adversarial Network,ST-CGAN),使用兩個CGAN 分別用于陰影檢測任務(wù)和陰影去除任務(wù),多任務(wù)相互督促以實現(xiàn)共同提升。文獻[12]基于U-Net[13],通過更改網(wǎng)絡(luò)的內(nèi)部連接保留陰影的全局的語義特征以加強模型陰影檢測的能力。
以上方法大致可分為基于自定義特征[4-6]的傳統(tǒng)機器學(xué)習(xí)方法和基于深度學(xué)習(xí)的特征學(xué)習(xí)方法[7-12]。因缺乏光源或遮擋物的先驗信息,基于自定義特征的傳統(tǒng)機器學(xué)習(xí)方法[4-6]常缺乏魯棒的自定義特征而無法準(zhǔn)確地理解陰影。經(jīng)過諸多實驗驗證,基于深度學(xué)習(xí)的諸多方法[7-12]雖然比傳統(tǒng)方法[4-6]更為準(zhǔn)確,但其通常僅在同源的測試集上才具有較好的結(jié)果。又因常見數(shù)據(jù)集中的陰影圖像大多是通過人為遮擋進行捕獲的強陰影圖像,然而陰影的形狀、場景卻不僅僅局限于此類陰影,如建筑物上的陰影,或是當(dāng)光源不夠強時投射的軟陰影,它們不具備清晰的陰影邊界。使用深度學(xué)習(xí)方法[7-12]檢測這些目標(biāo)域中的陰影圖像(目標(biāo)數(shù)據(jù)集)常常只能得到結(jié)構(gòu)不完整、鋸齒狀的陰影檢測結(jié)果。
為了解決上述問題,本文提出一種新穎的無監(jiān)督域適應(yīng)的陰影檢測對抗學(xué)習(xí)模型。該模型在源數(shù)據(jù)集上使用監(jiān)督學(xué)習(xí)進行訓(xùn)練,但對于未曾接觸的目標(biāo)數(shù)據(jù)集,因考慮到復(fù)雜的人為標(biāo)注過程從而進行無監(jiān)督的域適應(yīng)學(xué)習(xí),以使得模型在目標(biāo)數(shù)據(jù)集上具有同樣的性能,從而加強模型的魯棒性。具體的,首先在模型特征提取的過程中結(jié)合多層特征域適應(yīng)策略,最小化源域和目標(biāo)域之間的數(shù)據(jù)偏差;其次,提出邊界對抗分支,使用邊界生成器和邊界判別器以加強軟陰影檢測結(jié)果的邊界結(jié)構(gòu)性;最后,引入熵對抗分支以降低模型處理目標(biāo)陰影圖像中陰影邊界區(qū)域的不確定性,進一步得到邊界平滑、準(zhǔn)確的陰影掩膜。
不同的“域”實則為不同的數(shù)據(jù)集,域適應(yīng)的過程旨在使一個模型去適應(yīng)多個不同的“域”,其目的是為了使模型可以更好地泛化到其他的數(shù)據(jù)集。諸多基于監(jiān)督學(xué)習(xí)的深度學(xué)習(xí)方法[7-12]雖然可以為陰影自動檢測帶來顯著的性能提升,但因跨域差異(Cross-domain Discrepancy)[14]導(dǎo)致模型在目標(biāo)數(shù)據(jù)集上卻無法得到令人滿意的結(jié)果。如圖1 所示,通過諸多實驗與分析,文獻[11]在源數(shù)據(jù)集ISTD 上訓(xùn)練的深度網(wǎng)絡(luò)通常僅能為其同源的測試圖像生成較為準(zhǔn)確的陰影結(jié)果,當(dāng)應(yīng)用于目標(biāo)數(shù)據(jù)集SBU[8]時,陰影檢測結(jié)果邊界結(jié)構(gòu)性較差,見圖1(b)。而所提模型不僅在源數(shù)據(jù)集上表現(xiàn)優(yōu)異,在目標(biāo)數(shù)據(jù)集上依然具有較好的檢測能力,見圖1(c)。相較于這些方法[7-12],當(dāng)面臨新鮮的數(shù)據(jù)集時,所提方法不再需要繁瑣的人工標(biāo)注工作為訓(xùn)練數(shù)據(jù)提供相應(yīng)的陰影標(biāo)簽數(shù)據(jù),而是采取無監(jiān)督學(xué)習(xí)的方式,旨在使得模型在面臨新數(shù)據(jù)集時可以輕易地實現(xiàn)域適應(yīng)從而獲得與源數(shù)據(jù)集同樣準(zhǔn)確的陰影檢測結(jié)果。
圖1 跨域差異分析Fig.1 Analysis of cross-domain discrepancy
所提陰影檢測框架如圖2 所示,對于源域和目標(biāo)域中的陰影圖像,首先分別采用單獨的特征提取通道,并且從低層到高層逐一采用域判別器用于判斷當(dāng)前特征的所屬域標(biāo)簽;然后分別構(gòu)建兩條生成對抗分支,其中邊界對抗分支用于加強目標(biāo)數(shù)據(jù)集中軟陰影圖像的檢測能力,而熵對抗分支可以進一步抑制陰影邊界處的不確定性,從而得到邊界平滑、準(zhǔn)確的陰影掩膜。得益于完善的目標(biāo)函數(shù)以及特殊的網(wǎng)絡(luò)連接,兩個任務(wù)相互約束、相互促進以實現(xiàn)精準(zhǔn)的跨域陰影檢測。
圖2 本文網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Architecture of proposed network
傳統(tǒng)的域適應(yīng)模型[15]僅在最后一個卷積層中校正不同域之間特征分布從而實現(xiàn)全局域適應(yīng)。然而,該方法忽略了低層特征的重要性,使得某些域敏感的局部特征削弱了域適應(yīng)模型的泛化能力;其次,因存在不可轉(zhuǎn)移的層[16-17],單個的域分類器難以消除源域和目標(biāo)域之間的數(shù)據(jù)偏差。受到文獻[18]的啟發(fā),以源域和目標(biāo)域中的陰影圖像為輸入,在圖像編碼過程中,編碼器中的每個卷積層均有相對應(yīng)的特征圖譜,提取編碼器中多個中間層的輸出特征圖譜,在源域和目標(biāo)域的編碼器之間的每一個卷積層上構(gòu)建相應(yīng)的圖像域分類器來督促中間層的特征匹配,旨在讓兩個不同的編碼器在不同的數(shù)據(jù)集下依然具有相似的特征提取過程以達到域適應(yīng)的目的,其目標(biāo)函數(shù)[18]如式(1)所示:
其中:Di為第i個圖像的域標(biāo)簽;表示第i張圖像中的坐標(biāo)為(o,p)的像素在第k層上特征圖譜的激活值;fk是其相應(yīng)的域分類器。
分層域適應(yīng)成分保證了兩個域之間的中間特征具有相似的分布,從而加強適應(yīng)模型的魯棒性。在陰影檢測過程中,消除域間的數(shù)據(jù)偏差能提高模型在目標(biāo)數(shù)據(jù)集上陰影檢測的準(zhǔn)確度。如圖3 所示,圖3(a)為目標(biāo)域[8]中的兩幅陰影圖像;圖3(b)為標(biāo)簽數(shù)據(jù);圖3(c)為全局域適應(yīng)的陰影檢測結(jié)果;圖3(d)為分層域適應(yīng)的陰影檢測結(jié)果。對比圖3(c)和圖3(d),使用分層域適應(yīng)特征提取之后,模型得到了較好的泛化,對于圖像中與陰影毗鄰的不同顏色的文字具有更精準(zhǔn)的檢測能力。
圖3 分層域適應(yīng)對于陰影檢測效果的影響Fig.3 Effect of multi-level domain adaptation on shadow detection
已有的陰影檢測數(shù)據(jù)集[8,12]因采集手段單一(在強光源下使用各種形狀的遮擋物進行遮擋)而缺乏場景豐富的軟陰影圖像。受光源強度的影響,軟陰影圖像因陰影較淺不具備清晰的陰影邊界。而現(xiàn)有的諸多深度學(xué)習(xí)方法[7-12],均無法在軟陰影圖像上得到較好的檢測結(jié)果。如圖4 所示,對于目標(biāo)數(shù)據(jù)集中的軟陰影圖像,僅校正特征分布無法得到邊界結(jié)構(gòu)化的檢測結(jié)果,見圖4(b)。
為解決上述問題,構(gòu)建邊界對抗分支加強模型在目標(biāo)數(shù)據(jù)集中預(yù)測結(jié)果的邊界結(jié)構(gòu)性,邊界對抗分支旨在為陰影圖像生成如圖4(c)中的陰影邊界圖像,然后基于對抗學(xué)習(xí)的原理,使用判別器進一步提升生成圖像的質(zhì)量。有了陰影邊界的初步定位,后續(xù)的陰影檢測結(jié)果將更加具有邊界結(jié)構(gòu)性,最終提升軟陰影的檢測能力。假設(shè)源數(shù)據(jù)集為S,其標(biāo)簽數(shù)據(jù)為單通道的真實陰影掩膜ys,而目標(biāo)數(shù)據(jù)集T無標(biāo)簽數(shù)據(jù)。首先,生成器Gb擬合圖像中的陰影邊界,分別為源陰影圖像xs和目標(biāo)陰影圖像xt生成邊界預(yù)測結(jié)果Gb(xs)和Gb(xt),其可視化效果見圖4(c);其次,將判別器Db旨在判斷該邊界來自于源數(shù)據(jù)集還是目標(biāo)數(shù)據(jù)集。加入邊界對抗分支之后,對于目標(biāo)域中的軟陰影圖像,其結(jié)果已經(jīng)可以準(zhǔn)確地標(biāo)識陰影區(qū)域,見圖4(d)。
圖4 邊界對抗分支分析Fig.4 Analysis of boundary-driven adversarial branch
對于帶有域標(biāo)簽的源域和目標(biāo)域數(shù)據(jù)集,邊界判別器Db分別對Gb(xs)和Gb(xt)進行判斷和懲罰,見式(2):
其中:LB為二元交叉熵損失,其定義為而N 和M 分別為源數(shù)據(jù)集和目標(biāo)數(shù)據(jù)集中圖像的數(shù)量。
而生成器的損失函數(shù)LGb由源數(shù)據(jù)集上的平均絕對誤差損失項以及目標(biāo)數(shù)據(jù)集上的對抗損失項加權(quán)組合而成,見式(3):
邊界對抗分支之后,若直接使用額外的陰影掩膜生成器,會為目標(biāo)數(shù)據(jù)集生成鋸齒狀的陰影檢測邊界(圖4(b))。受到文獻[19]的啟發(fā),陰影掩膜結(jié)果在陰影邊界附近的區(qū)域具有較高的熵值(不確定性),會導(dǎo)致鋸齒化邊界現(xiàn)象。
為了抑制不確定的預(yù)測結(jié)果,熵對抗分支首先為陰影圖像生成如圖5(b)中的陰影概率圖譜,其標(biāo)識每個像素是陰影的概率?;谠摳怕蕡D譜,進而使用香農(nóng)熵將概率圖譜轉(zhuǎn)化為熵值圖譜,強制目標(biāo)域熵值圖譜和源域熵值圖譜盡量相似,從而縮減模型在目標(biāo)和源數(shù)據(jù)集上的效果差異,最終以對抗學(xué)習(xí)的思想提高生成圖像的質(zhì)量。熵值圖譜中的高熵值只應(yīng)該圍繞在陰影邊界處。而合理的熵值分布對應(yīng)著邊界平滑的陰影檢測結(jié)果,見圖5(c)。
圖5 熵對抗分支分析Fig.5 Analysis of entropy-driven adversarial branch
掩膜生成器Gm分別為源圖像和目標(biāo)圖像生成掩膜預(yù)測結(jié)果Gm(xs)和Gm(xt)。給定輸入圖像x的掩膜預(yù)測結(jié)果p,使用香農(nóng)熵可計算熵值圖譜(圖5(c)),如式(4)所示:
熵判別器De旨在校準(zhǔn)E(xs)與E(xt)的分布。與邊界驅(qū)動的對抗學(xué)習(xí)類似,熵判別器De判斷熵值圖譜是來自于源域還是目標(biāo)域,其目標(biāo)函數(shù)如式(5)所示:
生成器的損失函數(shù)LGm包含由源數(shù)據(jù)集上的像素級的交叉熵損失以及目標(biāo)數(shù)據(jù)集上的對抗損失項目加權(quán)組合而成,見式(6):
因所提網(wǎng)絡(luò)并未集成任何注意力模型成分,理論上任何編碼-解碼的網(wǎng)絡(luò)結(jié)構(gòu)均可以適用于所提框架。在本文中,所提網(wǎng)絡(luò)的生成器采用文獻[20]中的U-Net 結(jié)構(gòu),U-Net 結(jié)構(gòu)由一個收縮通道和一個擴張通道組成,其中收縮通道用于提取語境特征,而與其對稱的擴張通道則用于圖像上采樣以得到一幅生成圖像。所提網(wǎng)絡(luò)的判別器同樣與文獻[20]一致,其包含多個卷積塊,每個卷積塊中,卷積層都緊跟著批標(biāo)準(zhǔn)化[21]和激活函數(shù)LeakyReLU。判別器的最后一層為一個Sigmoid函數(shù),其輸出為某對圖像為真的概率值。受到文獻[15,18]的啟發(fā),在訓(xùn)練過程中,使用交替梯度更新策略優(yōu)化生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)。首先優(yōu)化邊界和熵判別網(wǎng)絡(luò),分別最小化目標(biāo)函數(shù)式(2)和式(5);其次優(yōu)化生成器網(wǎng)絡(luò),優(yōu)化生成損失(式(3)和式(6))以及分層域適應(yīng)損失(式(1)),生成器網(wǎng)絡(luò)的整體損失函數(shù)如式(7)所示:
所提方法的實驗軟件平臺以Python程序設(shè)計語言為編碼核心,輔以第三方TensorFlow 包搭建網(wǎng)絡(luò)結(jié)構(gòu)。其硬件實驗平臺建議在內(nèi)存為16 GB、八核Inter I7 CPU、NVIDIA GTX 1080Ti 的Ubuntu 18.04 操作系統(tǒng)上。在網(wǎng)絡(luò)中,將LReLU 的斜率設(shè)置為0.25,使用Adam 優(yōu)化目標(biāo)函數(shù)。將數(shù)據(jù)集中286 ×286 的圖像裁剪成多個256 ×256 的子圖像并翻轉(zhuǎn)以增大訓(xùn)練數(shù)據(jù)量。通過大量實驗,超參數(shù)初始化如下:λ1=0.5,λ2=0.5。如圖6 所示,展示了源數(shù)據(jù)集[11]中三組不同的訓(xùn)練圖像,這三組圖像分別代表了簡單幾何邊界陰影、文字混合陰影以及復(fù)雜結(jié)構(gòu)陰影圖像。場景多樣的訓(xùn)練數(shù)據(jù)集更有利于網(wǎng)絡(luò)模型的泛化。
圖6 網(wǎng)絡(luò)訓(xùn)練所需的數(shù)據(jù)集Fig.6 Datasets for network training
圖6中:圖6(a)和圖6(b)用于訓(xùn)練熵對抗分支;而圖6(a)和圖6(c)用于訓(xùn)練邊界對抗分支。其中,圖6(c)中的陰影邊界標(biāo)簽數(shù)據(jù)是基于圖6(b)中的陰影邊界內(nèi)外拓展3個像素得到窄寬帶(經(jīng)過諸多實驗驗證,跨度為6 個像素的窄寬帶區(qū)域足以囊括大部分的軟陰影邊界,而寬度過大則會影響結(jié)果的精度)。
將所提方法與三種最新的陰影檢測方法[10-12]進行對比,其中文獻[10]提出一種名為A+D Net 的網(wǎng)絡(luò)結(jié)構(gòu),其中A Net旨在原訓(xùn)練數(shù)據(jù)集的基礎(chǔ)上生成額外符合物理光照模型的陰影圖像以增強模型對不同類型陰影的泛化能力,而D Net則負責(zé)檢測圖像中的陰影;文獻[11]基于兩個CGAN 構(gòu)建一種名為棧式條件生成對抗網(wǎng)絡(luò)(STack Condition Generative Adversarial Network,ST-CGAN)的網(wǎng)絡(luò)結(jié)構(gòu),使用多任務(wù)學(xué)習(xí)的模式先后進行陰影檢測和陰影去除任務(wù),兩個任務(wù)之間相互學(xué)習(xí)、相互督促;文獻[12]基于傳統(tǒng)U-Net 圖像生成模型,通過更改編碼、解碼過程中的網(wǎng)絡(luò)連接來保留每個卷積層的語義信息以提高陰影檢測的精度。將所提方法與文獻[10-12]方法對ISTD 數(shù)據(jù)集進行訓(xùn)練,并在同源的ISTD 測試集上做對比分析。圖7 展示了不同方法在四幅不同陰影場景下的陰影檢測效果。對比圖7(c)、(d)、(e)、(f)可以發(fā)現(xiàn)熵驅(qū)動的對抗學(xué)習(xí)模型在源域上同樣有較大的性能提升。面對跨紋理、文字混淆、形狀不規(guī)則等較為復(fù)雜的陰影場景,同樣能得到較好的檢測結(jié)果,具有較好的魯棒性。值得注意的是,相較于文獻[11]內(nèi)部不夠完整的陰影檢測結(jié)果,同樣可以側(cè)面體現(xiàn)出邊界對抗分支的必要性。
為了驗證所提方法的跨域檢測性能,將所提方法與文獻[10-12]在SBU 數(shù)據(jù)集上做跨域?qū)Ρ葘嶒?。圖8 展示了不同方法在四幅不同陰影場景下的跨域檢測性能,第一行中,因結(jié)合了多層域適應(yīng)特征提取過程,所提方法不會將運動員的黑色短褲誤作陰影。同樣的,所提方法相較于其他兩種方法,在第三行和第四行中的軟陰影圖像中也具有較好的準(zhǔn)確度,因本文提出邊界對抗分支并結(jié)合信息熵引入熵對抗分支,使得陰影檢測結(jié)果具有較好的邊界結(jié)構(gòu)性,并且陰影邊界平滑、自然。
圖7 不同方法在源數(shù)據(jù)集ISTD上的表現(xiàn)Fig.7 Performance of different methods on source dataset ISTD
圖8 不同方法在SBU數(shù)據(jù)集上的跨域表現(xiàn)Fig.8 Cross-domain performance of different methods on SBU dataset
因陰影檢測任務(wù)常需要考慮輸出結(jié)果中不同類別像素間的不平衡分布情況[12],因此本文并不使用文獻[22]中的均方根誤差(Root Mean Squared Error,RMSE)作為衡量指標(biāo),而選用平衡誤差率(Balance Error Rate,BER),如式(8)所示:
其中:TP、TN、FP以及FN分別為正確檢測的陰影像素、正確檢測的非陰影像素、錯誤檢測的陰影像素以及錯誤檢測的非陰影像素。同樣,本文也考慮到不同區(qū)域的平均像素的錯誤率(Per pixel Error Rate,PER)。
表1 展示了圖7中各個方法使用ISTD 數(shù)據(jù)集所做的同域檢測分析。在BER 的測試數(shù)據(jù)上,所提方法比較為先進的CPNet(文獻[12]方法)降低約10.5%。表2展示了圖8中各個方法使用SBU訓(xùn)練集所作的跨域檢測分析。
表1 各個方法在ISTD數(shù)據(jù)集上的源域陰影檢測性能Tab.1 Comparison of source domain shadow detection performance among different methods on ISTD dataset
表2 各個方法在SBU數(shù)據(jù)集上的跨域陰影檢測性能Tab.2 Comparison of cross-domain shadow detection performance among different methods on SBU dataset
將表2中的各項數(shù)據(jù)與表1進行橫向比較,可以觀察到所有方法都會出現(xiàn)性能縮減,但使用所提域適應(yīng)陰影檢測方法,在BER 的測試數(shù)據(jù)上,比CPNet 降低約18.75%,該數(shù)據(jù)可以說明所提方法具有較好的跨域檢測性能。
因已有的陰影檢測方法僅在同源數(shù)據(jù)集上才具有較好的陰影檢測性能,本文提出一種新穎的陰影檢測方法,該方法欲在目標(biāo)數(shù)據(jù)集上得到和源數(shù)據(jù)集上同樣準(zhǔn)確的檢測結(jié)果。首先,結(jié)合分層域適應(yīng)特征提取方法,在特征提取的每個卷積層后均加入域分類器,用于縮小域間數(shù)據(jù)差異,從而提升模型的魯棒性;其次,先后采用邊界對抗分支和熵對抗分支以得到邊界結(jié)構(gòu)化、平滑的檢測結(jié)果。相較于最為先進的幾種陰影檢測方法,所提方法不僅在源域上具有較大的提升,在目標(biāo)域上同樣具有優(yōu)勢。在未來進一步的研究工作中,將考慮從生成多樣性的陰影圖像數(shù)據(jù)的角度進一步提升模型的性能。