陳澤鵬,李文湧,勞子健,陳 羽,李佼洋,王嘉輝,鄭 民,2
(1.中山大學(xué) 物理學(xué)院,廣東 廣州 510275;2.湛江幼兒師范??茖W(xué)校(嶺南師范學(xué)院基礎(chǔ)教育學(xué)院),廣東 湛江 524084;3.中山大學(xué) 電子與信息工程學(xué)院,廣東 廣州 510275)
隨著人工智能的普及,各行各業(yè)開(kāi)始步入智能化發(fā)展[1]。近年來(lái)電子商務(wù)的蓬勃發(fā)展帶動(dòng)了物流行業(yè),人們對(duì)物流配送速度的要求越來(lái)越高。自動(dòng)導(dǎo)引運(yùn)輸車(automated guided vehicle,AGV)由于較高的自動(dòng)化水平和可對(duì)貨物實(shí)施智能運(yùn)輸?shù)膬?yōu)點(diǎn),已逐漸進(jìn)入物流倉(cāng)儲(chǔ)行業(yè)。AGV 在倉(cāng)儲(chǔ)環(huán)節(jié)中,主要是替代人工進(jìn)行繁雜的分揀,實(shí)現(xiàn)24 小時(shí)不間斷工作。正因?yàn)锳GV 在室內(nèi)應(yīng)用越來(lái)越廣泛,科研人員對(duì)室內(nèi)定位表現(xiàn)出極大興趣。關(guān)于室內(nèi)定位,主要涉及二維碼[2]、射頻識(shí)別(radio frequency identification,RFID)[3]、藍(lán)牙[4]、可見(jiàn)光[5]、計(jì)算機(jī)視覺(jué)技術(shù)[6-7]等。二維碼定位技術(shù)相對(duì)比較成熟,但是需要定點(diǎn)掃描,導(dǎo)致其無(wú)法充分利用空間,降低了倉(cāng)庫(kù)空間的利用率,同時(shí)易造成標(biāo)簽?zāi)p。對(duì)于藍(lán)牙和RFID 定位,其需要持續(xù)發(fā)射電磁信號(hào),功耗較大,存在由信號(hào)干擾引起的定位漂移的情況。而可見(jiàn)光定位的短板則在于無(wú)法處理光遮擋問(wèn)題,難以實(shí)際應(yīng)用。盡管計(jì)算機(jī)視覺(jué)應(yīng)用在定位技術(shù)上結(jié)構(gòu)簡(jiǎn)單、硬件成本低廉,但研究起步較晚。2013 年HAN S B 等提出的基于標(biāo)志物的粒子定位算法(label particle localization algorithm,LPLA),利用單目攝像頭在1.6 m×2 m 范圍內(nèi)實(shí)現(xiàn)標(biāo)準(zhǔn)差為7.1 cm 的定位[8],但與其他技術(shù)相比,定位精度仍有差距。2017 年,YANG Guojun 等利用AR(augmented reality)標(biāo)記物的旋轉(zhuǎn)變形等信息實(shí)現(xiàn)單目視覺(jué)下精度為cm 級(jí)的粗定位[9]。2018 年,曹小華等利用棋盤(pán)格在進(jìn)行標(biāo)定的同時(shí),通過(guò)平面投影實(shí)現(xiàn)誤差在3%~5%的單目視覺(jué)的距離求解,且該工作未涉及角度測(cè)量[10]?,F(xiàn)有單目視覺(jué)技術(shù)結(jié)構(gòu)簡(jiǎn)單,雖然有望成為室內(nèi)導(dǎo)航的主流技術(shù),但是其定位精度仍有待提高。
因此,本文結(jié)合深度學(xué)習(xí)和計(jì)算機(jī)視覺(jué),提出一種基于嵌入式GPU(graphics processing unit)的特征畸變單目視覺(jué)定位系統(tǒng)。該系統(tǒng)使用經(jīng)特殊設(shè)計(jì)的圓環(huán)編碼圖案作為全局特征標(biāo)簽,其編碼映射為自身坐標(biāo)。通過(guò)目標(biāo)檢測(cè)算法識(shí)別和分割帶畸變的特征圓環(huán)標(biāo)簽,利用特征標(biāo)簽的物像形變信息,輸入至XGBoost 算法訓(xùn)練的機(jī)器學(xué)習(xí)回歸模型,預(yù)測(cè)出相機(jī)相對(duì)特征標(biāo)簽的坐標(biāo),結(jié)合該特征標(biāo)簽的絕對(duì)坐標(biāo)和目前相機(jī)的朝向,解算出相機(jī)的室內(nèi)絕對(duì)坐標(biāo)。
對(duì)于計(jì)算機(jī)視覺(jué)定位而言,視覺(jué)標(biāo)簽的設(shè)計(jì)十分重要。首先視覺(jué)標(biāo)簽必須能夠準(zhǔn)確反映自身的絕對(duì)位置信息,并不具備二義性;其次要便于通過(guò)計(jì)算機(jī)視覺(jué)方法從背景分割、識(shí)別[11]。根據(jù)以上兩點(diǎn)要求,本文提出用一種黑白半圓環(huán)相間的圓作為定位的特征標(biāo)簽,如圖1 所示。該類型特征標(biāo)簽以一定間隔平整地鋪設(shè)在地面上,并且規(guī)定小車有4 個(gè)運(yùn)動(dòng)方向:前、后、左、右。
圖1 圓環(huán)編碼圖案及解碼示意圖(方向“1234”指相機(jī)所處位置)Fig.1 Ring encoded pattern and schematic diagram of decoding (number 1 to 4 refers to position of camera)
相機(jī)采集圖像后,利用深度學(xué)習(xí)目標(biāo)檢測(cè)模型識(shí)別圖像中的特征標(biāo)簽,并返回離相機(jī)最近的標(biāo)志物邊界框,設(shè)置圖像ROI(region of interest)[12]進(jìn)行下一步處理??紤]到對(duì)于運(yùn)動(dòng)的小車,若要實(shí)現(xiàn)實(shí)時(shí)的目標(biāo)檢測(cè),必須使用一種高效而精簡(jiǎn)的神經(jīng)網(wǎng)絡(luò)。因此目標(biāo)檢測(cè)模型采用YOLO(you only look once)網(wǎng)絡(luò)模型[13],其優(yōu)點(diǎn)是速度快,占用內(nèi)存少,準(zhǔn)確率高,非常適合在如嵌入式GPU 等算力不強(qiáng)的設(shè)備中使用。
在獲取標(biāo)志物的圖像后,按其中心縱軸坐標(biāo)y0以下若干個(gè)像素(本文取2 個(gè)像素)的位置讀取像素灰度值,并丟棄背景像素,最后運(yùn)用Otsu 法(即最大類間方差法)進(jìn)行二值化。Otsu 法可以自適應(yīng)地確定最佳閾值,有效區(qū)分背景和目標(biāo)。Otsu法計(jì)算閾值的公式為
式中:t為灰度分割閾值;u為圖像平均灰度值;u0(t)、u1(t)分別為t分割閾值下,背景的平均灰度值和目標(biāo)物的平均灰度值;w0(t)、w1(t)分別為t分割閾值下背景占比和目標(biāo)物占比。
如圖2 所示,通過(guò)二值化后,橫向讀取的灰度信息將從0~255 的分布變?yōu)? 或255 的分布。定義灰度0 的像素讀出值為0,灰度為255 的像素讀出值為1,再將相鄰讀出值相同的數(shù)據(jù)合并,此時(shí)所讀取的像素灰度值即轉(zhuǎn)換為一串二進(jìn)制碼(如圖2 所示讀出值為010101010,其0 對(duì)應(yīng)黑色的圓環(huán),1 對(duì)應(yīng)白色圓環(huán)),通過(guò)查表得到標(biāo)志物的中心絕對(duì)坐標(biāo)(xm,ym)及其朝向。該映射表按照標(biāo)志物在室內(nèi)的擺放位置人為規(guī)定,例如可以按表1 進(jìn)行規(guī)定。
表1 碼型與相機(jī)朝向映射表Table 1 Code type and camera orientation mapping
YOLO 神經(jīng)網(wǎng)絡(luò)是由美國(guó)華盛頓大學(xué)和臉書(shū)(Facebook)AI 研究所于2016 年提出的基于卷積神經(jīng)網(wǎng)絡(luò)的實(shí)時(shí)目標(biāo)檢測(cè)方法。顧名思義,該算法只需要通過(guò)神經(jīng)網(wǎng)絡(luò)進(jìn)行一次前向傳播來(lái)檢測(cè)物體。這意味著整個(gè)圖像中的預(yù)測(cè)是在單個(gè)算法運(yùn)行中完成的。第三代YOLOv3 的表現(xiàn)十分驚人,在與其他算法精度相當(dāng)?shù)臈l件下,其檢測(cè)速度比其他模型快3 倍到4 倍。出于實(shí)時(shí)性考慮,本文選擇YOLOv3 神經(jīng)網(wǎng)絡(luò)作為圓環(huán)編碼特征物識(shí)別以及將其從背景分割的工具。
考慮到地面鋪設(shè)的圓環(huán)編碼圖案成像到相機(jī)感光芯片后,其物像呈現(xiàn)為橢圓形,該映射規(guī)律涉及到復(fù)雜的光路變換,而且與環(huán)境變量緊密相關(guān),如相機(jī)高度、俯仰角、鏡頭參數(shù)等。由此可見(jiàn),要從中推導(dǎo)出標(biāo)志物形變與相機(jī)之間相對(duì)坐標(biāo)的關(guān)系比較困難,且魯棒性不高,因此,本文采用機(jī)器學(xué)習(xí)的方法,通過(guò)已知數(shù)據(jù),利用機(jī)器學(xué)習(xí)算法訓(xùn)練出回歸模型,從模型輸入標(biāo)志物的關(guān)鍵特征,模型將預(yù)測(cè)出相機(jī)對(duì)于標(biāo)志物的相對(duì)坐標(biāo)(xre,yre)。
由于標(biāo)志物在圖像中的形態(tài)為橢圓形,因此采用最小二乘法擬合橢圓的方法[14-15]來(lái)獲取標(biāo)志物物像的5 個(gè)特征量:標(biāo)志物中心在圖像坐標(biāo)系中的坐標(biāo)(x0,y0)、長(zhǎng)軸長(zhǎng)度a(單位為像素)、短軸長(zhǎng)度b(單位為像素)、短軸與水平線夾角θ,如下式:
回歸算法采用極限梯度提升算法(XGBoost)[16],其致力于突破提升樹(shù)的計(jì)算極限,實(shí)現(xiàn)快速運(yùn)算和高效性能。對(duì)比經(jīng)典的GBDT(gradient boosting decision tree)算法,XGBoost 主要進(jìn)行了如下主要改進(jìn):
1)對(duì)損失函數(shù)進(jìn)行二階泰勒展開(kāi),利用了一階和二階導(dǎo)數(shù)信息,從而減少優(yōu)化過(guò)程中產(chǎn)生的誤差,而GBDT 僅用到一階導(dǎo)數(shù)信息;
2)損失函數(shù)添加正則化項(xiàng),控制模型復(fù)雜度,防止過(guò)擬合;
3)支持并行運(yùn)算。
XGBoost 可表示為加法模型,利用模型上一次迭代(由t-1 棵樹(shù)組合而成的模型)的預(yù)測(cè)產(chǎn)生的殘差,建立下一棵樹(shù)(第t棵樹(shù)):
添加的規(guī)則是在現(xiàn)有的t-1 棵樹(shù)的基礎(chǔ)上,使得目標(biāo)函數(shù)最小。目標(biāo)函數(shù)為
式中:l為損失函數(shù);Ω為正則項(xiàng),用于懲罰復(fù)雜模型;c為常數(shù)項(xiàng)。二階泰勒展開(kāi)為
利用XGBoost 分別對(duì)相對(duì)坐標(biāo)xre、yre訓(xùn)練回歸模型:
最后結(jié)合對(duì)特征標(biāo)簽解碼所得的標(biāo)簽絕對(duì)坐標(biāo)(xm,ym),即可求得相機(jī)室內(nèi)絕對(duì)坐標(biāo)(xab,yab):
相比文獻(xiàn)[9]和[10]的AR 標(biāo)志物和棋盤(pán)格標(biāo)志物,圓環(huán)編碼在完成相對(duì)坐標(biāo)測(cè)量的同時(shí),也能實(shí)現(xiàn)求解朝向(如表1 所述)的依據(jù)。
由于面向倉(cāng)儲(chǔ)的室內(nèi)AGV 有不同的尺寸,大型的尺寸如小汽車,可以搭載如工業(yè)控制計(jì)算機(jī)作為處理終端;而小型室內(nèi)AGV 只有30 cm~50 cm的邊長(zhǎng),僅能搭載便攜的嵌入式設(shè)備作為處理終端。所以,小型AGV 需要在嵌入式設(shè)備上運(yùn)行深度學(xué)習(xí)YOLO 網(wǎng)絡(luò)模型,同時(shí)需要實(shí)現(xiàn)快速運(yùn)算,顯然對(duì)設(shè)備的計(jì)算力要求比較高,普通的嵌入式開(kāi)發(fā)板無(wú)法滿足,因此該系統(tǒng)選用嵌入式GPU 硬件平臺(tái)NVIDIA Jetson TX2[17],如圖3 所示,其內(nèi)部集成了256 個(gè)NVIDIA CUDA 核心和一個(gè)6 核64 位的ARMv8 處理器集群,擁有8 GB LPDDR4 128 位內(nèi)存,非常適合運(yùn)行深度學(xué)習(xí)網(wǎng)絡(luò),且容易部署在移動(dòng)設(shè)備上。
圖3 NVIDIA Jetson TX2+載板Fig.3 NVIDIA Jetson TX2 and its loading board
系統(tǒng)在開(kāi)發(fā)過(guò)程中,YOLO 網(wǎng)絡(luò)的訓(xùn)練以及代碼的運(yùn)行都先在電腦端上進(jìn)行開(kāi)發(fā)和測(cè)試。當(dāng)代碼可以正常運(yùn)行后,再將整套算法移植至嵌入式設(shè)備GPU 中測(cè)試最終效果。嵌入式設(shè)備的參數(shù)見(jiàn)表2。
表2 嵌入式設(shè)備參數(shù)Table 2 Embedded device parameters
實(shí)驗(yàn)主機(jī)的軟件環(huán)境與嵌入式設(shè)備保持一致,硬件參數(shù)見(jiàn)表3。
表3 實(shí)驗(yàn)用電腦參數(shù)Table 3 Experimental host parameters
該定位系統(tǒng)的完整運(yùn)行流程框圖如圖4 所示。系統(tǒng)先調(diào)用相機(jī)采集定位場(chǎng)景,利用YOLO找出標(biāo)志物,給出①標(biāo)志物的朝向解碼和它的世界坐標(biāo)、②標(biāo)志物的中心在圖像坐標(biāo)系中的坐標(biāo)(x0,y0)、長(zhǎng)軸長(zhǎng)度a、短軸長(zhǎng)度b、短軸與水平線夾角θ,并將這些參數(shù)輸送XGBoost 模型,得到相機(jī)和標(biāo)志物相對(duì)坐標(biāo)。最后,將標(biāo)志物世界坐標(biāo)和相機(jī)與標(biāo)志物相對(duì)坐標(biāo)結(jié)合,便得到相機(jī)(即AGV)的世界坐標(biāo)。
圖4 系統(tǒng)框圖Fig.4 Flow chart of system
實(shí)驗(yàn)場(chǎng)景設(shè)置如圖5 所示。地板上鋪設(shè)2 m×2 m的KT 板,顏色為淺灰色,在CMYK(cyan-magentayellow-black)色域表示為(C:0,M:0,Y:0,K:50-60)。在與KT 板底邊相距15.0 cm 處平行放置光學(xué)導(dǎo)軌,光學(xué)導(dǎo)軌滑塊上架設(shè)羅技M270 攝像機(jī)。
圖5 系統(tǒng)搭設(shè)Fig.5 System construction
首先進(jìn)行圖像采集工作,在KT 板中線放置5 個(gè)不同圓環(huán)數(shù)的特征標(biāo)簽,相機(jī)每次以1 cm 的步長(zhǎng)水平移動(dòng),每個(gè)位置采集一張圖像。相機(jī)在光學(xué)導(dǎo)軌上從左端到右端共99 個(gè)位置。在所有水平位置都采集到圖像后,全部標(biāo)簽整體下移5 cm,重復(fù)上述步驟繼續(xù)拍攝。拍攝的同時(shí),記錄每個(gè)特征標(biāo)簽相對(duì)相機(jī)的坐標(biāo),標(biāo)簽以相機(jī)為原點(diǎn),水平導(dǎo)軌為x軸,過(guò)相機(jī)點(diǎn)垂直于水平導(dǎo)軌為y軸。最后采集到有效圖像共1266 張。
利用采集所得的圖像,在電腦端上訓(xùn)練出YOLO 網(wǎng)絡(luò)。每訓(xùn)練1000 個(gè)循環(huán),模型生成一個(gè)權(quán)重文件,當(dāng)損失收斂時(shí)停止訓(xùn)練。每一張圖像視野內(nèi)完整的特征標(biāo)簽包含的圓環(huán)數(shù)有多個(gè)(2~5 個(gè)),共從1266 張圖像中提取出5483 組圓環(huán)編碼圖案橢圓擬合信息(x0,y0,a,b,θ),用于訓(xùn)練XGBoost 回歸模型。訓(xùn)練完畢后,定位系統(tǒng)調(diào)用權(quán)重文件,對(duì)每一幀圖像實(shí)時(shí)預(yù)測(cè)出相機(jī)的室內(nèi)絕對(duì)坐標(biāo)。系統(tǒng)運(yùn)行效果圖如圖6 所示。
圖6 系統(tǒng)運(yùn)行效果圖(position/cm:相機(jī)絕對(duì)坐標(biāo))Fig.6 Effect diagram of system operation (position/cm:absolute coordinates of camera)
系統(tǒng)各模塊在實(shí)驗(yàn)主機(jī)和NVIDIA Jetson TX2平均運(yùn)行時(shí)間如表4 所示。
表4 各模塊平均運(yùn)行時(shí)間Table 4 Average running time of each module ms
測(cè)試集誤差情況如表5 所示。模型的平均誤差在1.00 cm 以內(nèi),其中x方向的平均誤差為0.31 cm,y方向平均誤差為0.52 cm,坐標(biāo)平均誤差近似為0.55 cm。坐標(biāo)x最大誤差不超過(guò)2 cm,坐標(biāo)y最大誤差不超3 cm。對(duì)比LPLA[8]測(cè)量距離標(biāo)準(zhǔn)差7.1 cm 有明顯提升。將測(cè)試集的x坐標(biāo)和y坐標(biāo)的絕對(duì)誤差制作成絕對(duì)誤差熱度圖分布,如圖7 所示。由熱度圖可見(jiàn),誤差最大的數(shù)據(jù)點(diǎn)主要在最遠(yuǎn)端,這是因?yàn)檫h(yuǎn)端的標(biāo)志物物像較小,清晰度不夠。出于實(shí)時(shí)性考慮(因?yàn)閬喯袼剡呇靥崛⌒枰褂镁剡M(jìn)行卷積,所以耗時(shí)較大),本文未采用亞像素處理,所以該部分區(qū)域的圓環(huán)擬合出現(xiàn)比其他區(qū)域略大的偏差,從而影響了相機(jī)和特征標(biāo)簽之間的相對(duì)坐標(biāo)預(yù)測(cè)。根據(jù)分析可知,攝像機(jī)清晰度和邊沿精確提取是定位精度最大的兩個(gè)因素,故未來(lái)隨著處理終端(如電腦、嵌入式GPU)算力的提升,可以采用更高分辨率的攝像頭和引入亞像素處理,以提高定位的準(zhǔn)確性。
表5 測(cè)量誤差Table 5 Measuring errors cm
圖7 絕對(duì)誤差熱度分布圖Fig.7 Heat distribution diagram of absolute errors
為克服單目視覺(jué)定位精度低的短板,本文提出一種可在嵌入式GPU 上運(yùn)行,基于特征圓環(huán)標(biāo)簽畸變解算的輕量化單目視覺(jué)定位系統(tǒng)。該系統(tǒng)運(yùn)用多個(gè)全局特征標(biāo)簽—帶編碼的圓環(huán)圖案進(jìn)行定位。實(shí)際工作中,利用單個(gè)通用相機(jī)拍攝地面上鋪設(shè)的特征標(biāo)簽,并做圖像識(shí)別和分析,根據(jù)標(biāo)簽的畸變預(yù)測(cè)出相機(jī)與特征標(biāo)簽之間的相對(duì)坐標(biāo),對(duì)標(biāo)簽所包含圓環(huán)進(jìn)行解碼,得到標(biāo)簽的室內(nèi)絕對(duì)空間位置及相機(jī)朝向,進(jìn)而計(jì)算出相機(jī)的室內(nèi)絕對(duì)空間位置。1266 張圖片的5483 組實(shí)驗(yàn)數(shù)據(jù)表明,在2 m×2 m 范圍內(nèi),該定位系統(tǒng)的平均測(cè)量誤差僅為0.55 cm,對(duì)比文獻(xiàn)報(bào)道的LPLA 有明顯提升。因此,只要合理鋪設(shè)特征標(biāo)簽,利用該系統(tǒng)可實(shí)現(xiàn)AGV 在(如倉(cāng)庫(kù)等)室內(nèi)場(chǎng)景中任意位置準(zhǔn)確地定位,有望為AGV 實(shí)施貨物自動(dòng)分揀等工作提供輔助。