李 波 肖 勇
(武漢數字工程研究所 武漢 430205)
近年來無人船市場增長迅速,為無人船安全航行提供保障的自主導航技術也在不斷地發展[1~2]。如何實現自主定位和環境感知是無人船實際應用時的關鍵問題之一。在許多涉及到無人船應用的場景中,比如路徑規劃[3]、自主航行[4]、環境感知等,定位與創建地圖的過程被視作是先決條件。視覺SLAM(Simultaneous Localization and Mapping)算法可以借助視覺傳感器,在沒有環境先驗信息的情況下,在運動過程中創建周圍環境的地圖,同時進行自主定位。
ORB-SLAM 算法(Orinted FAST and BRIEF-Simultaneous Localization and Mapping)是一種完全基于稀疏特征點的單目視覺SLAM 算法,包括視覺里程計、特征提取、回環檢測等流程,其核心是使用ORB(Orinted FAST and BRIEF)作為核心特征[5~8]。但是,ORB-SLAM 算法構建的地圖無法提供周圍環境中物體的語義信息,視覺傳感器獲取的圖像信息未能得到充分利用。因此,ORB-SLAM 算法只能解決無人船自主導航的問題,卻無法對航行過程中通過視覺傳感器拍攝到的物體進行智能識別。
Mask R-CNN 算法是近年來非常具有代表性的基于深度學習的實例分割算法,可被應于目標檢測、目標關鍵點檢測與實例分割等領域[9~12]。現實中大量的物體會有復雜且不規則的邊界形狀,而邊界形狀的精確預測對于整個實例的分割影響重大,Mask R-CNN 算法對物體實例邊界識別的精度略有欠缺。
綜上,現有的ORB-SLAM 方法雖然可以解決無人船的自主定位與地圖創建問題,但是無法對航行過程中拍攝到的物體進行類型識別,現有的Mask R-CNN 算法雖然可以進行實例分割獲取語義信息,但其對物體邊界的精確識別還略有欠缺。因此,提供一種用于無人船生成三維語義地圖的方法,既能支撐無人船自主地位與地圖創建,又能對航行中遇到的物體智能識別,以增強無人船在執行航行、探索等任務時的效率,是當前無人船技術領域的當務之急。
無人船生成三維語義地圖主要包括獲取關鍵幀、關鍵幀實例分割、三維點云地圖更新、特征融合和構建三維語義地圖等步驟,如圖1所示。
1)獲取關鍵幀:無人船在航行過程中借助視覺傳感器連續采集圖像幀,獲得圖像幀序列,利用ORB-SLAM 算法來處理圖像幀序列中的連續圖像幀以獲得初始化的三維點云地圖,同時,通過對從連續圖像幀提取的特征點進行判斷來獲得連續的關鍵幀;
2)關鍵幀實例分割:使用Mask R-CNN 算法對連續的關鍵幀進行實例分割,獲得連續的關鍵幀中各關鍵幀包含的物體實例,并對這些實例進行語義標注,轉至步驟4);
3)三維點云地圖更新:在初始化的三維點云地圖中加入連續的關鍵幀,實現對三維點云地圖的更新,轉至步驟4);
4)特征融合:從連續關鍵幀中可以提出各關鍵幀的特征點,并獲得各關鍵幀的物體實例,與上一個關鍵幀的特征點和物體實例進行匹配,綜合特征點以及物體實例匹配的結果對各關鍵幀的位姿估計結果進行局部非線性優化,從而獲得各關鍵幀攜帶的物體實例語義標注信息;
5)構建三維語義地圖:將連續的關鍵幀中各關鍵幀攜帶的物體實例語義標注信息與各關鍵幀在三維點云地圖上的坐標進行關聯,完成對三維點云地圖的語義標注,獲得三維語義地圖。
實例分割是一種將語義分割和目標檢測相結合的技術,相對于目標檢測的邊界框,實例分割可以得到更加精確的物體邊緣;相對于語義分割,實例分割能夠區分出同一物體的不同個體。對關鍵幀進行實例分割主要是為了獲取每幀關鍵幀中所有物體實例。
本文采用的實例分割算法是Mask R-CNN。Mask R-CNN 算法可以同時進行目標檢測與實例分割,并獲得極佳的效果。Mask R-CNN 的處理過程可以分為兩個階段,第一個階段對關鍵幀進行掃描同時生成提議,即可能包含一個目標的區域;第二階段將提議有效分類,之后便能生成邊界框和掩碼。
具體的處理流程如圖2 所示:在主干網絡(Backbone)中輸入連續的關鍵幀,通過從關鍵幀中提取特征獲得特征圖(Feature map);在特征金字塔網絡(Feature Pyramid Networks,FPN)中輸入獲得的特征圖,將特征圖中低分辨率、高語義信息的高層特征和高分辨率、低語義信息的低層特征進行自上而下的側邊連接,從而使所有尺度下的特征都有充足的語義信息;在RPN(Region proposal Net,區域建議網絡)中輸入經過FPN 處理過的特征圖,RPN是一個輕量的神經網絡,它用滑動窗口來掃描圖像,并尋找存在目標的區域,RPN 網絡會在特征圖中生成候選區域,對每一個RPN 獲得的候選區域,執行RoIAlign 操作,經過RoIAlign 處理后每個RoI都可以產生固定尺寸的特征圖;這些處理過的特征圖之后被用在兩個分支:一個是classifier 分支,用于生成回歸框和預測類別;另一個是Mask分支,用于生成掩碼。

