于 翔,周 波
(東南大學 自動化學院,江蘇 南京 210096)
過去,機器人主要應用于將人類從工業現場中的簡單重復勞動中解放出來,隨著經濟的發展和人工智能領域的快速推進,人們對于機器人的需要不再局限于工業中的應用,開始希望機器人能夠在人們的日常生活提供幫助,像清潔機器人、服務機器人、物流機器人等移動機器人逐漸火爆起來。
在日常生活中,移動機器人避免不了要跟人“打交道”,這就要求移動機器人必須有分辨主人位置的能力,具有檢測環境中人類的能力,移動機器人才能實現更好的人機交互。移動機器人在室內應用時,有時需要對主人進行跟蹤,而受制于傳感器的位置限制,機器人往往只能“看到”人的后背下半身,因此在室內人體跟蹤的背景下,需要對人體的腿部、背部進行檢測。而由于室內人體跟蹤相比室外檢測和跟蹤難度較低,且用于室內跟蹤的機器人攜帶的計算資源一般不會太好,因此,室內移動機器人也一般不會搭載較為貴重的三維激光雷達傳感器,主要以二維激光雷達傳感器和RGB-D相機為主。
現有的室內人體跟蹤技術大多基于單獨的相機或者二維激光雷達傳感器。
傳統的視覺人體跟蹤[1]基于HOG(Histogram of Oriented Gradient,方向梯度直方圖)特征和SVM(Support Vector Machines,支持向量機)或者其他一些機器學習的人工特征和分類器進行人體檢測,這種方法無法取得很高的精度。基于深度學習的視覺人體檢測可以采用行人檢測領域的相關技術,行人檢測領域的研究不止能夠檢測到正面的人體,其他朝向的人體(如側面、背面)也能夠取得較好的檢測效果,使用行人檢測領域的相關技術進行室內人體檢測往往綽綽有余,但一些室內場景經常存在光照嚴重不足的狀況,這可能會導致性能大幅縮水。行人檢測算法可劃分為二階段檢測框架和單階段檢測框架,兩階段檢測方法生成大量的窗口,對窗口中的圖像進行檢測和分類;一階段檢測方法將輸入圖像進行分格化,每個格子固定預設一個錨點,將圖像中的物體分配到不同的格子之后再進行檢測和分類。Fast RCNN[2]、Faster RCNN[3]、Mask RCNN[4]是兩階段檢測方法的代表,YOLO[5]、SSD[6]、RetinaNet[7]算法則是單階段檢測方法的代表。
傳統的二維激光雷達的人體跟蹤同樣使用機器學習的方式檢測環境中的人腿,Arras等人[8]提出使用Adaboost分類器進行單一人腿的檢測,并使用腿部信息判斷人的運動狀態。Aguirre等人[9]使用支持向量機學習環境中不同模式(動態/靜態)的人腿。近年來,Guerrero-Higueras等人[10]提出將二維激光雷達采集的環境點云轉化為占用圖,并以生物醫學中經常應用的U-Net[11]檢測占用圖中成對出現的人腿,這種方法通過將二維點云轉化為圖像,由此可以使用深度學習的卷積神經網絡進行人腿檢測,這類似于三維點云的俯視圖操作,將三維點云轉化為俯視圖再使用圖像卷積神經網絡對俯視圖進行特征提取,本質上是一種模態之間的相互轉化。點云人體跟蹤方法缺乏對于環境中類似人腿物體的魯棒性,極易把室內細小的桌子腿、椅子腿檢測為人腿。
由于單模態的方法在室內人體跟蹤應用時各自存在一些問題,多模態融合來提高室內跟蹤的魯棒性就成為了一種自然而然的想法,利用兩種模態的檢測結果進行決策方面的融合有望取得更好的效果。
因此,為增加室內人體跟蹤的魯棒性,該文提出了一種二維激光雷達點云和相機圖像融合的室內人體跟蹤方法。使用目標檢測領域表現出色的YOLO v3網絡[12]檢測相機中出現的行人,利用Adaboost分類器對分段二維點云進行訓練和分類來檢測二維點云中的人腿,結合視覺和點云的檢測位置最終判定人的位置,并基于EKF[13]進行人體跟蹤。
提出的基于多模態融合的室內人體跟蹤框架可以分為以下四個部分:二維點云聚類、分段點云分類、視覺人體檢測和多模態融合的KCF跟蹤,整體流程如圖1所示。
二維點云聚類:由于完整的二維點云數據難以通過機器學習或深度學習直接分辨其中每個點所屬的類別,因此,需要將原始二維點云分割為數個易于分類的點云段。根據激光雷達傳感器的掃描線角度和掃描點距離傳感器的距離進行二維點云的聚類,將原始點云分割成數個小點云段。
分段點云分類:二維激光雷達采集到的二維點云中點數較少,不適合使用類似PointNet的三維點云處理網絡進行訓練。鑒于此,該文依然沿用了傳統的機器學習方法,使用Adaboost分類器對點云段的幾何和統計特征進行訓練,將點云段分類為人腿和非人腿。
視覺人體檢測:深度學習流行之后,行人檢測領域取得了極大突破,使用經典的YOLO v3網絡進行視覺人體檢測,輸出圖像坐標系中的人體邊界框,完成視覺圖像的行人定位。
多模態融合的EKF跟蹤:根據點云的分類結果將人腿點云段投影到二維圖像坐標系。基于概率數據關聯對點云人腿段和視覺人體檢測框進行匹配,并基于EKF(Extended Kalman Filter,擴展卡爾曼濾波器)進行跟蹤,實現后融合的多模態人體跟蹤。

