王曉華,李耀光,王文杰,張 蕾
(西安工程大學 電子信息學院,陜西 西安 710048)
基于視覺的機器人SLAM[1-2]在很多領域得到了廣泛應用。為了能在地圖中對環境中的物體進行直觀的表示[3],研究者做了大量的工作。文獻[4]將離線提取的物體實例信息存儲在識別碼中,機器人通過對識別碼的解讀,完成物體實例信息的獲取而建圖;文獻[5-6]將目標識別線程并行加入到SLAM框架,物體被成功識別后被插入地圖,但其需要事先生成目標模型。為了能實時構建環境中的物體模型,文獻[7]設計了一種稠密SLAM建圖系統,使機器人能夠以物體級別描述地圖場景。但地圖精度低,地圖中的物體實例不能很好地體現。
深度學習方法可以對環境中的物體實例進行有效檢測和分割[8]而被引入視覺SLAM領域。文獻[9]將視覺SLAM算法與目標檢測框架SSD[10]結合,生成帶有語義信息的地圖;文獻[11]利用目標檢測網絡提取二維圖像標簽,結合三維幾何信息構建出稠密語義地圖; 文獻[12]提出的Mask Fusion系統不需要已知的對象模型實現地圖構建,但語義分割網絡不能實時運行;文獻[13]利用深度卷積神經網絡對圖像進行像素級分割,采用并行線程,實時提取實例信息。但是上述方法所使用的深度學習網絡結構復雜,對硬件要求高。綜上所述,利用輕量級網絡對物體實例信息進行提取,構建高精度的SLAM點云地圖是研究者們要繼續探討的問題。
本文給出了一種融合目標檢測和點云分割的視覺SLAM實例建圖方法。該方法以ORB-SLAM2算法[14]為框架,通過改進的輕量級目標檢測算法YOLOV4-tiny[15]來提升目標實例的檢測精度;隨后將含有目標檢測框的關鍵幀圖像進行二維分割,分割結果與三維點云分割結果融合,快速實現對物體的實例分割;最后建立存儲物體實例信息的物體庫,設置相應的匹配機制對物體庫進行更新,構建出高精度的實例級點云地圖。
機器人在現實場景下構建地圖,需要快速對環境實例進行檢測識別,輕量級的檢測模型具有更大的優勢。本文使用的YOLOV4-tiny是一種輕量級檢測網絡,利用2個不同尺度的YOLO Head輸出層,分別負責檢測大目標物體和小目標物體,具有更快的處理速度。但是其檢測精度相對于大型檢測網絡會有所下降,尤其是對小目標物體的檢測。基于此,通過調整網絡結構,運用優化策略,對YOLOV4-tiny算法進行改進,提高檢測精度的同時兼顧實時性。
相比YOLOV4[16]的深層次結構和巨大參數量,YOLOV4-tiny輕量級網絡結構簡單,網絡參數少,具有更快的檢測速度。由于YOLOV4-tiny在特征加強層只采用了1個特征金字塔結構[17],沒有像YOLOV4那樣再進行下采樣,導致特征信息提取不足;網絡深度不足也會導致高維空間中的冗余信息被過度利用,降低目標檢測的準確性。因此,為了保持精度和速度的平衡,設計2個相同的殘差網絡模塊[18]作為輔助模塊,提取更多的物體特征信息,增強模型對目標的特征提取能力,降低檢測的誤差。殘差網絡模塊結構如圖1所示。

