方宏遠,姜 雪,王念念,胡群芳,雷建偉,王 飛,趙繼成,代 毅
(1.鄭州大學 黃河實驗室(鄭州大學),河南 鄭州 450001;2.上海防災救災研究所,上海 200092;3.城市安全風險監(jiān)測預警應急管理部重點實驗室,上海 200092;4.北京北排建設有限公司,北京 100071;5.深圳市博銘維技術股份有限公司,廣東 深圳 518000)
城市地下管道作為城市建設中舉足輕重的一部分,對城市發(fā)展起著至關重要的作用,主要承擔公路縱橫向排水、市政工程中供熱、處理污水凈水等任務。目前大部分地下管道設施的建設已經(jīng)初具規(guī)?;蛞殉尚停鞘邪l(fā)展中對管道的側重點也逐漸從施工鋪設轉(zhuǎn)向養(yǎng)護保修。隨著管道投入使用的年限逐步增長,初期施工的質(zhì)量不一和地面沉降等問題引發(fā)了一系列管道病害[1-3],如管道整體結構的變形和破裂、管道內(nèi)部的腐蝕與障礙物和異物插入等,這都會導致地下管道無法順利有效地發(fā)揮功能,從而影響城市運行和交通管控[4-7]。因此,定期對管道進行病害檢測和修復,保證安全性、提升管道的運行質(zhì)量十分必要。當前管道病害的檢測防治主要依賴人工檢修和機器探測,人工檢測病害的效率不一且需要從業(yè)人員有較高的水平,尤其是管道內(nèi)部光線陰暗、狹窄潮濕,技術人員更加難以進入,完成整個檢測過程往往費時費力[8-10]。相比之下使用影像設備采集管道圖片或視頻,再通過機器視覺技術處理數(shù)據(jù)會更加準確高效[11],這也是計算機圖像分析研究領域的熱點[12-15]。在實際應用中,無論是技術人員后期觀看視頻或圖片來分辨病害種類還是管道機器人實時提取圖片特征,都欠缺對物體三維立體信息的考慮,基于深度學習的單目圖像深度估計可以從二維圖像估計出三維空間一部分信息(即深度),對某些管道病害如破裂、障礙物等進行三維還原或重建,具有廣泛的應用前景。
目前已有的深度估計方法主要分為傳統(tǒng)方法[16]和深度學習方法[17]2類,傳統(tǒng)深度估計中基于線索的方法依賴于光影、紋理、遮擋或相機和場景的運動變化(structure from motion,SFM)[18-19],基于參數(shù)的方法如:劉芳等[20]加入語義信息的馬爾可夫隨機場(MRF),程婷婷等[21]提出的條件隨機場(CRF),研究者們通過學習輸入圖像與輸出深度之間的關系,分區(qū)域分層建立深度圖的模型,在計算中引入紋理、模糊、消失點等特征,取得了突破性進步。
豐富的數(shù)據(jù)集也促進了深度學習的發(fā)展,MAKE 3D(2008 年)、NYU Depth(2012 年)、KITTI(2013年)的出現(xiàn)也促使人們由傳統(tǒng)方法轉(zhuǎn)向關注全監(jiān)督、無監(jiān)督和弱監(jiān)督的深度學習方法。然而在管道方面,采集到的圖像重復率比較高,實際可用的數(shù)據(jù)量并不龐大,國內(nèi)相關研究還不充分。對于管道病害的三維重建方法主要有激光雷達掃描、機器視覺和傳感器法,吳恩啟[22]通過光影變化設計了一種檢測微細管道內(nèi)部的方法,對物體截面重建出立體輪廓。葉晶等[23]考慮傅里葉變換設計了一種基于三維成像重構小型管道內(nèi)表面的技術,盛沙等[24]提出了一項基于超聲波的管道內(nèi)部病害檢測方法也可達到同樣的效果且更為高效,Chae等[25]提出一種新型數(shù)字管道掃描技術,采用移動檢測設備進入管道內(nèi)部,對采集到的圖像數(shù)據(jù)進行失真調(diào)整并生成報告。與此類似,甘小明等[26]通過結合環(huán)形激光器和機器視覺設計出一款小型管道機器人,該設備針對管道內(nèi)部細微缺陷進行檢測,再引入相機運動估計可完成三維重建。Moraleda等[27]致力于排水管道內(nèi)部故障檢測,并提出一種測算三維空間中裂縫長度和直徑的方法,Zhou等[28]利用相機和場景變化(SFM)原理對目標進行連續(xù)跟蹤來估計單目相機的位姿,最終可以重建出管道的立體結構。
2.1.1 生成器
深度估計網(wǎng)絡采用基于通用U-Net 的Pixel2 Pixel結構,相比于傳統(tǒng)的自編碼網(wǎng)絡Auto-Encoder,U-Net增加了跳躍連接,如圖1所示。在處理圖像任務時,跳躍連接可以將低頻信息包括圖像的邊緣、輪廓、形狀、顏色和紋理直接傳輸?shù)礁邔犹卣鲌D上,很好地保留了一些低層信息。編碼器采用尺寸為256×256 的圖像作為Pixel2Pixel 的輸入,網(wǎng)格維度為(256,256,1)、初始通道為64,圖中下采樣中的箭頭表示4×4 的卷積核+ReLU+BN 的卷積操作。編碼過程每次下采樣通道數(shù)擴大2倍,一共進行3次下采樣操作直至網(wǎng)格維度為(1,1,512)。上采樣過程使用反卷積將網(wǎng)格維度(1,1,512)重新擴張到(256,256,1)再輸出,編解碼之間對應的特征圖按通道相連接,用以共享一些具體的語義信息,提高網(wǎng)絡的訓練速度。
圖1 Pixel2Pixel生成器網(wǎng)絡結構Fig.1 Network structure of Pixel2Pixel generator
2.1.2 判別器
傳統(tǒng)的GAN(generative adversarial nets)方法通常使用整個圖片作為網(wǎng)絡輸入,這樣會使得生成的圖片難以兼顧一些細節(jié)信息,整體較為模糊??梢宰⒁獾絃1、L2此類的損失函數(shù)雖然會導致部分圖片模糊,但是具有很好的提取和處理低頻信息的能力,因此Pixel2Pixel 架構使用L1loss 重建來處理低頻部分,高頻信息部分使用一種“圖像塊”的patchGAN進行學習。patchGAN 判別器基于馬爾科夫隨機場設計,即把圖像分成尺寸為n×n的圖像塊,將不同大小的patch依次輸入判別器,逐一驗證生成的圖像塊是否為真,而不需要輸入整張圖片再去判別全局是否為真。因為patchGAN 是馬爾可夫性的,不同patch大小的像素之間相互獨立,將N取不同值的判斷結果取平均值再輸出判別器,即為最終結果。已有的實驗結果表明,N越大,模型處理圖像細節(jié)紋理的效果就越好,輸出圖的整體效果也越好。當N取70 時,網(wǎng)絡訓練的參數(shù)量適中,patchGAN 判別器的處理速度最快,它只需要注重圖像局部信息,運算速度有所提升。
2.1.3 損失函數(shù)
普通GAN 的目標函數(shù)LGAN(G,D)如式(1)所示,其僅表示為真實圖像y經(jīng)過生成器(Generator)和判別器(Discriminator)的處理結果(結果分別為G、D)。而此處Pixel2Pixel架構的輸入圖像改變了,其條件GAN(cGan,ConditionGAN)的損失函數(shù)LcGAN(G,D)也需要調(diào)整,如式(2)所示引入了條件變量x,式中D(x,y)表示判別器通過觀察原始輸入圖像輪廓x和真實圖像y的判斷結果,D(x,G(x,z))表示圖像輪廓x和生成器生成的G(x)的判別結果。
除了改善傳統(tǒng)GAN函數(shù),還添加了L1正則化即LL1(G)對網(wǎng)絡進行優(yōu)化,如式(3),L1損失函數(shù)計算的是單一的絕對差,生成的圖缺乏多樣性更趨于真值ground truth,但是魯棒性強。相比于L2損失函數(shù),L1可以更有效地減少模糊,有利于生成清晰的圖像,提高輸出圖的質(zhì)量。
最終的目標函數(shù)G*如式(4),其中λ為超參量。式(4)表示在L1正則約束下生成器和判別器的maximize &minimize 博弈,生成器不斷嘗試最小化目標函數(shù)以欺騙判別器,而判別器又為了輸出最大化目標函數(shù)不斷迭代,相互牽制抗衡以此輸出最優(yōu)結果。
2.2.1 雙重估計
用來訓練和測試的圖片往往以固定分辨率輸入網(wǎng)絡,較小的分辨率可以保留圖像的整體結構,場景一致性較好,但容易錯失局部細節(jié)信息,相反較大的分辨率可以捕捉到局部細節(jié)輪廓,但場景的一致性又隨著分辨率的增大而持續(xù)降低,同時還會產(chǎn)生一部分低頻偽影。深度估計的模型和感受野都是固定的,如圖2所示,改變輸入圖像的分辨率會不同程度地影響感受野(方框標注)所能“看到”的場景和線索。為了獲得具備連續(xù)一致的場景和兼顧高頻細節(jié)的深度估計圖,boosting-monodepth設計了一個融合網(wǎng)絡,將高分辨率深度估計圖中的高頻信息整合到低分辨率深度估計圖中,形成一個兩方面都能取得較好效果的基本估計(base estimation)。此方法適用需要百萬像素級別深度圖的情景,且無需太多的計算量和運行成本。
圖2 感受野與不同分辨率圖像Fig.2 Receptive fields and images with different resolutions
圖像邊緣是影響深度估計網(wǎng)絡性能的重要因素,它與上下文線索存在一定聯(lián)系,將原始RGB 圖像進行色彩梯度閾值處理得到粗略邊緣圖,再作為上下文線索估計整個圖片的深度可取得比較不錯的效果。如圖2,感受野大小不變時,越大分辨率的圖細粒度信息越容易捕捉,但也有一定像素缺少上下文線索,場景也開始變得不連續(xù)。當感受野都能覆蓋到上下文線索時,此時的分辨率定義為R0,也是最適應圖像場景內(nèi)容的;當圖中有20%的內(nèi)容與上下文線索的距離超過感受野大小的一半時,此時的分辨率定義為R20,它也能同時保持場景的一致性和提取到豐富細節(jié)的分辨率。
提高分辨率的同時可搜索的深度線索也在變少,網(wǎng)絡可以獲得的像素信息也趨于匱乏,這樣會導致網(wǎng)絡估計的準確性降低,boosting-monodepth深度估計網(wǎng)絡基于圖像內(nèi)容自適應輸入的分辨率,低分辨率輸入取感受野的大?。ㄐ∮诟惺芤安⒉粫?yōu)化全景結構,反而會導致沒有充分利用網(wǎng)絡容量而削弱性能),高分辨輸入取R20。再通過融合網(wǎng)絡將2個深度估計結果進行合并,把R20的細粒度細節(jié)賦在低分辨率估計上,可以取得物體輪廓清晰且偽影較少的深度圖。
2.2.2 補丁估計
當圖像中某些場景比感受野的接受域更深更遠時,深度估計網(wǎng)絡難以獲得這些像素和區(qū)域周圍的信息,一味地提高輸入分辨率反而會破壞輸出深度圖的細節(jié),合適的輸入分辨率隨圖像中內(nèi)容的不同而有所差異。圖像中某些內(nèi)容豐富的地方也具備更高的上下文線索密度,因此再次利用融合網(wǎng)絡對這些“塊”進行單獨估計有利于提高最終深度圖的準確度,這種分塊估計稱為“patch estimation”。
patch的選擇主要分為2個步驟。首先按感受野的大小平鋪整個圖像,平鋪過程保證每個相鄰的patch 之間有1/3 的重疊,如圖3 所示。為了充分利用網(wǎng)絡容量,讓更多的patch搜索到足夠的上下文信息,當patch框選到的上下文線索密度小于整張圖的上下文線索密度時,此類patch可用性低,直接丟棄;當patch 框選到的內(nèi)容具有更豐富高頻的邊緣信息時,保留此類patch并將它擴大到和原始圖像尺寸相同(如圖4),這樣可以有效地提取到最具價值的像素。
圖3 補丁選擇第1步Fig.3 Step 1: Patch selection
圖4 補丁擴張第2步Fig.4 Step 2: Patch expansion
一張圖中會有多個patch,對這些patch 再依次進行雙重估計以取得邊緣清晰的局部深度圖,然后將這些結果通過融合網(wǎng)絡合并到之前的深度估計結果上,即先前由R0和R20生成的base estimation。至此已經(jīng)獲得了細節(jié)較為豐富的深度圖(Mid-DepEst),為了發(fā)揮出網(wǎng)絡的最大效能,最后能呈現(xiàn)出完整連續(xù)且像素過渡柔和的圖像,再將Mid-DepEst 和base estimation 通過融合網(wǎng)絡,整合出最終的深度估計圖,全部過程一共進行了3次合并,整個技術路線流程如圖5。
圖5 技術路線Fig.5 Technical route
以圖形、紋理和顏色等信息為源數(shù)據(jù)的計算機視覺依賴大量的圖片來訓練網(wǎng)絡,基于單目圖像的深度估計分為無監(jiān)督、有監(jiān)督和自監(jiān)督(弱監(jiān)督)這幾類。其中有監(jiān)督學習的訓練集是大量帶有深度真值的RGB-D圖像集,此類數(shù)據(jù)集獲取難度較大且可采集到的數(shù)據(jù)量有限,網(wǎng)絡計算難度也較高,相比之下自監(jiān)督更靈活且使用的圖像無需帶有深度標簽。深度估計方面目前應用最廣泛的公共數(shù)據(jù)集有3種情形,室內(nèi)場景如NYU Depth V2數(shù)據(jù)集;室外場景包括KITTI、NUScenes、MAKE 3D、CityScapes;合成數(shù)據(jù)集如Scene Flow。本文使用KITTI數(shù)據(jù)集來訓練神經(jīng)網(wǎng)絡,該數(shù)據(jù)集由德國卡爾斯魯厄理工學院和豐田美國技術研究院共同開發(fā),主要用于雙目立體匹配、單目深度估計、光流、3D目標檢測和跟蹤等。采集數(shù)據(jù)的設備為一輛搭載彩色相機、灰度相機、激光掃描儀和GPS 導航系統(tǒng)等各類傳感器的汽車,訓練集包含39 810 張圖片,驗證集包括4 424 張圖片。此外,排水管道內(nèi)部的病害圖片難以人工獲取,為了得到比較好的識別和深度估計效果,選取變形、破裂、異物插入這3 類管道病害進行研究,并在這幾類病害中再擇優(yōu)選取尺寸和分辨率都較大的圖片來測試。
訓練的自監(jiān)督單目深度估計模型基于Pytorch框架,選用Linux 系統(tǒng)、NVDIA RTX 3080Ti GPU計算模塊,并用公共數(shù)據(jù)集KITTI進行預訓練,訓練批大小為12,迭代(epochs)為20,此外初始學習率過小會導致網(wǎng)絡收斂緩慢,為了避免進入局部最優(yōu)區(qū)域,初始學習率設置為10?4。在圖像處理方面,輸入網(wǎng)絡前對圖像采取隨機旋轉(zhuǎn)、翻轉(zhuǎn)鏡像、裁剪和縮放進行數(shù)據(jù)增強,部分由視頻(采集幀數(shù)為30fps)分割出來的圖片每隔50張抽取一個樣本作為訓練數(shù)據(jù)。
對于boosting-monodepth,輸入圖像尺寸最大采用1 920×1 080,而對于較小尺寸的圖,Pixel2Pixel的10 層U-net 網(wǎng)絡會將小尺寸圖像上采樣至1 024×1 024 的分辨率。monodepth2 的初始默認分辨率為640×192,對于管道圖片將其修改為640×480(需為32 的倍數(shù))。選取3 個具有代表性的管道病害進行研究,分別是變形、破裂和異物插入,這幾類病害結構形變較為明顯,更容易被觀察,其中變形圖片532 張,破裂589 張,異物插入456 張,通過在ImageNet 上的預訓練模型初始化Resnet101 權重參數(shù)。
在本次實驗中,從管道3 類病害圖片測試集中挑選了幾張具有代表性的深度估計圖與Zhou 等[28]的方法進行定性對比分析,并用boosting-monodepth作為最優(yōu)深度估計效果展示。3 類管道病害用不同方法的深度估計結果如圖6—8所示,為了更直觀地觀察到各類病害,在圖中用框標注出深度估計效果顯著的地方。由圖6可見,深度估計效果較為突出,排水管道變形明顯處可以有效識別。由圖7 可見,排水管道破裂較大處可以估計,部分較深的裂縫可以清楚地估計出輪廓。
圖6 變形Fig.6 Deformation
圖7 破裂Fig.7 Rupture
除了識別出常規(guī)的支管插入,有些近景物體也能估計。從圖6—8 可以看出,相比于其他方案,本文的boosting-monodepth 深度估計方法在管道病害圖片測試集上顯示出的效果更好,在管道發(fā)生明顯塑性形變和裂縫處可以清晰地估計出輪廓形狀。異物插入病害中除了遠距離大體積的支管,畫面中近景小物體也能感知估計,可見boosting-monodepth深度估計方法在場景中無論近遠景物體都能估計出深度連續(xù)一致、像素過渡柔和的圖像,并且因為此方法的融合網(wǎng)絡對多尺度多分辨率的圖像進行采樣處理時場景中的低頻偽影被有效降低,一些小物體的邊界輪廓表現(xiàn)也不錯。
圖8 異物插入Fig.8 Foreign body penetration
同時,boosting-monodepth深度估計方法也存在一些不足,有些清晰度不高的原始圖像所估計出來的深度圖效果不算太理想,非常細小的裂痕深度圖細節(jié)還原度不高,管道內(nèi)部表面腐蝕的此類病害因沒有突出的明暗或距離變化而難以估計,但總體效果相比其他深度估計方案具有更好的效果。
對于深度估計任務,利用2種數(shù)據(jù)源(公共數(shù)據(jù)集KITTI 和自采管道病害數(shù)據(jù))來對不同的深度估計方法(monodepth2、midas、本文所使用的boostingmonodepth)進行訓練測試,并對比分析在相同的評價指標下,本文方法和目前已有的深度估計網(wǎng)絡之間的差異和優(yōu)劣。表1給出了不同深度估計方法的定量分析結果,其中monodepth2 和boostingmonodepth 均是自監(jiān)督學習,采用廣泛使用的Abs-Rel(絕對相對誤差)、RMSE(均方根誤差)、SqRel(平方相對誤差)、D3R 和ORD(內(nèi)置函數(shù))評價指標來評估深度估計網(wǎng)絡在預測KITTI和管道病害圖片方面的性能,以上5個指標數(shù)值越低越好,同時也納入了深度信息預測值與真實值對比的精確度指標δ,在閾值為1.25范圍內(nèi),δ數(shù)值越高越好,表示具有更高的準確性。
從表1可以看出,在相同的定量評估指標下,與近段時間現(xiàn)有的經(jīng)典方法相比,本文所采用的雙重估計方法取得了更好的效果,尤其是RMSE 值明顯降低,boosting-monodepth通過融合網(wǎng)絡對低分辨率的深度圖上采樣得到較大的尺寸,再和高分辨率的深度估計圖中的高頻細節(jié)信息進行3 次合并,在閾值為1.25時,本文提出的方法深度信息預測精確度指標δ比另外2種方法提高了約18%,進一步驗證了boosting-monodepth深度估計方法的有效性。
表1 不同深度估計方法評估結果Tab.1 Evaluation results of different depth estimation methods
3.5.1 坐標系轉(zhuǎn)換
從深度信息轉(zhuǎn)化到三維點云是以不同的坐標系之間相互轉(zhuǎn)換完成的,由二維深度圖重建出三維模型是一個信息擴增過程,這個過程涉及4個坐標系,分別是世界坐標系、相機坐標系、圖像坐標系和像素坐標系,它們之間一一對應,可以通過各種矩陣變換或者量化模型完成,其中三維重建主要是從圖像坐標系到世界坐標系的變換。位于三維世界中的任意一點P,它在三維空間中的坐標是P(x,y,z),這個世界坐標系也是我們?nèi)粘I畹目陀^世界,以此為基準可以描述相機的擺放位置以及物體的具體位點,即Pw(xw,yw,zw),以相機坐標系的坐標原點為相機的光心,在此坐標系下P點坐標為Pc(xc,yc,zc),由世界坐標轉(zhuǎn)換到相機坐標的變換為式(5):
其為剛體變換,各坐標系對應點的具體變換為式(6):
式中:R為旋轉(zhuǎn)矩陣;T為平移矩陣。它們是相機的外參,和相機內(nèi)參共同組成了坐標系變換的約束條件。式(6)反映了三維立體世界中的物體投影到二維平面的過程,由此反推可以得到二維的像素點一一映射到三維空間的轉(zhuǎn)換關系,即圖像坐標系轉(zhuǎn)換為世界坐標系,如式(8),其中D為深度,(x,y,z)為點云坐標,x′、y′為圖像坐標,有
3.5.2 三維點云重建和可視化
通過深度估計方法已獲得高質(zhì)量的深度圖,從中選取3 種具有代表性的管道病害來重建三維結構,Matlab 軟件可以較好地訪問提取圖像的深度信息,通過式(8)的轉(zhuǎn)換關系使用Matlab軟件作為二維深度圖像轉(zhuǎn)化三維點云的平臺。
為了更直觀地觀察三維重建效果和測算深度,管道病害立體圖用CloudCompare 進行展示,圖9—11即為效果圖,為了更容易看出病害破損程度,三維效果圖選取最優(yōu)管道截面視角并用框標識。
圖9 變形(三維)Fig.9 Deformation(3D)
本文研究的管道均為排水管道,管道半徑均為5.0~6.5m,在具體深度值方面,本文采用隨機采樣一致算法模擬管道表面,選定管道病害損傷點到管道面的距離然后測算其深度,同時在CloudCompare軟件中測距并與現(xiàn)場實測數(shù)據(jù)做對比。從表2可以看出,對大型管道測量的數(shù)據(jù)的單位有效位數(shù)在毫米級不容易展現(xiàn),隨物體體積變大或管徑長度的增加誤差也在一定程度上變大,但在實際研究范圍內(nèi)仍具有一定的準確性和參考價值。
表2 深度對比Tab.2 Contrast of depth
圖10 破裂(三維)Fig.10 Rupture (3D)
圖11 異物插入(三維)Fig.11 Foreign body penetration (3D)
城市地下管道是城市能量傳輸?shù)闹匾d體,關乎整個城市的正常運作,管道的大量投入使用也導致了其內(nèi)部結構的改變和表面的腐蝕破損,而以往對于管道病害的拍攝采集和后期人為分辨病害種類都是從二維角度出發(fā),缺乏對三維空間信息(深度)的考量,針對此問題選取3 類病害,即破裂、變形和異物插入,進行二維轉(zhuǎn)三維的研究,具體工作如下:
提出了一種基于boosting-monodepth 的提升圖像深度估計效果的方法,相比于傳統(tǒng)的自監(jiān)督深度學習,該深度估計方法采用雙重估計策略,通過融合合并網(wǎng)絡將不同分辨率大小的管道病害圖像多次整合,生成了畫面場景一致、像素過渡柔和的深度圖,尤其在一些管道發(fā)生明顯結構變形和較大較深裂縫處,可以得到輪廓邊界清晰的高質(zhì)量深度圖。同時本文在不同的測試集上驗證了boosting-monodepth的有效性,并與經(jīng)典的monodepth2 和midas 深度估計效果進行定量比較,結果表明相比于另2種方法,boosting-monodepth 方法的均方根誤差RMSE 降低了約30%,δ<1.25 時,模型精確度指標δ提高了約18%。得到了較好的深度圖之后通過具有較好的深度信息訪問功能的Matlab 軟件進行三維點云重建,以小孔成像理論為基礎完成二維圖像坐標系到三維點云世界坐標系的轉(zhuǎn)換,同時在CloudCompare軟件上可視化顯示,同時運用隨機采樣一致算法測算深度并和真實現(xiàn)場實測數(shù)據(jù)進行比較,可知其具有不錯的準確率和實際參考價值。
作者貢獻聲明:
方宏遠:論文思路指導、論文撰寫、實驗規(guī)劃。
姜 雪:論文撰寫、數(shù)據(jù)分析、實驗結果可視化。
王念念:論文審閱及修訂、論文思路指導。
胡群芳:總體技術方案及實驗方法設計與數(shù)據(jù)分析。
雷建偉:現(xiàn)場管道實驗部署與數(shù)據(jù)采集。
王 飛:論文指導與數(shù)據(jù)分析。
趙繼成:實驗數(shù)據(jù)提供及結果驗證。
代 毅:提供實驗設備、數(shù)據(jù)采集。