圖1 多模態融合的室內人體跟蹤整體流程
為了能夠在二維點云中檢測出人腿,需要將激光雷達掃描到的數據點分割成不同的段。激光掃描一周發射270條射線,最大得到270個點的有序點云,假設原點云P中的點由極坐標表示,即p=(φ,r),其中r和φ分別表示掃描點距離激光雷達的距離和角度值。根據鄰近點的跳變距離,將原始點云分割為不同的段,如果相鄰兩點之間的距離小于某閾值,則視其與上個點同屬于一個點集,如果距離大于某閾值,則后點屬于一個新的點集;遍歷整個原始點云后,剔除一些數據點數過少的分段使i≥3,最后形成多個可提取特征的點云段Si(i=1,2,…,N),二維點云P={S1,S2,…,SN}。
構建Si的8種特征[14]的弱分類器用于之后的訓練過程,10種特征代表點云段的幾何屬性和統計特性:
(1)點的數目。
n=len(Si)
(1)
(2)標準差。
(2)

(3)平均偏差。
(3)

(4)
(4)點云段寬度。
d1,n=‖x1-xn‖
(5)
其中,1和n分別表示點云段的開始點和末尾點,該寬度衡量了點云段開始點和結束點之間的歐氏距離。
(5)邊界長度。
(6)
其中,dj,j-1=‖xj-xj-1‖表示點云段中相鄰兩點之間的歐氏距離,邊界長度是所有相鄰點距離的總和。
(6)邊界標準差。
(7)

(7)平均曲率:假設點云段Si的三個相鄰點為xa,xb和xc,dab,dbc和dac分別表示相鄰兩點之間的距離,A表示三角形xaxbxc的面積,則xb處的曲率可表示為:
(8)
A可由海倫公式得出:
(9)
其中,p=(dA+dB+dC)/2。則平均曲率為:

(10)
(8)平均角度變化:記相鄰兩點之間的連線的角度變化值為:
(11)
則平均角度變化:
(12)
對點云分割得到的點云段訓練集進行人工標注,正樣本(人腿)標簽為+1,負樣本(非人腿)標簽為-1;將訓練集樣本輸入至Adaboost最終得到強分類器用以對點云段進行分類。
YOLO是一種單階段的目標檢測架構,在目標檢測領域取得了極大的成就。因此,選擇較為新穎的YOLO v3網絡進行行人檢測。網絡結構上,YOLO v3使用DarkNet53[15]作為主干網絡,整合了殘差思想和特征金字塔思想,DarkNet53的網絡結構如圖2所示。