圖 1 殘差網絡模塊結構
圖1中,殘差網絡模塊首先利用2個3×3卷積提取全局特征,增加網絡深度,學習輸入圖像中更深層次的信息。原始的高維空間中含有冗余信息,會對目標檢測造成影響,降低準確率。隨后通過引入1×1的卷積層對其實現降維,加快網絡學習速度,減少冗余信息所造成的誤差,提高識別的精度。同時為了獲取更多目標的細節信息,抑制無關物體所對應的信息,使用通道注意力和空間注意力機制[19]提取更有效特征。由于淺層特征到深層特征的傳遞路徑較長,其邊緣信息特征容易丟失,導致數據利用率低、檢測精度不理想,為充分利用特征信息,采用級聯操作將第1個卷積網絡的輸出特征與空間注意力機制的輸出特征進行特征融合,作為殘差網絡模塊的輸出特征,這樣保留了特征重復使用的特點,提升數據利用效率。最后,將最終的殘差網絡輸出特征與骨干網絡中剩余網絡的輸出特征相結合,作為下一個骨干網絡的輸入特征,使改進后的骨干網絡能夠提取出檢測對象的全局和局部特征,摒棄與檢測目標無關的信息,進一步提高檢測的準確性。圖2為改進后的網絡結構。

圖 2 改進后的網絡結構
目標檢測算法會輸出多個檢測邊框,原有的YOLOV4-tiny算法利用非極大值抑制(non-maximum suppression,NMS)算法[20]去除重復的檢測邊框,達到每個物體只有1個檢測結果的目的。若當前檢測框和最高得分檢測框的交并比大于閾值時,會直接將該檢測框的得分置零,這將導致重疊區域較大的目標被漏檢,降低算法的平均檢測率。針對上述問題,采用Soft-NMS抑制算法[21]來提升性能。Soft-NMS抑制算法可將當前檢測框得分乘以一個權重函數,該函數會衰減與最高得分檢測框M有重疊的相鄰檢測框分數,越是與M框高度重疊的檢測框,其得分衰減越嚴重,但并不會將檢測框直接刪除。為此,本文選擇高斯函數為權重函數,從而修改其刪除檢測框的規則,解決物體重疊時的檢測問題。所使用的高斯權重函數為
Si+1=Siexp(I(M,bi)2)/σ)
(1)
式中:bi為當前檢測框;Si為當前檢測框得分;σ為高斯函數的方差;I為交并比。
采用RGB-D相機作為視覺傳感器,可以獲取環境的二維彩色圖像和相應像素的深度圖構建出三維點云。而大多數三維點云分割算法僅僅利用環境中的三維點云信息進行分割,忽略了對應的二維圖像信息。為優化實例層次的分割效果,得到準確率更高的物體分割結果,設計一種融合二維圖像信息的三維點云分割方法。
1) 二維實例模型分割。采用GrabCut算法[22]對目標檢測后的關鍵幀圖像進行二維實例模型分割。用RGB三通道混合高斯模型(Gaussian mixture model,GMM)描述目標模型和背景模型的像素分布,通過迭代學習獲取物體和無關背景的混合高斯模型參數,評估分割的優劣程度,得到最優的物體分割結果。
2) 三維點云實例分割。物體的實例分割通過三維點云分割實現,分割流程如圖3所示。

圖 3 三維點云分割

3)二維與三維信息融合。前述GrabCut算法的分割結果為L={l1,l2,…,ln},li為目標物體像素時取1,為無關背景像素時取0;三維點云分割算法的分割結果記為Γ,把兩者的分割結果進行融合,優化之后的算法可表示為
(2)
式中:d為物體的類別;μ為兩者融合時的篩選條件。融合后的改進算法實現2種分割結果的性能互補,使三維點云分割結果精度更高,提升目標實例分割效果。
在原始ORB-SLAM2框架的跟蹤、建圖和回環檢測三線程結構中加入YOLOV4-tiny目標檢測線程、點云分割線程和物體庫構建模塊,構建本文建圖方法的整體框架,如圖4所示。

