于 翔,周 波
(東南大學(xué) 自動化學(xué)院,江蘇 南京 210096)
過去,機器人主要應(yīng)用于將人類從工業(yè)現(xiàn)場中的簡單重復(fù)勞動中解放出來,隨著經(jīng)濟的發(fā)展和人工智能領(lǐng)域的快速推進(jìn),人們對于機器人的需要不再局限于工業(yè)中的應(yīng)用,開始希望機器人能夠在人們的日常生活提供幫助,像清潔機器人、服務(wù)機器人、物流機器人等移動機器人逐漸火爆起來。
在日常生活中,移動機器人避免不了要跟人“打交道”,這就要求移動機器人必須有分辨主人位置的能力,具有檢測環(huán)境中人類的能力,移動機器人才能實現(xiàn)更好的人機交互。移動機器人在室內(nèi)應(yīng)用時,有時需要對主人進(jìn)行跟蹤,而受制于傳感器的位置限制,機器人往往只能“看到”人的后背下半身,因此在室內(nèi)人體跟蹤的背景下,需要對人體的腿部、背部進(jìn)行檢測。而由于室內(nèi)人體跟蹤相比室外檢測和跟蹤難度較低,且用于室內(nèi)跟蹤的機器人攜帶的計算資源一般不會太好,因此,室內(nèi)移動機器人也一般不會搭載較為貴重的三維激光雷達(dá)傳感器,主要以二維激光雷達(dá)傳感器和RGB-D相機為主。
現(xiàn)有的室內(nèi)人體跟蹤技術(shù)大多基于單獨的相機或者二維激光雷達(dá)傳感器。
傳統(tǒng)的視覺人體跟蹤[1]基于HOG(Histogram of Oriented Gradient,方向梯度直方圖)特征和SVM(Support Vector Machines,支持向量機)或者其他一些機器學(xué)習(xí)的人工特征和分類器進(jìn)行人體檢測,這種方法無法取得很高的精度。基于深度學(xué)習(xí)的視覺人體檢測可以采用行人檢測領(lǐng)域的相關(guān)技術(shù),行人檢測領(lǐng)域的研究不止能夠檢測到正面的人體,其他朝向的人體(如側(cè)面、背面)也能夠取得較好的檢測效果,使用行人檢測領(lǐng)域的相關(guān)技術(shù)進(jìn)行室內(nèi)人體檢測往往綽綽有余,但一些室內(nèi)場景經(jīng)常存在光照嚴(yán)重不足的狀況,這可能會導(dǎo)致性能大幅縮水。行人檢測算法可劃分為二階段檢測框架和單階段檢測框架,兩階段檢測方法生成大量的窗口,對窗口中的圖像進(jìn)行檢測和分類;一階段檢測方法將輸入圖像進(jìn)行分格化,每個格子固定預(yù)設(shè)一個錨點,將圖像中的物體分配到不同的格子之后再進(jìn)行檢測和分類。Fast RCNN[2]、Faster RCNN[3]、Mask RCNN[4]是兩階段檢測方法的代表,YOLO[5]、SSD[6]、RetinaNet[7]算法則是單階段檢測方法的代表。
傳統(tǒng)的二維激光雷達(dá)的人體跟蹤同樣使用機器學(xué)習(xí)的方式檢測環(huán)境中的人腿,Arras等人[8]提出使用Adaboost分類器進(jìn)行單一人腿的檢測,并使用腿部信息判斷人的運動狀態(tài)。Aguirre等人[9]使用支持向量機學(xué)習(xí)環(huán)境中不同模式(動態(tài)/靜態(tài))的人腿。近年來,Guerrero-Higueras等人[10]提出將二維激光雷達(dá)采集的環(huán)境點云轉(zhuǎn)化為占用圖,并以生物醫(yī)學(xué)中經(jīng)常應(yīng)用的U-Net[11]檢測占用圖中成對出現(xiàn)的人腿,這種方法通過將二維點云轉(zhuǎn)化為圖像,由此可以使用深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行人腿檢測,這類似于三維點云的俯視圖操作,將三維點云轉(zhuǎn)化為俯視圖再使用圖像卷積神經(jīng)網(wǎng)絡(luò)對俯視圖進(jìn)行特征提取,本質(zhì)上是一種模態(tài)之間的相互轉(zhuǎn)化。點云人體跟蹤方法缺乏對于環(huán)境中類似人腿物體的魯棒性,極易把室內(nèi)細(xì)小的桌子腿、椅子腿檢測為人腿。
由于單模態(tài)的方法在室內(nèi)人體跟蹤應(yīng)用時各自存在一些問題,多模態(tài)融合來提高室內(nèi)跟蹤的魯棒性就成為了一種自然而然的想法,利用兩種模態(tài)的檢測結(jié)果進(jìn)行決策方面的融合有望取得更好的效果。
因此,為增加室內(nèi)人體跟蹤的魯棒性,該文提出了一種二維激光雷達(dá)點云和相機圖像融合的室內(nèi)人體跟蹤方法。使用目標(biāo)檢測領(lǐng)域表現(xiàn)出色的YOLO v3網(wǎng)絡(luò)[12]檢測相機中出現(xiàn)的行人,利用Adaboost分類器對分段二維點云進(jìn)行訓(xùn)練和分類來檢測二維點云中的人腿,結(jié)合視覺和點云的檢測位置最終判定人的位置,并基于EKF[13]進(jìn)行人體跟蹤。
提出的基于多模態(tài)融合的室內(nèi)人體跟蹤框架可以分為以下四個部分:二維點云聚類、分段點云分類、視覺人體檢測和多模態(tài)融合的KCF跟蹤,整體流程如圖1所示。
二維點云聚類:由于完整的二維點云數(shù)據(jù)難以通過機器學(xué)習(xí)或深度學(xué)習(xí)直接分辨其中每個點所屬的類別,因此,需要將原始二維點云分割為數(shù)個易于分類的點云段。根據(jù)激光雷達(dá)傳感器的掃描線角度和掃描點距離傳感器的距離進(jìn)行二維點云的聚類,將原始點云分割成數(shù)個小點云段。
分段點云分類:二維激光雷達(dá)采集到的二維點云中點數(shù)較少,不適合使用類似PointNet的三維點云處理網(wǎng)絡(luò)進(jìn)行訓(xùn)練。鑒于此,該文依然沿用了傳統(tǒng)的機器學(xué)習(xí)方法,使用Adaboost分類器對點云段的幾何和統(tǒng)計特征進(jìn)行訓(xùn)練,將點云段分類為人腿和非人腿。
視覺人體檢測:深度學(xué)習(xí)流行之后,行人檢測領(lǐng)域取得了極大突破,使用經(jīng)典的YOLO v3網(wǎng)絡(luò)進(jìn)行視覺人體檢測,輸出圖像坐標(biāo)系中的人體邊界框,完成視覺圖像的行人定位。
多模態(tài)融合的EKF跟蹤:根據(jù)點云的分類結(jié)果將人腿點云段投影到二維圖像坐標(biāo)系。基于概率數(shù)據(jù)關(guān)聯(lián)對點云人腿段和視覺人體檢測框進(jìn)行匹配,并基于EKF(Extended Kalman Filter,擴展卡爾曼濾波器)進(jìn)行跟蹤,實現(xiàn)后融合的多模態(tài)人體跟蹤。
圖1 多模態(tài)融合的室內(nèi)人體跟蹤整體流程
為了能夠在二維點云中檢測出人腿,需要將激光雷達(dá)掃描到的數(shù)據(jù)點分割成不同的段。激光掃描一周發(fā)射270條射線,最大得到270個點的有序點云,假設(shè)原點云P中的點由極坐標(biāo)表示,即p=(φ,r),其中r和φ分別表示掃描點距離激光雷達(dá)的距離和角度值。根據(jù)鄰近點的跳變距離,將原始點云分割為不同的段,如果相鄰兩點之間的距離小于某閾值,則視其與上個點同屬于一個點集,如果距離大于某閾值,則后點屬于一個新的點集;遍歷整個原始點云后,剔除一些數(shù)據(jù)點數(shù)過少的分段使i≥3,最后形成多個可提取特征的點云段Si(i=1,2,…,N),二維點云P={S1,S2,…,SN}。
構(gòu)建Si的8種特征[14]的弱分類器用于之后的訓(xùn)練過程,10種特征代表點云段的幾何屬性和統(tǒng)計特性:
(1)點的數(shù)目。
n=len(Si)
(1)
(2)標(biāo)準(zhǔn)差。
(2)
(3)平均偏差。
(3)
(4)
(4)點云段寬度。
d1,n=‖x1-xn‖
(5)
其中,1和n分別表示點云段的開始點和末尾點,該寬度衡量了點云段開始點和結(jié)束點之間的歐氏距離。
(5)邊界長度。
(6)
其中,dj,j-1=‖xj-xj-1‖表示點云段中相鄰兩點之間的歐氏距離,邊界長度是所有相鄰點距離的總和。
(6)邊界標(biāo)準(zhǔn)差。
(7)
(7)平均曲率:假設(shè)點云段Si的三個相鄰點為xa,xb和xc,dab,dbc和dac分別表示相鄰兩點之間的距離,A表示三角形xaxbxc的面積,則xb處的曲率可表示為:
(8)
A可由海倫公式得出:
(9)
其中,p=(dA+dB+dC)/2。則平均曲率為:
(10)
(8)平均角度變化:記相鄰兩點之間的連線的角度變化值為:
(11)
則平均角度變化:
(12)
對點云分割得到的點云段訓(xùn)練集進(jìn)行人工標(biāo)注,正樣本(人腿)標(biāo)簽為+1,負(fù)樣本(非人腿)標(biāo)簽為-1;將訓(xùn)練集樣本輸入至Adaboost最終得到強分類器用以對點云段進(jìn)行分類。
YOLO是一種單階段的目標(biāo)檢測架構(gòu),在目標(biāo)檢測領(lǐng)域取得了極大的成就。因此,選擇較為新穎的YOLO v3網(wǎng)絡(luò)進(jìn)行行人檢測。網(wǎng)絡(luò)結(jié)構(gòu)上,YOLO v3使用DarkNet53[15]作為主干網(wǎng)絡(luò),整合了殘差思想和特征金字塔思想,DarkNet53的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 DarkNet53網(wǎng)絡(luò)結(jié)構(gòu)
網(wǎng)絡(luò)的輸入圖像被裁剪成416×416×3的RGB圖像,在Darknet53骨架網(wǎng)絡(luò)中,輸入首先經(jīng)過一個卷積層,其后跟隨著Batch Norm(批正則化)和Leaky ReLU激活函數(shù),隨后經(jīng)過數(shù)個殘差塊,輸出三個維度的特征圖。三個維度的特征圖再經(jīng)過卷積操作,得到8×8×255,16×16×255和32×32×255三個維度上的輸出特征圖。不同維度的特征圖對應(yīng)的感受野不同,負(fù)責(zé)檢測不同尺寸的目標(biāo),小尺寸的8×8×255特征圖用于檢測大尺寸的目標(biāo),大尺寸的32×32×255特征圖用于檢查較小的目標(biāo)。
YOLO v3使用聚類算法,每張輸出特征圖生成3個先驗框,先驗框的大小如表1所示。
表1 特征圖對應(yīng)的不同尺度先驗框
有了先驗框和輸出特征圖之后,就可以對先驗框進(jìn)行解碼,判斷類別和置信度,得到真正的檢測框。
最終,對于每個輸入圖像,整個YOLO v3可以解碼出8×8×3+16×16×3+32×32×3=4 032個矩形框以及對應(yīng)的類別和置信度。
為了提高室內(nèi)人體檢測的準(zhǔn)確性和魯棒性,該文從二維點云中檢測到人腿點云段,從視覺圖像中獲得人體邊界框后,對兩種傳感器獲得的結(jié)果進(jìn)行融合處理。
首先,將人腿點云段投影到圖像上,原始二維點云基于激光雷達(dá)坐標(biāo)系,通過激光雷達(dá)和相機的位置關(guān)系先將二維點云轉(zhuǎn)換至相機坐標(biāo)系,再從相機坐標(biāo)系轉(zhuǎn)換到圖像坐標(biāo)系。激光雷達(dá)和相機的聯(lián)合標(biāo)定過程由ROS開源的Autoware Calibration Tookit完成,通過選取相同一點在點云和圖像中的位置來自動計算激光雷達(dá)坐標(biāo)系到圖像坐標(biāo)系的變換矩陣。
點云段和人體邊界框統(tǒng)一到圖像坐標(biāo)系下,就可以對室內(nèi)人體的位置進(jìn)行數(shù)據(jù)關(guān)聯(lián)。為了評估點云段和人體邊界框的關(guān)聯(lián)性,即多大程度上二者為同一人,使用概率數(shù)據(jù)關(guān)聯(lián)方法來評估兩種模態(tài)目標(biāo)之間的關(guān)聯(lián)性。
假設(shè)能夠包含圖像人腿點的最小矩形框為RLi,視覺傳感器檢測到的人體邊界框為RCj,i和j分別表示人腿點矩形區(qū)域和人體矩形區(qū)域的序號。則RLi與RCj的交并比可以衡量人腿和人體屬于同一人的概率:
(13)
其中,S表示各區(qū)域的面積,人體和人腿矩形框的重疊區(qū)域占總區(qū)域比重越大,說明二者的關(guān)聯(lián)性越高,屬于同一人的概率越大;人體和人腿的重疊區(qū)域占總區(qū)域比重越小,說明二者關(guān)聯(lián)性越小,傾向于屬于不同的人或者某種模態(tài)的數(shù)據(jù)出現(xiàn)假陽性。圖像中檢測到的人體邊界框遍歷所有被分類為人體的點云段,其概率PIOU最大且超過一定閾值的即為同一人。
結(jié)合多模態(tài)信息檢測出人體后,需要對被檢測的目標(biāo)進(jìn)行狀態(tài)估計。假設(shè)被檢測人體的狀態(tài)量:
X=(x,y,z,vx,vy,vz)
(14)
其中,x,y,z分別表示某時刻目標(biāo)人體在x,y,z軸的坐標(biāo),vx,vy,vz表示此時機器人在三個軸的速度。則t時刻擴展卡爾曼濾波的預(yù)測方程為:
(15)
其中,f(?)代表非線性函數(shù),At和Wt為過程協(xié)方差矩陣,Qt-1為上一時刻的噪聲協(xié)方差矩陣。t時刻EKF的修正方程為:
(16)
其中,h表示狀態(tài)量與觀測量之間的非線性關(guān)系,Ht和Vt為h的雅可比矩陣,Rt為觀測噪聲協(xié)方差矩陣。
如果得到融合人體目標(biāo)之后沒有EKF的預(yù)測值與之對應(yīng),則初始化一個新的目標(biāo)ID,根據(jù)此人的狀態(tài)生產(chǎn)新的預(yù)測值,繼續(xù)進(jìn)行迭代匹配。如果EKF預(yù)測的目標(biāo)在一定時間內(nèi)得不到與之對應(yīng)的人體目標(biāo),則刪除此人的ID。
為驗證上述多模態(tài)人體跟蹤系統(tǒng)的有效性,基于ROS系統(tǒng)使用python語言搭建了以上多模態(tài)融合的室內(nèi)人體跟蹤系統(tǒng),通過ROS節(jié)點之間的發(fā)布和接收消息完成傳感器數(shù)據(jù)的傳輸。該系統(tǒng)的機器人平臺選擇Turtlebot2移動機器人,Turtlebot2是ROS官方打造的軟硬件科研平臺,計算平臺使用ThinkPad E580,搭載處理器Intel Core i7-8550 CPU@1.80 GHz,顯卡為AMD Radeon RX 550 4G,安裝Ubuntu 16.04和ROS Kinetic Kame。二維激光雷達(dá)選擇日本北洋(Hokuyo)公司的URG-04LX-UG001傳感器,視覺傳感器使用Kinect V2,平臺如圖3(a)所示。
圖3 實驗平臺及實驗場景
為了測試多模態(tài)融合室內(nèi)跟蹤方法的效果,分別在嘈雜的實驗室環(huán)境、晦暗但安靜的走廊環(huán)境采集共400幀點云和圖像數(shù)據(jù)并進(jìn)行標(biāo)注,實驗環(huán)境如圖3(b)、(c)所示。
對圖像數(shù)據(jù),在圖中標(biāo)注出人所在的邊界框,實驗時使用SSD、YOLO v3、YOLO v4和文中算法輸入數(shù)據(jù)進(jìn)行人體檢測,評估指標(biāo)為平均檢測精度(mean Average Precision,mAP)和檢測框與真值框之間的平均交并比(Intersection over Union,IoU),實驗對比結(jié)果如表2所示。
表2 四種算法在自建數(shù)據(jù)集中的mAP(平均檢測精度)及IoU(交并比)比較
從表2可以看出,所提多模態(tài)融合室內(nèi)人體檢測方法在與其他視覺行人檢測方法對比時取得了最優(yōu)效果,由于室內(nèi)環(huán)境的光照往往會發(fā)生忽明忽暗的變化,不像室外環(huán)境一樣近似平行光,圖像人體檢測總會出現(xiàn)一段時間檢測不到的現(xiàn)象,此時就需要點云模態(tài)進(jìn)行補充。
對點云數(shù)據(jù),首先對整體點云進(jìn)行分割,分割后標(biāo)注出各個分段屬于人腿還是非人腿。實驗時分別使用單獨的Adaboost人腿檢測器和多模態(tài)融合的人腿檢測器對人腿段進(jìn)行分類,最后統(tǒng)計所有點的平均分類準(zhǔn)確度,結(jié)果如表3所示。
表3 兩種算法在自建數(shù)據(jù)集中的平均準(zhǔn)確率比較
由表3可以看出,推理人體位置時引入了多模態(tài)決策后,實驗室環(huán)境和走廊環(huán)境的檢測平均準(zhǔn)確率均有所提高,證明了多模態(tài)融合決策的有效性和可行性。室內(nèi)點云人腿檢測由于數(shù)據(jù)量較小,使用機器學(xué)習(xí)訓(xùn)練的分類器準(zhǔn)確率不會很高,因此,圖像模態(tài)可以為其提供補充。
圖4 實驗室環(huán)境的人體檢測結(jié)果
圖4展示了實驗室環(huán)境中的人體檢測結(jié)果,點群為檢測到的人腿段,方框則為視覺檢測到的人體。由于環(huán)境中存在椅子腿和隔離墻的邊緣這種點云表示類似人腿的物體,僅僅使用點云段檢測往往會發(fā)生誤分類,而結(jié)合視覺之后就可以更加魯棒地完成跟蹤。
由此可以看出,所提多模態(tài)融合室內(nèi)人體系統(tǒng)針對室內(nèi)環(huán)境都取得了可觀的效果,證明了該方法的魯棒性和有效性。
針對移動機器人室內(nèi)人體跟蹤的魯棒性問題進(jìn)行了相關(guān)研究,實現(xiàn)了一個多模態(tài)融合的室內(nèi)人體跟蹤系統(tǒng),以較少的計算資源完成更加魯棒的跟蹤任務(wù)。將該系統(tǒng)應(yīng)用于多種室內(nèi)環(huán)境中,包括弱光照的走廊、環(huán)境嘈雜的實驗室區(qū)域,均完成了正確的人體檢測,驗證了該系統(tǒng)的有效性和通用性。
針對移動機器人室內(nèi)跟蹤的問題,如何以更少的計算資源完成實時的多模態(tài)融合的跟蹤任務(wù)仍然需要進(jìn)一步研究,可以使用RGB-D相機獲得像素中每個點的深度后得到相應(yīng)結(jié)構(gòu)化點云,以減少傳感器的數(shù)量;也可以探究更加輕量級的人體檢測方法以減少系統(tǒng)的計算資源消耗。