圖2 DarkNet53網絡結構
網絡的輸入圖像被裁剪成416×416×3的RGB圖像,在Darknet53骨架網絡中,輸入首先經過一個卷積層,其后跟隨著Batch Norm(批正則化)和Leaky ReLU激活函數,隨后經過數個殘差塊,輸出三個維度的特征圖。三個維度的特征圖再經過卷積操作,得到8×8×255,16×16×255和32×32×255三個維度上的輸出特征圖。不同維度的特征圖對應的感受野不同,負責檢測不同尺寸的目標,小尺寸的8×8×255特征圖用于檢測大尺寸的目標,大尺寸的32×32×255特征圖用于檢查較小的目標。
YOLO v3使用聚類算法,每張輸出特征圖生成3個先驗框,先驗框的大小如表1所示。

表1 特征圖對應的不同尺度先驗框
有了先驗框和輸出特征圖之后,就可以對先驗框進行解碼,判斷類別和置信度,得到真正的檢測框。
最終,對于每個輸入圖像,整個YOLO v3可以解碼出8×8×3+16×16×3+32×32×3=4 032個矩形框以及對應的類別和置信度。
為了提高室內人體檢測的準確性和魯棒性,該文從二維點云中檢測到人腿點云段,從視覺圖像中獲得人體邊界框后,對兩種傳感器獲得的結果進行融合處理。
首先,將人腿點云段投影到圖像上,原始二維點云基于激光雷達坐標系,通過激光雷達和相機的位置關系先將二維點云轉換至相機坐標系,再從相機坐標系轉換到圖像坐標系。激光雷達和相機的聯合標定過程由ROS開源的Autoware Calibration Tookit完成,通過選取相同一點在點云和圖像中的位置來自動計算激光雷達坐標系到圖像坐標系的變換矩陣。
點云段和人體邊界框統一到圖像坐標系下,就可以對室內人體的位置進行數據關聯。為了評估點云段和人體邊界框的關聯性,即多大程度上二者為同一人,使用概率數據關聯方法來評估兩種模態目標之間的關聯性。
假設能夠包含圖像人腿點的最小矩形框為RLi,視覺傳感器檢測到的人體邊界框為RCj,i和j分別表示人腿點矩形區域和人體矩形區域的序號。則RLi與RCj的交并比可以衡量人腿和人體屬于同一人的概率:
(13)
其中,S表示各區域的面積,人體和人腿矩形框的重疊區域占總區域比重越大,說明二者的關聯性越高,屬于同一人的概率越大;人體和人腿的重疊區域占總區域比重越小,說明二者關聯性越小,傾向于屬于不同的人或者某種模態的數據出現假陽性。圖像中檢測到的人體邊界框遍歷所有被分類為人體的點云段,其概率PIOU最大且超過一定閾值的即為同一人。
結合多模態信息檢測出人體后,需要對被檢測的目標進行狀態估計。假設被檢測人體的狀態量:
X=(x,y,z,vx,vy,vz)
(14)
其中,x,y,z分別表示某時刻目標人體在x,y,z軸的坐標,vx,vy,vz表示此時機器人在三個軸的速度。則t時刻擴展卡爾曼濾波的預測方程為:
(15)
其中,f(?)代表非線性函數,At和Wt為過程協方差矩陣,Qt-1為上一時刻的噪聲協方差矩陣。t時刻EKF的修正方程為:
(16)
其中,h表示狀態量與觀測量之間的非線性關系,Ht和Vt為h的雅可比矩陣,Rt為觀測噪聲協方差矩陣。
如果得到融合人體目標之后沒有EKF的預測值與之對應,則初始化一個新的目標ID,根據此人的狀態生產新的預測值,繼續進行迭代匹配。如果EKF預測的目標在一定時間內得不到與之對應的人體目標,則刪除此人的ID。
為驗證上述多模態人體跟蹤系統的有效性,基于ROS系統使用python語言搭建了以上多模態融合的室內人體跟蹤系統,通過ROS節點之間的發布和接收消息完成傳感器數據的傳輸。該系統的機器人平臺選擇Turtlebot2移動機器人,Turtlebot2是ROS官方打造的軟硬件科研平臺,計算平臺使用ThinkPad E580,搭載處理器Intel Core i7-8550 CPU@1.80 GHz,顯卡為AMD Radeon RX 550 4G,安裝Ubuntu 16.04和ROS Kinetic Kame。二維激光雷達選擇日本北洋(Hokuyo)公司的URG-04LX-UG001傳感器,視覺傳感器使用Kinect V2,平臺如圖3(a)所示。