圖2 改進的Mask R-CNN實例分割算法模型
一般情況下,物體會有復雜且不規則的邊界形狀,邊界形狀的精確識別能極大地影響無人船智能識別前方物體的準確度。因此,為了使邊緣的分割精度提升,本文在Mask 通路之后增加一個邊界細化模塊(Boundary refinement,BR),該模塊借助一個殘差結構來優化生成的掩碼,以進一步擬合實例邊界,能極大提升邊界處的識別能力。
本文為了完成對掩碼的優化,使用聯合訓練損失函數,該聯合訓練損失函數L的公式為
其中,Lcls表示目標檢測時對興趣區域目標類別預測的交叉熵,即為分類誤差;Lbox表示目標檢測時對興趣區域位姿修正的損失函數,即為檢測誤差;Lmask表示執行語義分割任務時預測的掩碼與實際掩碼的逐像素交叉熵之和,即為分割誤差。其中,Lmask為平均二值交叉熵損失函數,該公式表示為
其中,y表示二值化后正確標記的數據,表示二值化后預測的分割結果。然而,在執行分割任務時,交叉熵損失函數由于過于依賴區域信息而忽略對邊界信息的預測,導致在最終的分割結果中邊界分割的準確度不高。
本文在Lmask中加入BWL(邊界加權損失函數),來優化生成的掩碼。Lmask-bwl是優化后的公式,可表示為
其中,Ldis表示邊界加權損失函數,α 表示權重系數,B 表示分割結果的邊界,R 表示整個分割區域,Mdist表示正確標記的數據分割邊框的距離變換,相當于一個距離圖。這樣相當于在Lmask增加了邊框損失的權重,可以得到精確度更高的分割結果。
通過邊界細化模塊處理后可以獲得關鍵幀中的物體實例,經過classifer 分支處理后可以獲得物體的類別信息,兩者結合最終獲得Mask R-CNN 算法的處理結果,即關鍵幀中的物體實例及其語義標注信息。使用Mask R-CNN 算法對連續的關鍵幀處理完后,可在后續進行特征融合。
該過程需融合特征點匹配和實例匹配對ORB-SLAM 的位姿估計結果進行局部非線性優化,得到攜帶物體實例語義標注信息的關鍵幀。對關鍵幀進行實例分割和特征編碼后,獲得了每幀關鍵幀圖像內所有物體實例的特征描述向量,可以利用空間金字塔匹配算法來計算兩個實例的特征描述向量之間相似度。
進行位姿估計時,假定k-1 時刻圖像幀中特征坐標為pik-1,該特征對應的三維地圖點在世界坐標系下的坐標為piw。通過特征匹配,獲得k 時刻圖像幀中對應的特征坐標為pik。借助位姿變換和投影函數,獲得該三維地圖點在k 時刻圖像幀中的坐標。在之前的過程中只估計了兩幀圖像間的相機位姿。進一步地,在創建地圖的過程中,通過地圖點的共視關系,建立局部地圖,獲得局部地圖點,局部關鍵幀,固定關鍵幀集合,固定地圖點集合。當前關鍵幀觀測到的地圖點為局部地圖點,觀測到局部地圖點的關鍵幀為局部關鍵幀。被局部關鍵幀觀測到,而沒有被當前關鍵幀觀測到的地圖點為固定地圖點,觀測到固定地圖點而不屬于局部關鍵幀的關鍵幀為固定關鍵幀。
通過結合實例的特征描述向量和實例的空間位置相似度對實例進行有效地跟蹤與匹配,完成實例的識別與目標關聯,從而有效區分場景中形狀外觀相同的實例,提高實例匹配和物體識別的準確率。
將攜帶物體實例語義標注信息的關鍵幀映射到實例三維點云中,構建出三維語義地圖。采用OpenGL 可以進行點云的融合和更新,進而拼接成全局點云地圖。在全局三維點云地圖生成的同時,進行語義標注,將關鍵幀的像素級語義標注結果映射到對應的點云地圖上,根據無人船位姿變換矩陣,可將每一個像素點的相機坐標轉換為世界坐標,最后根據每個像素點所對應的三維空間坐標,將關鍵幀圖像的二維語義分割結果映射到對應的三維點云地圖上,完成三維點云地圖的語義標注任務,最終生成需要的語義地圖。
仿真實驗考慮周圍環境的復雜度和算法的難度,事先選擇適量的位置固定的特征點當作先驗信息,此時無人船的三維語義地圖生成過程是一個部分環境信息給定的同步定位與語義地圖創建的過程。仿真實驗中無人船從起點出發執行任務,在行駛軌跡周圍有著適當數量的環境特征,算法處理過程和仿真結果如圖3所示。

