張家豪,張 娟,郎曉奇
(上海工程技術大學 電子電氣工程學院,上海 201620)
深度估計一直以來都是計算機視覺領域的一個核心問題,也是視覺感知的基本組成部分,能為圖像理解、目標識別、機器人抓取等任務提供物體深度信息.以往場景的深度圖一般通過深度相機或者激光雷達來獲取,但這類能直接獲取場景深度的傳感器目前還存在價格高昂、分辨率較低、使用場景有限等問題.此外場景深度還可以通過多視角幾何學從多個相機中推算出來,但是要建立一個立體相機系統(tǒng)需要大量復雜的校準、矯正和同步計算,因此實際運用較少[1].近些年出現了不少依靠深度學習算法只使用單目RGB相機實現場景深度估計的算法[2-5].這類算法通過大量成對的圖像-深度數據集進行訓練,克服了傳統(tǒng)算法需要多個視圖才能恢復場景深度的局限性,并且恢復深度圖像質量較高,物體輪廓信息更清晰,成為了深度估計領域的熱門研究方向.然而在計算機視覺領域研究中常假設光線在傳輸過程中是不受任何干擾的,這種假設在正常天氣條件下是合理的.然而在惡劣天氣情況下,如常見的雨、雪、霧等都會干擾光路的傳輸,使采集的圖像出現退化現象,給目標檢測、深度估計、語義分割等計算機視覺算法帶來了額外的挑戰(zhàn)[6].尤其在雨天場景下,雨水會對單目圖像的深度估計任務產生極大的干擾,由于雨線會對圖像產生密集的遮擋且接近相機,因此雨天場景下的深度圖不僅邊緣不清晰,還會將原本處于遠處的物體誤認為在近處.如圖1所示,現有深度估計算法在雨天場景下深度圖質量嚴重下降.
圖1 雨天與正常天氣下深度估計結果對比Fig.1 Comparison of depth estimation results in rainy and normal weather
單目RGB圖像的深度估計算法所需硬件價格低廉、應用場景廣泛,因此吸引了眾多研究者的關注.Eigen等人[7]首次使用卷積神經網絡,通過多尺度結構分別對全局深度信息和局部細節(jié)進行優(yōu)化,實現了端到端的深度估計.Chen等人[8]提出了一種通過金字塔殘差網絡結構實現多尺度特征融合的方法,通過自適應特征融合模塊融合不同尺度的有效特征,實現了從全局場景到局部細節(jié)殘差的逐步細化恢復.文獻[9]將結構化注意力和多尺度條件隨機場(Condition random field,CRF)模型引入編碼網絡,進一步提升了算法精度.這類有監(jiān)督單目深度估計方法目前精度較高,但仍然存在一些缺陷,其中惡劣天氣場景下魯棒性較差限制了該類算法的實用價值,惡劣天氣場景下的深度估計依然是一個具有挑戰(zhàn)性的難題.自監(jiān)督學習深度估計算法由于不需要成對的訓練樣本,因此進一步擴展了使用場景.Aletti等人[10]結合對抗生成網絡建立一個無監(jiān)督單目深度估計框架,通過判別器對重建深度圖進行鑒別和約束,取得了不錯的效果.自監(jiān)督算法拓展了深度估計算法的應用場景,但由于缺乏真實的監(jiān)督信號,恢復結果的質量還有待提高.
本文對目前基于深度學習的深度估計算法在雨天情況下效果欠佳的原因進行了分析,通過研究發(fā)現大多數基于深度學習的深度估計算法和其他圖像任務一樣通過控制標準卷積的步長或者進行池化操作來改變網絡的感受野.這種方法針對圖像分割、目標識別等粗粒度視覺任務能取得不錯的效果,但深度估計算法需要對每個像素的值進行精確估計,然而擴大步長、池化等操作會丟棄大量特征信息,大幅降低需要細粒度表示任務模型的性能[11].有雨場景下不同深度的雨線顏色接近,此時如果在深度估計網絡中大量使用最大池化操作,就會導致局部的深度信息丟失,局部位置在不同深度的圖像塊計算得到相似的特征值,場景深度圖中各類物體邊緣模糊,造成如圖1所示預測結果.此外,采用編碼器-解碼器網絡架構的單目深度估計算法中,解碼器使用的傳統(tǒng)上采樣策略[12,13]也很難保留足夠的細節(jié)信息用來恢復場景的準確深度.
針對雨天場景本文提出使用視覺Transformer結構組建編解碼網絡提取不同尺度的特征,并通過跳躍連接在不同層級和解碼器部分共享信息,實現長距離上下文信息共享.不同于普通的編碼器-解碼器結構通過標準卷積核對圖像進行降采樣,在編碼器網絡中本文利用補丁合并層(Patch Merging Layer)對圖像特征進行降采樣,補丁合并層在增加一定運算量的情況下能有效防止下采樣過程中的特征丟失;編碼-解碼網絡中還引入了Swin Transformer[14]結構,通過多頭注意力機制整合不同尺度的空間和語義信息,該結構能通過融合各位置的語義和空間信息對每個像素進行約束和分類,提高了雨天場景下物體邊緣信息的準確性;編碼器和解碼器在各級尺度間加入了跳躍連接,進一步減少網絡下采樣帶來的空間信息損失;實驗結果表明本文方法在雨天場景下的深度估計結果優(yōu)于現有的單目深度估計算法.此外本文還設計了以場景深度圖作為先驗知識的輕量級去雨網絡,去雨網絡中通過深度信息引導的全局注意力模塊(Depth-guide Global Attention Module,DGGA)來捕捉深度差異較小的不同空間位置的關聯(lián)性以及各位置圖像特征的關聯(lián)性.通過深度信息指導不同深度位置圖像的恢復.在公開合成和真實數據集上的表現驗證了本文去雨算法的有效性,去雨網絡能夠有效移除雨天場景中存在的雨痕和霧氣.本文提出的雨天場景下聯(lián)合的深度估計與清晰化的整體網絡結構見圖2.
總的來說本文主要有以下創(chuàng)新:
1)針對現有單目深度估計算法在雨天場景下精度較低問題,提出了聯(lián)合的深度估計和圖像清晰化算法,不僅能夠對雨天的場景深度進行準確預測,還能根據深度信息還原出紋理清晰、無雨線殘留的清晰圖像.
2)將目前深度學習領域效果最佳的Transformer結構應用于單目深度估計網絡,改善了現有深度估計算法中存在的特征丟失問題,通過自注意力機制加強了圖像中各類像素的語義分類,降低了深度圖的邊緣誤差,在雨天場景下的表現優(yōu)于現有算法.
3)提出了一種基于圖像深度信息先驗的去雨算法,利用深度信息引導全局注意力模塊進行雨天圖像的恢復,恢復結果紋理清晰銳利,去雨效果顯著.
單目深度估計算法的目的是利用單張RGB圖像對場景中各個位置的深度信息進行預測,目前的研究主要是通過深度學習網絡對圖像特征進行表示學習,建立場景特征和深度的映射關系,主要采用多尺度結構、注意力機制、編碼-解碼網絡等結構加強對場景全局特征和局部特征的語義學習.但傳統(tǒng)的深度估計網絡擴大感受野的方法影響了場景深度的邊緣輪廓和細節(jié)恢復效果,還需要進一步改進.本文通過transformer結構對輸入特征進行保留位置信息的多尺度特征編碼,避免了下采樣操作帶來的特征丟失問題,還能高效地對場景的全局信息進行提取,網絡中Swin Transform Block(STB)的多頭自注意力機制對不同尺度的重要特征進行了重點關注,增強了對邊緣語義信息的學習.
圖2左側部分是本文提出的U型transformer架構的深度估計網絡,模型主要包含了編碼、解碼、跳躍連接三大部分.其中編碼、解碼網絡中最主要的特征提取結構是STB,STB的加入讓網絡具有全局注意力能力的同時還降低了算法的時間復雜度.編碼器網絡首先將輸入尺寸為H×W×3的圖像轉化成包含位置信息的有序嵌入塊,每個嵌入塊的維度為4×4×3,隨后通過線性嵌入層將特征映射到任意維度C.轉化后的特征通過補丁合并層和STB進行降采樣和語義信息提取,減少了多尺度特征信息變換和融合過程中的特征丟失.具體來說,補丁合并層對特征降采樣的方式不同于池化操作,池化操作會丟去窗口內的大部分響應值.補丁合并層不會丟棄對窗口內其他響應,補丁合并層將相鄰補丁塊以2×2的大小進行切分,隨后在通道維度上對特征進行連接,最后通過全連接層調整通道維度.補丁合并層在增加少量運算的代價下,提高了對細節(jié)特征的響應;接著編碼器中的STB負責對不同尺度下的語義和空間特征進行表示學習.解碼器部分采用了和編碼器類似的對稱結構,通過補丁擴展層(Patch Expanding layer)和STB對特征進行上采樣和表示學習,并最后輸出場景深度圖.其中補丁擴展層通過對特征維度進行重組,將特征上采樣為輸入特征的2倍大小,編碼器和解碼器對應尺度之間通過跳躍連接實現特征融合,緩解下采樣造成的空間特征損失.最后的補丁擴展層將特征進行4倍上采樣還原到輸入分辨率W×H,輸出像素級的深度估計結果.網絡中的重要特征提取結構STB見圖3.
圖3 Swin transformer block 具體結構Fig.3 Detailed structure of swin transformer block
STB與傳統(tǒng)的多頭自注意力(multi-head self-attention,MSA)模塊的不同之處是采用了不同的窗口切分方式,通過滑動窗口操作實現了跨窗口的通信,提高了傳統(tǒng)MSA的建模能力.如圖3所示STB由歸一化層(LN)、transformer層以及多層感知機(MLP)構成,其中transformer部分分別使用了窗口多頭注意力(W-MSA)和移位窗口多頭注意力(SW-MSA),STB的工作機制如公式表示:
(1)
(2)
(3)
(4)
(5)
其中Q,K,V∈M2×d分別代表query,key和value矩陣,M2和d是窗口內的嵌入塊特征數量和key的維度,B是一個重采樣的偏置矩陣.
根據RGB圖像進行深度估計是一個回歸模型,根據深度圖的特性,本文損失通過最小化深度估計結果和真實標簽的差異來優(yōu)化重建深度圖的質量.本文損失函數由3種損失加權得到,損失函數公式見公式(6):
(6)
(7)
(8)
其中g是梯度求導函數.
最后一部分是Lssim損失,SSIM主要評價的是圖像在結構上是否相似,相比于像素間損失,對高頻細節(jié)和邊緣更加敏感,能讓預測結果在全局視覺效果上更接近人眼的真實視覺結果.當SSIM值接近1時表示兩張圖像在結構上極為相似,反之則極為不同.利用這一特性本文設計的基于SSIM的結構性損失函數如公式(9)所示:
(9)
其中fssim是相似度函數,δ是一個極小正值,防止除零錯誤.
Garg[15]等人對雨天場景進行分析,發(fā)現可以利用場景的深度函數來描述雨線在不同場景深度下的遮擋和霧效應,Garg指出距離相機較近的物體主要受雨線遮擋的影響,距離較遠的位置主要受到雨滴產生的霧氣效應的影響,雨天場景下不同位置的具體情況與圖像的深度信息存在關聯(lián)性.受到基于雨天物理模型中場景深度和雨線關系的啟發(fā),本文將雨線殘差層R(x)定義為兩部分組成:
R(x)=Rspace(x)⊙tr(x)
(10)
其中Rspace(x)是雨線的空間分布強度信息,tr(x)是場景的雨線強度圖,tr(x)取決于場景的深度信息d(x),tr(x)的強度隨d(x)的增加而減小.為了捕捉場景深度和雨天圖像特征對應的全局關聯(lián)性,本文設計了圖4所示的深度引導的全局特征注意力模塊.
圖4 深度的引導的全局特征融合模塊Fig.4 Depth-guide global attention module
該模塊的輸入是預測的場景深度圖,首先通過CD計算深度圖各位置之間的全局深度信息關系圖RD,CD操作先將特征圖變換成一維向量,隨后計算每個位置之間在對數空間的距離,Ry計算公式如公式(11)所示:
RD[i][j]=Softmax(e-0.1×|d[i]-d[j]|)
(11)
其中d[i],d[j](i,j)∈[1,HW]是對應位置的深度值.
對于輸入的圖像特征F,本文對雨線強度在各空間位置的強度相關度進行計算,先通過3個卷積操作得到特征圖Fα,Fβ,Fθ,然后對特征圖Fα和Fβ進行CF操作得到位置關系圖RF.RD和RF二者進行矩陣相乘,并歸一化處理來計算深度和圖像特征的相關性,最后通過殘差結構和輸入特征相加獲得DGGL的輸出Z:
Z=Wz(g?Softmax(RD⊙RF))+F
(12)
(13)
其中Ll1是L1距離損失,Lp是感知損失.
為了對本文提出算法的效果進行檢驗,本文在公開的RainCityscapes[16]數據集上進行了模型的訓練及測試.RainCityscapes包含了來自Cityscapes數據集中成對的清晰圖像、深度圖以及合成雨天圖像.在和其他去雨算法比較去雨效果時,選擇了公開的合成數據集和一個真實世界數據集.
本文算法使用Pytorch進行部署,GPU為NVIDIA GTX 2080,處理器為Intel Xeon CPU E5-2603,內存32GB,實驗平臺為Ubuntu16.04.在實驗中訓練數據的分辨率為256×256,使用Adam優(yōu)化器進行梯度下降優(yōu)化,批大小為4.深度估計網絡中超參數設置為α=0.01,β=0.5,θ=1,去雨網絡中的超參數設置為λ=0.04,初始學習率為0.0005,使用余弦退火策略來控制學習率的下降,在數據集上進行1200輪次訓練,隨后在對應測試集上進行測試.
為了客觀評價深度估計網絡的性能,本文使用了深度估計算法常用的5個評價指標,其中包含4個距離誤差指標:均方根誤差(RMSE)、均方根對數誤差(RMSE log)、絕對相對誤差(Abs Rel)、平均相對誤差(Sq Rel),以及不同閾值的準確率(δ).去雨網絡采用了PSNR和SSIM兩種客觀指標和現有去雨算法進行公平對比.
為了驗證本文提出算法中深度估計算法的有效性,將本文算法和其他8種先進的單目深度估計算法在RainCityscapes數據集上進行了量化比較.不同于Mondepth2[17]中在編碼器網絡中使用了池化層對提取特征進行降采樣,本文通過STB對特征進行降采樣和編碼,STB通過補丁合并層避免了進行多尺度變換時對窗口內部分響應的丟棄,減少了特征的丟失.STB還通過多頭注意力機制對加強了對場景中語義信息和空間信息的約束,使深度圖結果中各物體的邊緣輪廓更加清晰,場景中各類物體深度信息更具有連續(xù)性.此外本文在transformer結構中使用了跳躍連接加強了對上下文信息的利用,實現了不同尺度語義特征的融合.不同尺度特征的充分提取和融合讓本文算法在雨天場景下各類物體的輪廓更加清晰、細節(jié)更加豐富,深度信息更加準確.因此如表1中實驗結果所示,本文算法在同類算法中表現更好,尤其在雨天場景下對物體的邊緣輪廓的估計更加準確,各項誤差相比于其他算法均有降低,不同閾值下的精度也有提升.
表1 不同深度估計算法在RainCityScapes測試集上結果對比Table 1 Comparison with state-of-the-art methods on RainCityScapes test set
圖5是本文和Xu[19]、GeoNet[20]、Mondepth2[17]算法在雨天場景下深度圖的視覺結果對比圖,圖中可以觀察到由于受到雨線的影響,Xu和GeoNet的預測結果在雨線密集區(qū)域出現了明顯的同化現象,錯誤地將雨線遮擋部位誤認為深度相同的區(qū)域,物體輪廓信息模糊、邊緣細節(jié)較差.Mondepth2算法在雨天場景下表現較好,在雨天場景下依然能對中遠距離的物體進行有效識別,但對于小目標物的識別效果較差.
圖5 雨天場景下各算法深度估計結果對比Fig.5 Comparison of depth estimation results of different methods in rainy weather
本文算法相比其他3種算法在雨天場景下受雨線影響最小,其中編碼器部分的結構以transformer為主體,顯著改善了算法在不同尺度下對上下文信息的利用率,使得本算法在雨天場景下在依然可以準確捕捉到物體的清晰輪廓信息,在視覺效果上優(yōu)于其他算法.從圖5的前兩幅圖中可以看出對于雨天圖像中路邊的樹木以及路燈等小目標物,Xu的預測結果由于受到雨水的影響,物體輪廓不夠清晰,深度信息有部分缺失,GeoNet和Mondepth2則基本沒有估計出樹木和路燈等小物體的深度信息.本文采用的STB能有效減少網絡中特征丟失的問題,因此對場景中小物體的深度信息估計準確度更高.圖5最后一列是本文根據深度估計結果通過去雨子網絡實現的去雨結果,從圖中可以觀察到相比于輸入圖像,經過去雨處理之后,圖像中近處的雨線和遠處的霧都有了不同程度地減少,提高了目標在惡劣天氣情況下的辨識度,改善了目標檢測、語義分割等任務在惡劣天氣下的魯棒性.
表2是本文算法和現有8種去雨算法在去雨數據集Rain100H[24]、Rain100L[24]上的表現,去雨網絡部分是先將聯(lián)合的深度估計和去雨網絡在RainCityScapes數據集上進行預訓練,隨后凍結深度估計網絡權重,然后在相應的去雨數據集上對網絡進行fine-tune.表2實驗結果表明本文相比于其他算法在去除雨紋方面有較大優(yōu)勢.例如在Rain100L上相比于PreNet[25]和MSPFN[26],PSNR分別提高了2.98dB和7.27dB,在SSIM上比MSPFN提高了6%,類似地提升在Rain100H數據集上也有體現.這表明本文算法對不同密度、大小、速度類型雨線都能夠進行有效捕捉,將雨天圖像處理成紋理清晰、無雨水遮擋的干凈圖像.此外本文的去雨網絡此外考慮到Rain100H和Rain100L都是合成數據集,并沒有考慮在真實場景下雨天也會有霧的存在.因此在數據集上的表現并不能完全代表實際場景中的表現,本文還將去雨算法在真實場景中進行了測試,從圖6中可以看出相比于沒有圖像深度信息引導的其他去雨算法,本文以雨天場景下的物理模型為依據,利用圖像的深度信息作為先驗,不僅可以去除場景中的雨線還能減弱雨天場景下霧的影響.真實場景下本文算法結果中的雨線殘留最少,并且有效保留了原有圖像的紋理信息,畫面中的噪點最少,畫面更加純凈.
表2 和其他去雨算法在Rain100H/L測試集上對比結果Table 2 Comparison with state-of-the-art methods on Rain100H/L testset
圖6 真實場景下各算法去雨結果對比Fig.6 Comparison of rain removal results of different methods in real scenarios
為了驗證本文提出算法的有效性,針對雨天深度估計網絡中的上采樣方法、跳躍連接結構進行了消融實驗,去雨網絡中則對深度信息的引導作用以及本文提出的DGGA模塊在RainCityscapes數據集上進行了消融驗證.
在深度估計的解碼器網絡中,本文設計了補丁擴展層來實現上采樣和特征維度的增加,為了驗證本文提出的補丁擴展層在本文解碼器網絡中的作用,分別與雙線性插值、轉置卷積方法進行了對比實驗,表3消融實驗結果表明,本文提出的上采樣方法能夠讓物體的邊緣和細節(jié)深度信息更加準確.本文中將編解碼網絡之間的跳躍連接添加在了1/4、1/8和1/16處,因此針對跳躍連接的對數也進行了消融實驗,探索跳躍連接個數對估計精度的影響.表4消融實驗結果表明隨著跳躍連接個數的增加模型性能也不斷提升.考慮到模型的大小和穩(wěn)定性,本文將連接數設置為3.
表3 不同上采樣方法消融實驗對比Table 3 Comparison of ablation experiments with different up-sampling methods
表4 跳躍連接數量消融實驗結果Table 4 Ablation study on the impact of the number of skip connection
在場景深度引導的去雨子網絡中,本文針對深度信息的引導作用以及DGGA模塊進行了消融實驗;表5中第1行是將深度信息移除后去雨網絡得到的基準結果,第2行是將深度信息作為先驗使用普通的殘差(Residual Block,RB)網絡對深度和雨線空間信息進行融合得到的去雨結果,最后一行是加入了本文提出的DGGA模塊對雨天場景下的深度信息和雨線特征進行全局特征融合后得到的結果.消融實驗結果表明深度信息的加入有助于恢復更高質量的圖像,且本文提出的深度信息與雨線特征融合方法結果的PSNR和SSIM最高,更接近真實標簽.
表5 去雨網絡消融實驗結果Table 5 Results of deraining network ablation experiment
本文提出了一種聯(lián)合的雨天場景下單目圖深度估計和清晰化算法,改進了現有深度估計算法雨天場景下魯棒性較差的問題,實現了雨天場景下的圖像清晰化.本文首先提出了一種以transformer為基礎的U型多尺度編解碼網絡,該網絡在基于單目圖像深度估計的公開數據集上的表現,驗證了本文提出深度估計算法的有效性.此外本文還基于場景深度和雨線位置之間的相關性設計了場景深度信息引導的殘差去雨網絡,實現了雨天場景下雨線和霧的移除.和其他去雨算法相比在真實場景下表現更佳.目前本文的主要工作內容是實現雨天場景下的深度估計和去雨,并未對算法的運行速度和算法復雜度進行深入研究,未來將著重算法的輕量化研究,為雨天場景下的自動駕駛、目標檢測等任務提供更多幫助.