圖3 實驗平臺及實驗場景
為了測試多模態融合室內跟蹤方法的效果,分別在嘈雜的實驗室環境、晦暗但安靜的走廊環境采集共400幀點云和圖像數據并進行標注,實驗環境如圖3(b)、(c)所示。
對圖像數據,在圖中標注出人所在的邊界框,實驗時使用SSD、YOLO v3、YOLO v4和文中算法輸入數據進行人體檢測,評估指標為平均檢測精度(mean Average Precision,mAP)和檢測框與真值框之間的平均交并比(Intersection over Union,IoU),實驗對比結果如表2所示。

表2 四種算法在自建數據集中的mAP(平均檢測精度)及IoU(交并比)比較
從表2可以看出,所提多模態融合室內人體檢測方法在與其他視覺行人檢測方法對比時取得了最優效果,由于室內環境的光照往往會發生忽明忽暗的變化,不像室外環境一樣近似平行光,圖像人體檢測總會出現一段時間檢測不到的現象,此時就需要點云模態進行補充。
對點云數據,首先對整體點云進行分割,分割后標注出各個分段屬于人腿還是非人腿。實驗時分別使用單獨的Adaboost人腿檢測器和多模態融合的人腿檢測器對人腿段進行分類,最后統計所有點的平均分類準確度,結果如表3所示。

表3 兩種算法在自建數據集中的平均準確率比較
由表3可以看出,推理人體位置時引入了多模態決策后,實驗室環境和走廊環境的檢測平均準確率均有所提高,證明了多模態融合決策的有效性和可行性。室內點云人腿檢測由于數據量較小,使用機器學習訓練的分類器準確率不會很高,因此,圖像模態可以為其提供補充。

圖4 實驗室環境的人體檢測結果
圖4展示了實驗室環境中的人體檢測結果,點群為檢測到的人腿段,方框則為視覺檢測到的人體。由于環境中存在椅子腿和隔離墻的邊緣這種點云表示類似人腿的物體,僅僅使用點云段檢測往往會發生誤分類,而結合視覺之后就可以更加魯棒地完成跟蹤。
由此可以看出,所提多模態融合室內人體系統針對室內環境都取得了可觀的效果,證明了該方法的魯棒性和有效性。
針對移動機器人室內人體跟蹤的魯棒性問題進行了相關研究,實現了一個多模態融合的室內人體跟蹤系統,以較少的計算資源完成更加魯棒的跟蹤任務。將該系統應用于多種室內環境中,包括弱光照的走廊、環境嘈雜的實驗室區域,均完成了正確的人體檢測,驗證了該系統的有效性和通用性。
針對移動機器人室內跟蹤的問題,如何以更少的計算資源完成實時的多模態融合的跟蹤任務仍然需要進一步研究,可以使用RGB-D相機獲得像素中每個點的深度后得到相應結構化點云,以減少傳感器的數量;也可以探究更加輕量級的人體檢測方法以減少系統的計算資源消耗。