圖 4 系統整體框架
圖4中,跟蹤線程對RGB-D相機采集的環境信息進行二維特征提取、匹配以及機器人位姿初始化;本文新建的目標檢測線程對跟蹤線程中檢索的關鍵幀進行物體實例檢測識別,得到環境中的實例信息;建圖線程利用關鍵幀生成點云,采用BA優化刪除冗余的地圖點和關鍵幀,構建出初始的點云地圖;新增加的點云分割線程將含有目標檢測框的關鍵幀圖像進行二維分割,融合三維點云分割結果,實現對物體實例的點云分割;最后通過物體庫進行數據關聯和模型更新,實現面向物體實例的三維點云地圖構建。而為了消除跟蹤過程中產生的累積誤差,回環檢測線程通過對回環位置和關鍵幀的檢測,將匹配到的所有點云進行對齊并融合重復的點,采用圖優化的方式來得到全局一致的地圖。
依前文所述方法構建實例地圖的過程中,需要建立地圖物體庫存儲采集到的實例物體信息,該物體庫包含物體的屬性信息、類別與概率、中心坐標、對應的關鍵幀和目標物體的三維點云模型。
為了提高建圖的效率,本文在SLAM建圖的數據關聯環節設置了篩選機制,在新目標物體加入地圖中時進行判定。對于新檢測到的物體,首先根據物體類別進行篩選,然后計算新點云模型與物體庫中候選點云模型的點云重合度,如果重合度大于設定閾值,則認為是同一個目標,完成物體實例與物品庫中對象的目標關聯,共同維護物體模型,否則添加新的物體模型,并更新物品庫中對象的屬性信息。
本文實驗運行平臺為Ubuntu 16.04 的操作系統,處理器型號為GTX2080Ti Intel i7-6800k。在自己構造的數據集和TUM數據集[24]上進行了實驗,驗證本文建圖方法的可行性。
4.1.1 數據集及評價指標 在COCO數據集[25]的基礎上,結合實際的實驗室環境,采集幾種常見的物體數據一起作為樣本數據,構建樣本數據集。將構造的樣本數據集分成獨立的訓練集、測試集和驗證集3個部分,并在訓練之前對數據集進行了預處理。預處理的方式主要有使用原始圖片、對輸入圖像采用隨機尺度、圖片鏡像、隨機調整曝光和飽和度等。物體類別的選擇應同實驗場景的檢測相符合,主要完成6種室內常見物體的目標檢測,分別為顯示器、鍵盤、鼠標、椅子、杯子和書本。在檢測結果中會顯示為:Tvmonitor、Keyboard、Mouse、Chair、Cup和Book。
在構建的數據集上測試目標檢測算法的檢測精度和運行效率,以平均精度均值(mean average precision,MAP)和每秒處理幀率(frames per second,FPS)作為衡量標準,并與MobileNet-SSD,MobileNetV3,YOLOV3-tiny,YOLOV4-tiny等算法進行比較。
4.1.2 實驗結果與分析 本文算法與主流的輕量級目標檢測算法的測試結果如表1所示。

表 1 不同算法測試結果
從表1可以看出,在模型體積相差不大的同等輕量級網絡YOLOV3-tiny和YOLOV4-tiny中,改進的YOLOV4-tiny算法在精度方面分別提升了14.2%和8.1%,具有更好的檢測效果。這是由于增加的殘差模塊能提取更多的細節特征,網絡利用的特征信息更加豐富,使得檢測精度更高。為了更直觀地體現檢測效果,利用測試集和實驗室場景圖像進行可視化分析,測試結果如圖5所示。

(a) 正常場景測試 (b)昏暗場景測試 (c)實驗室場景測試
從圖5(a)、(b)可以看出,改進的目標檢測算法對所訓練的物體均能檢測識別,在光線昏暗和背景復雜的情況下也能保證識別精度。圖5(c)中的現實場景測試顯示,通過改進的 YOLOV4-tiny 能有效識別環境中的顯示器、鍵盤、鼠標、椅子、杯子以及書本,每個類別的物體對應的顏色各不相同。
4.2.1 數據集及評價指標 實驗場景的選取為TUM數據集rgbd_dataset_freiburg1_desk,其中包含了600對RGB彩色圖像和深度圖像。為了評價分割方法的有效性,選取PCL點云庫中的區域增長分割(regional growth segmentation,RGS)算法和基于凹凸性的分割(locally convex connected patches,LCCP)算法與所提方法進行對比,從運行時間和物體平均分割率兩個方面進行分析,物體平均分割率表示對每一物體分割的正確率,衡量物體精準分割的性能。
4.2.2 實驗結果與分析 表2給出了不同點云分割算法在TUM數據集上的實驗結果對比。

