王 丹,龔光紅,李 妮,李 瑩
(北京航空航天大學 自動化科學與電氣工程學院,北京 100191)
大范圍地景圖像的三維重建一直是虛擬現(xiàn)實的重要研究內容之一,快速、準確地識別地景圖像中所包含的地物并對其進行分類處理,可以為后續(xù)的模型重建及時提供準確的數(shù)據,而現(xiàn)有的地物分類和處理方法則存在準確性低、速度慢等問題。隨著傾斜攝影等技術的發(fā)展,獲得更高分辨率的地景影像成為可能,對快速提取地景圖像中所包含的地物,并對其進行高效處理提出了新的要求。
語義分割技術是指給定一張照片,計算機可以識別出照片中所包含的物體實例的種類及位置[2]?,F(xiàn)階段廣泛使用的語義分割技術,主要是在FCN[5](Fully Convolutional Networks for Semantic Segmentation,全卷積神經網絡)等經典網絡的架構上進行改進,從而實現(xiàn)對于圖像中包含物體的識別與分類。隨著機器視覺、目標檢測等技術的不斷發(fā)展,圖像的語義分割技術逐漸應用于無人自動駕駛、臨床醫(yī)療影像分析等領域,可有效作用于情景理解和多目標間關系推斷。同時,隨著地理測繪、傾斜攝影等技術的發(fā)展,獲得分辨率更高的地景圖像成為可能,航空傾斜攝影可以在短時間內獲得高精度、大數(shù)據量的目標區(qū)域圖像集,對更加高效、快速地建立高精度地物模型[3]提出了新的要求。將語義分割技術應用于高分辨率的地景圖像[4],可以對地景圖像中所包含的地物進行快速識別和分類,從而服務于后續(xù)的地物模型處理與重建。
實際的仿真環(huán)境或三維模型搭建中,需要對分割出的地物進行移除、損傷、替換處理,并對處理后的地面紋理進行補充,以達到逼真的效果;而部分傾斜攝影采集的原始地景圖像中存在移動的車輛以及妨礙觀測和建模的障礙物等,不僅在后續(xù)的三維模型中并不需要,甚至會對仿真進程進行干擾。因此,對于分割后冗余地物的移除、替換處理,是地景圖像應用于三維模型重建的必要處理環(huán)節(jié)。
本文旨在基于deeplab-v3+神經網絡對地景圖像進行語義分割,使用自制的傾斜攝影低空航拍圖數(shù)據集對預先搭建的deeplab-v3+網絡進行訓練、測試,然后將訓練完成的網絡應用于高分辨率地景圖像的語義分割,以識別建筑、植被、道路、水域、車輛、背景6類地物。完成地景圖像語義分割后,根據不同地物類別的分割結果,對妨礙觀測和建模的車輛等地物進行移除、替換處理,并通過圖像融合對移除、替換后的地面紋理進行補充,消除冗余地物對后續(xù)建模的干擾,從而為后續(xù)的三維場景重建等應用快速提供準確數(shù)據。
地景圖像語義分割流程如圖1所示,主要包括傾斜攝影數(shù)據集制作、語義分割網絡搭建、訓練與調整,使用訓練完成的網絡對地景圖像進行分割三部分,主要內容為:
圖1 地景圖像語義分割處理流程
1)對傾斜攝影采集的低空航拍圖進行預處理,包含數(shù)據提取、地物標注、糾正部分圖像的標注亂序問題、批量更改圖像像素及尺寸等,使之適合神經網絡的訓練;
2)搭建語義分割所使用的神經網絡結構,本文選取deeplab-v3+神經網絡應用于語義訓練與分割,使用經過預處理的傾斜攝影數(shù)據集對神經網絡進行訓練,根據訓練效果對網絡做出調整與改進,使之更加適用于地景圖像的分割,確定神經網絡結構;
3)使用訓練完畢的神經網絡對需要處理的地景圖像進行語義分割。
無人機搭載傾斜攝影相機拍攝的低空航拍圖具有獨特的視角和空間結構,要對其實現(xiàn)精確語義分割,需訓練適用于這類圖像特征的神經網絡。
第一,對采集的覆蓋不同區(qū)域及地物的1946張地景航拍圖進行處理,制作語義分割數(shù)據集,以應用于后續(xù)訓練,對采集的原始圖像進行處理的流程如圖2所示。
圖2 傾斜攝影數(shù)據集制作流程
第二,使用labelme對航拍圖數(shù)據集進行標注。labelme是一個可以手動對圖像進行標注的圖形界面,由python語言編寫,可對地景圖像進行點、線段、圓形以及多邊形的標注,以應用于圖像分割、目標檢測等任務。按照背景、建筑、植被、道路、水域、車輛6類地物對地景圖片進行標注,并將生成的json文件轉化為標簽圖像,即可獲得與原圖相對應的標簽數(shù)據。
第三,由于部分圖片中不是完整地含有所有類別的地物,例如,有的航拍圖中不含水域,僅包含其他五種地物,而受到labelme軟件本身的限制,其進行標注的顏色是按照標注順序給定的,如此就會產生標注圖像中同一類別的地物出現(xiàn)不同的標簽顏色的問題。亂序的地物標注會對后續(xù)的訓練造成干擾,因此需要使用編程統(tǒng)一調整標簽順序,實現(xiàn)標注圖像的一致,正確的標注順序如表1所示。
表1 航拍圖標注正確順序
第四,通過編程對標注所生成的json文件進行批量操作,對圖像中地物的標簽進行遍歷,判斷其含有的地物類型是否與標簽順序一致,并按照表1中的設定順序修改亂序地物的標簽值,然后將json文件轉化為標注圖像,對1946份標簽文件進行批量處理,可以重新生成包含正確標簽順序的json文件和標注圖像,修改后的航拍圖標注結果如圖3所示。其中,(a)圖為原始傾斜攝影圖像;(b)圖為在原始圖像上進行標注的效果,右下角為各個顏色的標簽所代表的實際地物種類;(c)圖為導出的標注圖像。之后即可將該數(shù)據集應用于地景圖像語義分割網絡訓練。
圖3 傾斜攝影數(shù)據集標注結果
第五,航拍圖數(shù)據集的標注順序統(tǒng)一后,將航拍圖與標注圖片的尺寸統(tǒng)一修改為512×512,并按照順序重命名,減小計算量,方便后續(xù)訓練;同時,將標注圖片的不同類別地物像素修改為0~5,提高后續(xù)神經網絡的訓練速度,修改圖像尺寸、像素值的示例如圖4所示。完成上述對于低空航拍圖的預處理流程后,即可使用該傾斜攝影數(shù)據集進行后續(xù)語義分割模型的訓練。
圖4 批量修改圖像尺寸、像素值
Deeplab-v3+[6]是基于DCNN(Deep Convolutional Neural Network, 深度卷積神經網絡)進行改進而形成的神經網絡結構。DCNN主要包括輸入層、輸出層、卷積層、池化層、全連接層等結構,可以應用于圖像實例的分類并取得較好的效果。deeplab-v3+在DCNN的基礎上進行了改進,結合了概率圖模型(DenseCRFs),取消了池化層和全連接層,使圖像在一系列卷積層中進行傳遞,以提升語義分割效果。然而,如此改進之后,會使得模型的內存消耗增大、計算復雜度增加,為了解決這個問題,deeplab-v3+將處理過程分為下采樣、卷積、上采樣三個步驟,以減小計算復雜度。Deeplab-v3+對航拍圖進行語義分割的處理流程如圖5所示。
圖5 基于deeplab-v3+模型的傾斜攝影圖像分割系統(tǒng)框
圖5中,deeplab-v3+網絡首先對輸入的圖像進行編碼操作,使用ResNet[7]網絡提取輸入圖像的特征信息;然后通過ASPP[8]模塊在多比率、多有效視野上提取輸入航拍圖的特征信息,并通過池化操作編碼多尺度上下文信息。由于航拍圖的圖像狀態(tài)和獨特的空間結構,導致其識別精度較低,而ASPP模塊的特點在于同時使用多個維度的濾波器對地景圖像進行過濾,這些濾波器可以對彼此的有效視野范圍進行補充。因此,可以提供多尺度的有效特征信息,從而更準確地捕捉地物特征。將經ASPP模塊處理后輸出的高層圖像特征信息與底層特征進行串聯(lián),對串聯(lián)后信息進行卷積;最后進行上采樣,逐步恢復空間信息,以更加精細地分割地物邊界。
在服務器上搭建基于Pytorch的deeplab-v3+神經網絡,主要包括上文所介紹的網絡的基本架構、用到的編程語言包、使用的數(shù)據集和一些相應的可視化輔助模塊。根據航拍圖的拍攝角度、空間結構特點選擇合適的backbone,配置好環(huán)境變量和相應模塊,采用官方數(shù)據集進行測試,確保神經網絡可以進行正常訓練。
在實際訓練中選用DRN[9](Dilated Residual Networks)作為航拍圖分割的backbone,以改善網絡對地景航拍圖的分割效果。DRN在ResNet的基礎上進行改進,在其top layers中移除了下采樣層,同時引入了多孔卷積。多孔卷積指按照指定的擴張率對原濾波器插入空洞進行擴張,通過插入0值來實現(xiàn)這一目的,以建立對應的稀疏濾波器。插入的0值不會參與后續(xù)運算,因此不會提高計算復雜度。使用擴張后的濾波器來進行卷積,既可以保持特征圖的空間分辨率,也不會影響后續(xù)層接受野的分辨率。
神經網絡的訓練主要以mIoU、FWIoU和訓練過程的損失來對語義分割的精度進行衡量。mIoU[10](mean Intersection over Union)是兩個集合之間的運算,取交集和并集比值的平均值,簡稱為均交并比。在地景圖像語義分割測試中,此比值是在建筑、湖泊等每個地物種類上計算其真實值(ground truth)和判斷值(predicted segmentation)的交并比,然后對計算的結果求取均值得到。mIoU憑借其直觀的代表性和簡便的計算方式成為語義分割領域應用最為廣泛的度量標準之一,絕大多數(shù)進行語義分割試驗的研究者都會使用mIoU來驗證其分割結果,mIoU的計算公式如下所示:
(1.1)
除了mIoU外,F(xiàn)WIoU[10](Frequency Weighted Intersection over Union,頻權交并比)也經常被用于衡量圖像語義分割的效果,F(xiàn)WIoU是mIoU的一種提升,其會根據每個類別出現(xiàn)的頻率為每個類設置權重,計算公式如下:
(1.2)
選定語義分割效果衡量指標后,對訓練所使用的數(shù)據集進行定義,訓練使用1946張傾斜攝影圖像進行,選用其中的1848張照片進行訓練,98張照片用于測試,分割類別為6類,分別為背景、建筑、植被、水域、道路、車輛。根據選用的backbone和定義的數(shù)據集,對訓練和測試代碼進行編寫。
設置網絡選用的backbone為DRN,自定義數(shù)據集和訓練方式后,首先使用數(shù)據集中的少量樣本對語義分割網絡進行測試,由測試結果調整、改進網絡結構,確認無誤后再將全部數(shù)據集用于訓練。采用4個GPU并行,執(zhí)行100次epoch,初始學習率lr=0.007,batch size設置為4。訓練中采用測試集衡量訓練結果,每訓練一次對訓練指標進行一次計算。使用Tensorboard實現(xiàn)對于訓練過程的可視化,訓練過程如圖6所示。
圖6 使用傾斜攝影數(shù)據集對deeplab-v3+網絡進行訓練
為了得到更好的訓練效果,設定不同的網絡架構和訓練參數(shù)進行多次訓練,最終得到的結果如表2所示。
表2 航拍圖訓練結果
由表2可見,當采用ResNet作為網絡的backbone時,最終在測試集上達到了74.34%的mIoU,而改用DRN作為網絡的backbone時,分割精度得到進一步提升,相同的參數(shù)設置下mIoU提升至84.14%。為了進一步加快訓練速度,同時不影響訓練精度,將Epoch修改為150,Batch_size修改為4,最終在測試集上達到了mIoU為85.13%的訓練精度,訓練速度也得到了提升。
選擇傾斜攝影圖像訓練過程中表現(xiàn)最好的一組網絡,取該網絡表現(xiàn)最好的一組權重作為最終的地景語義分割網絡,此時mIoU=85.13%,為后續(xù)的地物模型處理方法研究和三維場景重建等應用提供語義分割數(shù)據。使用該網絡對需處理的地景圖像進行語義分割,并對分割出的圖片進行著色,以應用于后續(xù)的地物模型處理,分割效果如圖7所示。
圖7 使用神經網絡模型分割地景圖像
在實際的三維建模等應用場合中,一方面,部分地物模型例如地面障礙物等并不需要出現(xiàn),而在拍攝過程中連續(xù)移動的車輛,還會對后續(xù)的建模環(huán)節(jié)造成干擾;另一方面,在戰(zhàn)場環(huán)境仿真等應用中,需要根據仿真進程對某些地物進行移除、損傷、替換等處理。將這些對于模型重建不發(fā)揮作用、甚至會造成干擾的地物稱為冗余地物。對語義分割所識別出的部分冗余地物進行移除,并對移除后的地面紋理進行補充,可以解決以上兩方面的問題,在實際的工程應用中有較高價值。以車輛為例,對其進行移除及地面紋理補充的操作流程如圖8所示。
圖8 移除冗余地物并補充地面紋理流程圖
對于地景圖像和其進行地物分割后的圖片,首先通過語義分割圖像檢測其是否存在車輛,對于存在車輛的圖像,檢測其含有的車輛數(shù)量和位置,采取逐輛移除的方式進行處理。以圖9為例,地景圖像中含有一輛車輛,并對其所在矩形區(qū)域進行了標識。
圖9 含車輛的地景圖像及其語義分割圖像
對于圖像中存在的車輛,采取逐輛移除的方式,移除處理的重點在于地面紋理的補充,真實的地面紋理是應用于模型重建、環(huán)境仿真的基礎。首先,對標定的車輛區(qū)域進行一定比例的放大,防止紋理無法完全補充而造成視覺漏洞;然后,對移除車輛周圍的地物類型進行檢測,按照車輛周圍地物的不同類型采取不同的紋理貼圖方式。若車輛周圍為道路,即語義分割顯示的黃色區(qū)域,則選取車輛垂直方向的紋理進行補充,以最大限度地保證道路上斑馬線、行車標識的真實性。在車輛區(qū)域所在的垂直方向對地面色域進行檢測,選取與移除區(qū)域色域最為接近的部分作為補充紋理,將其貼圖至車輛區(qū)域。
為了提高真實度,對車輛區(qū)域進行地面紋理貼圖后,使用圖像融合方法對選取的補充區(qū)域和車輛移除區(qū)域進行融合。通過像素級別的圖像融合方法來實現(xiàn)這一目的,在包含車輛的矩形區(qū)域四邊進行融合操作,將地景圖像中原車輛區(qū)域圖像和補充區(qū)域圖像分別按照顏色通道進行像素融合,以達到觀測真實的目的。處理后地面圖像無明顯紋理貼圖痕跡,實現(xiàn)了較為真實的效果。通過圖像融合完成對地景圖像中車輛移除和地面紋理的補充,對周圍環(huán)境為道路的地景圖像移除效果如圖10所示。
圖10 移除車輛前后的地景圖像
若車輛所在位置的周圍區(qū)域不是道路,則地面紋理的補充變得更加復雜,此時不可僅考慮垂直方向的地面紋理進行補充。首先,對車輛周圍的地物類別進行檢測,以圖11為例,車輛周圍的區(qū)域為背景,即非道路、植被之外的其他區(qū)域,則對車輛的位置區(qū)域按照比例進行放大之后,進一步在原地景圖片和相鄰的地景圖片中的同屬性區(qū)域檢測色域信息,獲取與待填充區(qū)域色域最為接近的地面紋理,使用其對車輛移除區(qū)域進行補充。
圖11 含車輛的非道路區(qū)域地景圖像及其語義分割影像
對于車輛周圍非道路的地景圖片,要達到較為真實的紋理補充效果,仍然需要對原地景圖像移除車輛區(qū)域和補充區(qū)域進行圖像融合,區(qū)別于道路的圖像融合是規(guī)則的由矩形區(qū)域的四邊漸變融合,非道路區(qū)域需要進行不規(guī)則多邊形融合以盡可能達到真實的地面紋理補充效果。移除之后的效果,如圖12所示,可見非道路區(qū)域亦可達到相對真實的紋理補充效果。
圖12 移除車輛前后的非道路區(qū)域地景圖像
為了驗證地景圖像語義分割以及冗余地物移除方法的效果,對通過傾斜攝影采集的大區(qū)域地景圖像進行處理,選用對面積為450×400 m2的某住宅區(qū)進行傾斜攝影圖像采集得到的圖像集進行處理,區(qū)域內覆蓋了建筑、植被、水域、道路、車輛等地物,如圖13所示。
使用訓練完成的語義分割網絡對地景圖像進行分割,效果如圖14所示。
圖14 語義分割效果圖
完成圖像的語義分割后即可對其所包含的地物進行進一步處理,對場景中妨礙觀測和建模的車輛等障礙物進行移除,并對移除后的地面紋理進行補充,以消除不必要的地物對后續(xù)三維模型重建造成的影響,移除的效果如圖15所示。
圖15 移除冗余地物并對地面紋理進行補充
完成語義分割與冗余地物移除的處理后,生成地景圖像所對應的正射影像,以便為其配準坐標,矯正圖像的拍攝視角。正射影像可以從垂直角度復現(xiàn)大區(qū)域場景的俯拍視圖,對于后續(xù)向實際坐標系的轉換和三維模型的建立有重要的過渡作用,其效果如圖16、圖17所示??梢姡Z義分割對場景中所包含的地物實現(xiàn)了精確的識別,根據識別結果對主干道路上的車輛以及妨礙觀測的地物等進行了移除,達到了相對真實的效果。
圖16 大區(qū)域地景的正射影像
圖17 大區(qū)域地景的語義分割圖像
本文研究了利用神經網絡對大區(qū)域高分辨率地景圖像進行語義分割,并對分割后圖像中包含的冗余地物進行移除、替換處理,從而實現(xiàn)對地景圖像所包含地物快速、精確地識別和處理,為后續(xù)模型重建等提供準確數(shù)據。通過搭建deeplab-v3+神經網絡,使用自制的傾斜攝影數(shù)據集進行訓練,獲得mIoU為85.13%的地景圖像語義分割網絡,可識別建筑、植被、道路、水域、車輛、背景6種地物;根據語義分割結果,對仿真場景中需進行損傷、替換處理或干擾建模、觀測的地物進行移除,并采用圖像融合方式對地面紋理進行補充,為后續(xù)的三維場景重建提供準確、有效數(shù)據。