圖3 無人船生成三維語義地圖方法仿真
圖3(a)表示無人船生成三維語義地圖方法處理過程,而圖3(b)則是算法處理后獲得的對環境特征位置及自身位置的估計結果。圖3(b)中的紅色線表示無人船在行駛過程中對自身位置的估計,而實際軌跡則是起始點、三個轉折點與終點組成的閉合圖形,通過對比可知仿真實驗中算法對無人船軌跡的估計與其實際運動的軌跡大體上是一致的。圖3(b)用藍色圓圈表示環境特征的估計位置,用紅點表示環境特征的實際位置,從圖中可以看出算法對環境特征的估計基本上趨近于最優估計。通過圖3(a)可知算法處理過程中獲得的環境特征預測點都在特征點實際位置附近,隨著特征點數量增加,無人船生成三維語義地圖的方法收斂效果越好。
當前仿真驗證了無人船生成三維語義地圖方法在創建環境地圖方面的準確性,后續將結合語義信息開展仿真實驗驗證其在識別物體上的準確性。
本文主要對無人船生成三維語義地圖進行研究,三維語義地圖生成是未知環境下無人船進行自主導航的關鍵問題,具有重要的研究價值和應用價值。針對ORB-SLAM 方法無法對航行過程中拍攝到的物體進行類型識別的缺陷,結合Mask R-CNN提出了一種無人船生成三維語義地圖方法。針對傳統的Mask R-CNN 算法在識別物體邊界時精確度略有欠缺的問題,增加邊界細化模塊并優化損失函數,提升Mask R-CNN 算法對物體邊界識別的精確性。通過仿真實驗驗證了無人船生成三維語義地圖方法在創建環境地圖方面的準確性,后續將進一步驗證其在識別物體上的準確性。