表 2 實驗結果對比
從表2可以看出,所提分割方法在物體平均分割率上有明顯優勢。與RGS算法和LCCP算法相比分別提升了23%和12%。利用本文方法能夠對環境細節進行分割,并且分割出更多的環境目標,在相同時間下有更好的分割精度。圖6為不同算法的點云分割結果圖。

(a) RGS算法 (b) LCCP算法 (c) 本文算法
從圖6可知,RGS算法的點云分割結果噪聲數據過多,LCCP算法對于環境中的小物體如水杯,鼠標等目標的提取不準確,導致分割精度降低。由于本文方法先利用二維圖像分割算法進行預處理,提升圖像中的目標分割精度,再結合超體素聚類的方法進行分割,不僅降低了時間成本,而且對環境中大部分小物體也能實現分割,有利于實例地圖構建。
將上述目標檢測和點云分割的方法作為單獨的線程加入ORB-SLAM2框架當中,利用實驗室環境對本文建圖方法的有效性進行驗證,并且在建圖精度和方法性能方面進行評價。
通過圖7的地圖對比可以看出,圖7(a)所示原始ORB-SLAM2系統構建的地圖精度較低,地圖中的物體實例輪廓不完整且重影大,鼠標等小物體很難在地圖中被識別。圖7(b)則顯示本文方法構建的點云地圖能夠更加直觀地表現出實例信息,地圖中物體輪廓表現的更加完整,地圖精度有明顯提升。

(a) ORB-SLAM2構建的原始地圖
完成原始地圖與實例地圖的比較后,對真實環境構建的地圖信息進行時間分析,并添加與系統相似的主流方法作為參考,具體對比結果如表3所示。

表 3 不同建圖方法的對比
由于對物體實例進行了目標檢測和點云分割處理,本文構建的實例地圖中所包含的點云數量大約為ORB-SLAM2構建地圖的2倍,能夠提升物體點云的分割率,點云地圖中的物體實例輪廓更完整。同時,檢測線程的增加,使得建圖過程的時間增加,結合YOLOV3的建圖方法由于檢測算法結構復雜,雖然地圖中的點云數量增多,但對場景的單幀平均處理時間相較本文方法慢了0.08 s左右,本文對輕量級檢測算法YOLOV4-tiny的改進,有效提高了計算效率。總體來說,本文建圖方法在保證運行時間的同時能夠生成更精確的實例級點云地圖,驗證了本文方法的可行性。
傳統視覺SLAM不能對周圍環境進行實例信息感知,導致建圖精度不高,本文提出了一種基于視覺SLAM的實例建圖方法。在ORB-SLAM2系統框架下,首先采用改進的YOLOV4-tiny輕量級目標檢測網絡識別物體實例,兼顧實例信息提取的準確性和實時性,相對于原檢測網絡,檢測準確率提升8.1%;其次,利用改進的點云分割方法,將二維圖像信息與三維點云信息的分割結果進行融合,提高對地圖中實例物體的分割精度;最后,通過構建物體庫來進行地圖維護,實現三維物體實例的數據關聯與模型更新,構建出精確的實例級點云地圖。實驗結果表明,相較于原始的ORB-SLAM2建圖系統,本文方法構建的點云地圖能夠保留物體的實例信息,小物體也能很好的在地圖中被識別,地圖精度提升顯著。但本文方法的運行時間有所增加,下一步的研究重點在于保證建圖精度的同時提升運行效果。