廖家才,曹立波,夏家豪,張 曉,吳 強(qiáng)
(湖南大學(xué),汽車車身先進(jìn)設(shè)計(jì)制造國(guó)家重點(diǎn)實(shí)驗(yàn)室,長(zhǎng)沙 410082)
自動(dòng)駕駛車輛的前方多目標(biāo)檢測(cè)、跟蹤、姿態(tài)估計(jì)將為車輛自主駕駛的路徑規(guī)劃、決策控制提供準(zhǔn)確環(huán)境信息。由于道路車輛周圍目標(biāo)多、類別多、運(yùn)動(dòng)方向不確定、環(huán)境復(fù)雜,自動(dòng)駕駛場(chǎng)景下的多目標(biāo)檢測(cè)和長(zhǎng)時(shí)間軌跡跟蹤仍然存在很大挑戰(zhàn)。多目標(biāo)跟蹤過程中檢測(cè)、跟蹤匹配準(zhǔn)確率不高,前方目標(biāo)運(yùn)動(dòng)狀態(tài)估計(jì)不準(zhǔn)確,協(xié)同多種信息對(duì)目標(biāo)檢測(cè)、跟蹤時(shí),運(yùn)動(dòng)信息無法有效地傳遞給跟蹤目標(biāo),跟蹤算法對(duì)目標(biāo)尺寸適應(yīng)性較差。
隨著深度卷積神經(jīng)網(wǎng)絡(luò)的迅速發(fā)展,使用深度神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)目標(biāo)檢測(cè)、協(xié)同檢測(cè)、跟蹤信息,能夠?qū)崿F(xiàn)多目標(biāo)軌跡信息獲取。使用YOLO[1]系列神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)多目標(biāo)檢測(cè)、分類具有良好的實(shí)時(shí)性,核相關(guān)濾波(KCF)[2]跟蹤算法能夠從被跟蹤目標(biāo)中提取特征訓(xùn)練檢測(cè)器,具有良好的跟蹤實(shí)時(shí)性和穩(wěn)定性。Wojke等[3]結(jié)合卷積神經(jīng)網(wǎng)絡(luò)和Kalman算法提出了一種在線的實(shí)時(shí)目標(biāo)檢測(cè)跟蹤網(wǎng)絡(luò)deep-SORT,使用級(jí)聯(lián)匹配方法檢測(cè)和跟蹤目標(biāo)的位置。文獻(xiàn)[4]中采用YOLOv2檢測(cè)目標(biāo),使用重合度(intersection over union)作為目標(biāo)的匹配系數(shù)。袁大龍等[5]提出了協(xié)同運(yùn)動(dòng)狀態(tài)估計(jì)的多目標(biāo)跟蹤算法,使用MS-CNN[6]算法檢測(cè)目標(biāo),構(gòu)建了目標(biāo)跟蹤、檢測(cè)關(guān)聯(lián)矩陣。Yu等[7]基于Faster R-CNN進(jìn)行目標(biāo)檢測(cè),使用ImageNet對(duì)VGG-16進(jìn)行預(yù)訓(xùn)練,使用遷移學(xué)習(xí)構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)提取目標(biāo)的外觀特征,并將這些特征用于線上和線下的跟蹤,線下跟蹤時(shí)使用特征、運(yùn)動(dòng)、平穩(wěn)性3個(gè)相關(guān)特性進(jìn)行跟蹤目標(biāo)。KCF是一種基于檢測(cè)的跟蹤算法[5,8],能夠不斷提取正負(fù)樣本訓(xùn)練跟蹤目標(biāo)的HOG特征檢測(cè)器,使用檢測(cè)器在周圍鄰域內(nèi)搜索跟蹤目標(biāo)最佳響應(yīng)位置,并引入核函數(shù)來改善分類器的性能,同時(shí)利用傅里葉變換降低計(jì)算量。針對(duì)KCF跟蹤尺度不變的問題,Wu等[8]采用了基于檢測(cè)位置和大小關(guān)聯(lián)的自適應(yīng)方法進(jìn)行尺度調(diào)整,譚舒昆等[9]使用高斯尺度空間的方法進(jìn)行尺度自適應(yīng)調(diào)整。
卡爾曼濾波器[3-5,7]將系統(tǒng)的狀態(tài)與目標(biāo)的狀態(tài)結(jié)合起來,對(duì)符合高斯噪聲分布的線性運(yùn)動(dòng)目標(biāo),從序列數(shù)據(jù)中準(zhǔn)確預(yù)測(cè)目標(biāo)位置。deep-SORT使用恒速運(yùn)動(dòng)模型作為卡爾曼濾波跟蹤器的處理模型。使用運(yùn)動(dòng)關(guān)聯(lián)系數(shù)、形狀關(guān)聯(lián)系數(shù)構(gòu)建關(guān)聯(lián)矩陣,使用匈牙利算法(KM)進(jìn)行最佳匹配能夠?qū)z測(cè)信息、運(yùn)動(dòng)信息加入到匹配規(guī)則中[5,7]。在檢測(cè)、跟蹤的基礎(chǔ)上,基于概率數(shù)據(jù)關(guān)聯(lián)算法(PDT)解決多目標(biāo)跟蹤(MHT)交叉的干擾問題,獲得目標(biāo)的運(yùn)動(dòng)軌跡[10],增強(qiáng)車輛的持續(xù)環(huán)境感知能力。使用表觀特征與軌跡動(dòng)態(tài)相結(jié)合的方法[11]能夠彌補(bǔ)表觀特征區(qū)分較差的情形。
在多類別、多目標(biāo)的跟蹤過程中僅以重合度、特征、運(yùn)動(dòng)信息進(jìn)行匹配無法消除多目標(biāo)交叉運(yùn)動(dòng)時(shí)的錯(cuò)誤匹配情況??柭鼮V波器針對(duì)符合高斯噪聲分布的線性系統(tǒng)具有很好的預(yù)測(cè)能力,但道路的不平及其他環(huán)境影響造成本車和前方目標(biāo)的速度變化是隨機(jī)的,導(dǎo)致基于視覺獲得的前方被跟蹤目標(biāo)無法滿足一定精度要求。道路目標(biāo)在跟蹤過程中,所有相鄰幀之間的運(yùn)動(dòng)都使用恒定速模型處理[3,12],沒有考慮到環(huán)境對(duì)目標(biāo)運(yùn)動(dòng)狀態(tài)造成的隨機(jī)噪聲,被跟蹤目標(biāo)的位置容易發(fā)生隨機(jī)偏離和抖動(dòng)。以檢測(cè)尺度作為KCF跟蹤樣本尺寸,沒有考慮到跟蹤目標(biāo)的空間位置信息和系統(tǒng)狀態(tài)的變化,導(dǎo)致KCF跟蹤器對(duì)匹配失敗的目標(biāo)進(jìn)行持續(xù)跟蹤時(shí),對(duì)目標(biāo)的尺度變化適應(yīng)性較差。
針對(duì)以上問題,本文中從車載應(yīng)用場(chǎng)景出發(fā),首先,改進(jìn)了協(xié)同KCF和運(yùn)動(dòng)模型的跟蹤算法,獲得目標(biāo)的軌跡位置信息,為目標(biāo)姿態(tài)估計(jì)、行為分析提供有效信息。然后,詳細(xì)描述了目標(biāo)跟蹤、目標(biāo)匹配、運(yùn)動(dòng)模型的優(yōu)化方法。最后,提出了基于分段線性恒定速處理模型的卡爾曼濾波運(yùn)動(dòng)姿態(tài)估計(jì)方法,增加并優(yōu)化了目標(biāo)的匹配準(zhǔn)則,將目標(biāo)運(yùn)動(dòng)信息加入到目標(biāo)KCF的跟蹤目標(biāo)尺度中,改變KCF的尺度不變性。
圖1 多目標(biāo)檢測(cè)和跟蹤算法框圖
本文中多目標(biāo)檢測(cè)和跟蹤算法框圖如圖1所示。協(xié)同KCF跟蹤和運(yùn)動(dòng)狀態(tài)的軌跡跟蹤算法按照以下3步實(shí)現(xiàn)。
(1)目標(biāo)檢測(cè)、匹配 使用YOLOv2檢測(cè)目標(biāo),構(gòu)建目標(biāo)的檢測(cè)信息容器,檢測(cè)信息與跟蹤信息互相驗(yàn)證匹配,結(jié)合多個(gè)目標(biāo)匹配準(zhǔn)則,在重合度、運(yùn)動(dòng)信息、特征信息關(guān)聯(lián)基礎(chǔ)上,增加了目標(biāo)屬性和跟蹤時(shí)序內(nèi)的跟蹤狀態(tài)。
(2)目標(biāo)跟蹤、運(yùn)動(dòng)狀態(tài)估計(jì)、獲取目標(biāo)軌跡分解目標(biāo)運(yùn)動(dòng)的狀態(tài),設(shè)置在一定跟蹤幀數(shù)內(nèi)使用恒定速運(yùn)動(dòng)模型表示目標(biāo)的變速運(yùn)動(dòng)狀態(tài),超過設(shè)置跟蹤幀數(shù)后,使用當(dāng)前目標(biāo)位置更新目標(biāo)的運(yùn)動(dòng)狀態(tài)到新的恒定速模型中,在此基礎(chǔ)上使用卡爾曼濾波器對(duì)目標(biāo)進(jìn)行二維矢量運(yùn)動(dòng)姿態(tài)估計(jì),使用分段的線性恒定速運(yùn)動(dòng)逼近目標(biāo)非線性運(yùn)動(dòng)。
(3)信息融合、調(diào)整目標(biāo)尺度 融合KCF特征信息和卡爾曼預(yù)測(cè)的運(yùn)動(dòng)信息,使用獲得的目標(biāo)運(yùn)動(dòng)矢量信息調(diào)整KCF跟蹤器中目標(biāo)的尺度和位置,提升KCF對(duì)多尺度目標(biāo)的軌跡跟蹤性能。
要獲得目標(biāo)的連續(xù)軌跡,首先要實(shí)現(xiàn)目標(biāo)的連續(xù)檢測(cè)和跟蹤。輔助駕駛和自動(dòng)駕駛場(chǎng)景下的多目標(biāo)檢測(cè)任務(wù)主要實(shí)現(xiàn)對(duì)車輛四周目標(biāo)的實(shí)時(shí)檢測(cè)和跟蹤,增強(qiáng)車輛的環(huán)境感知和決策能力。在車載應(yīng)用場(chǎng)景中,車載控制器計(jì)算能力有限,一般淺層卷積網(wǎng)絡(luò)目標(biāo)檢測(cè)的速度快,但準(zhǔn)確率低;深層卷積神經(jīng)網(wǎng)絡(luò)準(zhǔn)確率高,但實(shí)時(shí)性差。車載場(chǎng)景下檢測(cè)目標(biāo)的種類主要為人、各種車輛和交通標(biāo)志,因此實(shí)時(shí)性成為車載道路目標(biāo)檢測(cè)和跟蹤的重要性能指標(biāo)。
YOLOv2使用darknet19作為基礎(chǔ)模型,將輸入圖像的尺寸從448×448縮減到416×416,在每個(gè)卷積層使用了批量歸一化,YOLOv2只有卷積層和池化層,可以進(jìn)行動(dòng)態(tài)調(diào)整輸入圖像的尺寸。特征圖的輸出是一個(gè)奇數(shù),中心柵格專門實(shí)現(xiàn)預(yù)測(cè)中心落在圖像中心附近的物體,不需要使用圖像中心附近的4個(gè)柵格去預(yù)測(cè)目標(biāo)。同時(shí)對(duì)圖像進(jìn)行了32倍的降采樣,獲得的最終輸出特征圖尺寸是13×13。YOLOv2使用通過K-means在訓(xùn)練集中學(xué)得的anchor box預(yù)測(cè)坐標(biāo),同時(shí)還對(duì)條件類別概率預(yù)測(cè)機(jī)制和空間位置做了解耦,不再由柵格預(yù)測(cè)條件類別概率,而由Bounding Box預(yù)測(cè)。
YOLOv2的網(wǎng)絡(luò)層設(shè)計(jì)方法使得其在檢測(cè)速度和精度上達(dá)到了很好的平衡,可以實(shí)現(xiàn)交通標(biāo)志等目標(biāo)的識(shí)別[13-14]。本文中使用YOLOv2進(jìn)行跟蹤目標(biāo)的初始位置提取,使用訓(xùn)練COCO數(shù)據(jù)保存的權(quán)重對(duì)目標(biāo)進(jìn)行預(yù)測(cè)。
核相關(guān)濾波(KCF)是一種基于檢測(cè)的跟蹤方法[2],在跟蹤過程中訓(xùn)練一個(gè)目標(biāo)檢測(cè)器,使用目標(biāo)檢測(cè)器去預(yù)測(cè)目標(biāo)位置,目標(biāo)檢測(cè)器訓(xùn)練時(shí)選取目標(biāo)區(qū)域作為正樣本,目標(biāo)周圍區(qū)域作為負(fù)樣本,越靠近目標(biāo)區(qū)域?yàn)檎龢颖镜目赡苄栽酱?,通過特征提取,獲得一個(gè)在線的針對(duì)每個(gè)跟蹤目標(biāo)的實(shí)時(shí)分類器。使用分類器再檢測(cè)跟蹤目標(biāo),重新確定目標(biāo)位置。使用樣本訓(xùn)練得到的分類器采集了目標(biāo)樣本的HOG[15]特征,使得跟蹤算法對(duì)目標(biāo)的捕捉特征從顏色特征擴(kuò)展到輪廓特征,提升了跟蹤的穩(wěn)定性。
訓(xùn)練樣本為xi,回歸目標(biāo)為yi,回歸函數(shù)為
式中w為列向量權(quán)重系數(shù)。
使用最小二乘法求解訓(xùn)練權(quán)重系數(shù)的函數(shù)表達(dá)式為
式中λ為回歸參數(shù),用于控制過擬合。
最小化函數(shù)的閉合形式為
式中:X為循環(huán)位移得到的信號(hào)集合矩陣;y的每一個(gè)元素都是一個(gè)回歸目標(biāo);I為單位矩陣。
X矩陣的每一行代表一個(gè)信號(hào)在一個(gè)周期內(nèi)的信號(hào)向量集。
在傅里葉域中的簡(jiǎn)化計(jì)算公式為
式中XH表示復(fù)共軛轉(zhuǎn)置矩陣。
為獲得充分的樣本來訓(xùn)練目標(biāo)檢測(cè)器,使用循環(huán)位移矩陣作用于目標(biāo)樣本。循環(huán)矩陣P為
為能夠在長(zhǎng)時(shí)間跟蹤中自適應(yīng)更新初始矩陣,本文中對(duì)改進(jìn)KCF的循環(huán)矩陣使用條件,在運(yùn)動(dòng)模型預(yù)測(cè)方向上優(yōu)先使用環(huán)矩陣尋找目標(biāo)最新位置。在傅里葉域中計(jì)算時(shí),將循環(huán)矩陣對(duì)角化,加快計(jì)算速度,使用離散傅里葉(DFT)矩陣進(jìn)行對(duì)角化。
式中:g為DFT的生成向量;F為DFT常數(shù)矩陣。使用傅氏對(duì)角化帶回回歸方程,使用點(diǎn)積運(yùn)算代替矩陣運(yùn)算,提高計(jì)算速度。非線性回歸對(duì)輸入的優(yōu)化質(zhì)量高,使用脊回歸方法將輸入的線性問題映射到一個(gè)非線性特征空間中,非線性函數(shù)為
式中:αi為訓(xùn)練樣本Xi對(duì)應(yīng)的系數(shù);κ為核函數(shù);z為候選樣本。脊回歸導(dǎo)致非線性回歸函數(shù)f(z)會(huì)隨著樣本數(shù)量的增加而變得復(fù)雜,KCF使用快速的核回歸計(jì)算最優(yōu)解,提升計(jì)算效率。訓(xùn)練得到f(z)計(jì)算候選區(qū)域內(nèi)每個(gè)位置的函數(shù)值,得到最佳響應(yīng)位置。
檢測(cè)目標(biāo)與跟蹤目標(biāo)的狀態(tài)轉(zhuǎn)換如圖2所示。圖中,Cd為檢測(cè)目標(biāo)容器集合,Cs為經(jīng)過跟蹤算法后的目標(biāo)容器集合。檢測(cè)目標(biāo)為跟蹤算法提供跟蹤樣本,跟蹤得到的目標(biāo)集與下一幀檢測(cè)目標(biāo)集進(jìn)行匹配,獲得新的跟蹤目標(biāo)集。
圖2 目標(biāo)檢測(cè)、跟蹤匹配流程
對(duì)目標(biāo)檢測(cè)、跟蹤時(shí),需要根據(jù)類別屬性、坐標(biāo)位置等信息進(jìn)行記錄、匹配,結(jié)合運(yùn)動(dòng)信息時(shí),需要考慮車輛的運(yùn)動(dòng)狀態(tài)。為每個(gè)檢測(cè)目標(biāo)、跟蹤目標(biāo)設(shè)置一個(gè)容器c,在容器中放置檢測(cè)、跟蹤相關(guān)的參數(shù),并在跟蹤的過程中不斷更新其中的參數(shù)。第i個(gè)目標(biāo)容器為
式中:ClassID為目標(biāo)的類屬性,主要有乘用車、貨車、摩托車、人、自行車;Num為同類計(jì)數(shù)值,用于區(qū)分同一類別不同目標(biāo);Cof為檢測(cè)目標(biāo)的置信度值;[x,y,w,h]為目標(biāo)框坐標(biāo);TKaut為記錄目標(biāo)的持續(xù)跟蹤幀數(shù);UPaut為記錄目標(biāo)在跟蹤期間進(jìn)行檢測(cè)匹配的次數(shù);UPf為目標(biāo)最近一次檢測(cè)匹配成功的幀數(shù);Km為基于運(yùn)動(dòng)模型實(shí)現(xiàn)的卡爾曼跟蹤參數(shù)。
運(yùn)動(dòng)模型的參數(shù)為
式中(xp,yp)和(vpx,vpy)分別為跟蹤目標(biāo)位置預(yù)測(cè)值和x,y方向的矢量速度預(yù)測(cè)值。
YOLOv2檢測(cè)目標(biāo)和跟蹤目標(biāo)匹配后,更新被跟蹤目標(biāo)的特征狀態(tài)值,基于運(yùn)動(dòng)模型的卡爾曼濾波跟蹤算法更新跟蹤目標(biāo)的運(yùn)動(dòng)模型參數(shù)值。
n為跟蹤目標(biāo)個(gè)數(shù),跟蹤目標(biāo)容器集合Cs為
目標(biāo)匹配實(shí)現(xiàn)原有跟蹤目標(biāo)與現(xiàn)有檢測(cè)目標(biāo)的關(guān)聯(lián),實(shí)現(xiàn)檢測(cè)目標(biāo)與跟蹤目標(biāo)的信息持續(xù)傳遞。檢測(cè)目標(biāo)與跟蹤目標(biāo)的匹配主要包括以下幾種情況。
(1)目標(biāo)檢測(cè)丟失、位置偏離 當(dāng)跟蹤目標(biāo)持續(xù)一定時(shí)間內(nèi)出現(xiàn)匹配失敗,此時(shí)跟蹤目標(biāo)丟失,跟蹤位置偏離了真實(shí)位置,須刪除這些跟蹤丟失、位置偏離的目標(biāo)。
(2)出現(xiàn)新目標(biāo) 檢測(cè)到新的目標(biāo),須在跟蹤容器中添加新目標(biāo)。
(3)更新原有目標(biāo)的狀態(tài) 原有跟蹤目標(biāo)集合中的目標(biāo)在新一幀中的檢測(cè)信息須傳遞到跟蹤容器中。
(4)跟蹤目標(biāo)在當(dāng)前幀沒有被檢測(cè)到 此時(shí)跟蹤目標(biāo)出現(xiàn)檢測(cè)丟失,須保留跟蹤目標(biāo)位置,并結(jié)合運(yùn)動(dòng)狀態(tài)進(jìn)行預(yù)測(cè)位置信息。
針對(duì)以上4種情況,本文中使用以下匹配準(zhǔn)則。
(1)IOU系數(shù)
IOU值為兩個(gè)目標(biāo)位置區(qū)域面積的交集與并集的比值,IOUij為t時(shí)刻第i個(gè)跟蹤目標(biāo)和第j個(gè)檢測(cè)目標(biāo)重合度系數(shù)。
式中:Cdt為t時(shí)刻的檢測(cè)集,包含所有檢測(cè)目標(biāo)的容器;Cst為t時(shí)刻的跟蹤集;Area{…}為所指向矩形的面積。
匹配目標(biāo)存在包含關(guān)系時(shí),IOU值為
(2)關(guān)聯(lián)系數(shù)
跟蹤目標(biāo)與檢測(cè)目標(biāo)的運(yùn)動(dòng)關(guān)聯(lián)系數(shù)為
跟蹤目標(biāo)與檢測(cè)目標(biāo)的形狀關(guān)聯(lián)系數(shù)為
式中:ω1,ω2分別為運(yùn)動(dòng)和形狀的關(guān)聯(lián)系數(shù);帶下標(biāo)的x,y,w,h分別為第i個(gè)跟蹤目標(biāo)和第j個(gè)檢測(cè)目標(biāo)的坐標(biāo)位置及長(zhǎng)、寬尺寸。
構(gòu)建的關(guān)聯(lián)矩陣為
使用KM算法得到關(guān)聯(lián)矩陣的最優(yōu)解。
(3)類屬性(ClassID)、累計(jì)跟蹤幀數(shù)(TKaut)、狀態(tài)更新次數(shù)(UPaut)、狀態(tài)更新幀(UPf)
類屬性可根據(jù)目標(biāo)類別,排除一些候選的匹配目標(biāo),提升匹配速度。對(duì)于丟失和偏離目標(biāo),使用兩個(gè)與跟蹤時(shí)間和幀數(shù)有關(guān)的差值進(jìn)行判斷。
目標(biāo)加入檢測(cè)容器開始,TKaut在每次匹配過程中加1,檢測(cè)目標(biāo)與跟蹤目標(biāo)匹配成功時(shí),UPaut加1。UPf記錄的是目標(biāo)最新一次更新狀態(tài)時(shí)的跟蹤幀數(shù)。diff2為目標(biāo)自上一次檢測(cè)匹配成功后,持續(xù)的檢測(cè)丟失幀數(shù)。
目標(biāo)每次都被檢測(cè)并與跟蹤目標(biāo)匹配成功時(shí):
目標(biāo)在持續(xù)跟蹤過程中出現(xiàn)檢測(cè)丟失時(shí):
目標(biāo)匹配時(shí),為提高檢測(cè)跟蹤速度,首先用屬性和IOU系數(shù)匹配,IOU值如果大于0.8,屬性相同,則匹配成功,不再計(jì)算關(guān)聯(lián)系數(shù);反之匹配失敗。將匹配成功的目標(biāo)加入到新跟蹤器中,對(duì)跟蹤器剩余目標(biāo)和檢測(cè)候選目標(biāo)使用關(guān)聯(lián)系數(shù)diff1和diff2進(jìn)行再次匹配,關(guān)聯(lián)系數(shù)的計(jì)算參數(shù)取ω1=1,ω2=2,ω3=ω4=0.5[5]。檢測(cè)容器中未被匹配成功的目標(biāo)都是新出現(xiàn)的目標(biāo),跟蹤容器中剩余未被匹配成功的目標(biāo)分為兩類:僅當(dāng)前幀檢測(cè)丟失和跟蹤丟失超過一定幀數(shù)。
判斷持續(xù)跟蹤丟失的條件為
判斷當(dāng)前幀檢測(cè)丟失的條件為
目標(biāo)持續(xù)跟蹤過程中,檢測(cè)目標(biāo)會(huì)出現(xiàn)間斷性的檢測(cè)丟失,TH1表示一個(gè)跟蹤目標(biāo)被允許連續(xù)檢測(cè)失敗的最大幀數(shù),在本文中實(shí)驗(yàn)設(shè)置為10;TH2為以當(dāng)前幀為參考,一個(gè)目標(biāo)最多允許被跟蹤丟失的幀數(shù),本文中設(shè)置為20。
對(duì)前方目標(biāo)在二維圖像上的成像進(jìn)行矢量跟蹤時(shí),目標(biāo)的運(yùn)動(dòng)姿態(tài)不斷變化,為能夠準(zhǔn)確地估計(jì)目標(biāo)位置,需要在卡爾曼濾波器中引入運(yùn)動(dòng)模型。目標(biāo)的加速度、偏航角度和角速度都無法從圖像中獲取,無法使用恒定轉(zhuǎn)率和速度模型(CTRV)、恒定加速度模型(CA)等高級(jí)運(yùn)動(dòng)模型[12]對(duì)卡爾曼濾波跟蹤器進(jìn)行優(yōu)化。將兩幀間隔時(shí)間非常小的目標(biāo)運(yùn)動(dòng)作為恒定速運(yùn)動(dòng)[3,10],在每一幀更新目標(biāo)狀態(tài)時(shí),受到環(huán)境的噪聲影響比較大,對(duì)目標(biāo)的狀態(tài)估計(jì)不準(zhǔn)確,多目標(biāo)跟蹤時(shí),每一時(shí)刻重復(fù)迭代計(jì)算每個(gè)目標(biāo)的狀態(tài)向量和跟蹤器的預(yù)測(cè)矩陣,降低了系統(tǒng)的跟蹤效率。
每一幀計(jì)算跟蹤目標(biāo)的卡爾曼增益時(shí),測(cè)量噪聲反映的是計(jì)算前后幀時(shí)間內(nèi)的平均系統(tǒng)噪聲,相鄰幀的噪聲估計(jì)相互獨(dú)立,連續(xù)軌跡中包含噪聲較多,目標(biāo)的預(yù)測(cè)位置發(fā)生抖動(dòng)。為降低目標(biāo)的噪聲估計(jì)偏差,提高KCF的目標(biāo)跟蹤能力。將目標(biāo)的持續(xù)變速運(yùn)動(dòng)分解成相連的分段恒定速運(yùn)動(dòng),并將目標(biāo)的運(yùn)動(dòng)姿態(tài)加入到KCF的跟蹤模型中,使用多幀相鄰時(shí)間段內(nèi)目標(biāo)平均位移矢量和平均速度矢量來更新目標(biāo)的狀態(tài)向量,使用目標(biāo)相鄰節(jié)點(diǎn)的預(yù)測(cè)位置,計(jì)算恒定速條件下目標(biāo)的運(yùn)動(dòng)估計(jì)參數(shù),并將該參數(shù)作為當(dāng)前分段內(nèi)的運(yùn)動(dòng)參數(shù),分段內(nèi)不再使用卡爾曼濾波器計(jì)算目標(biāo)的狀態(tài)方程,直到本次分段結(jié)束,在下一時(shí)刻分段節(jié)點(diǎn)幀再次更新目標(biāo)狀態(tài)。圖像目標(biāo)的矢量速度可以通過每秒顯示幀數(shù)(fpsk)、圖像幀間運(yùn)動(dòng)像素位移計(jì)算獲得。在道路目標(biāo)跟蹤過程中,基于恒定速卡爾曼濾波預(yù)測(cè)、更新、分段過程如下。
(1)恒定速運(yùn)動(dòng)模型
恒定速目標(biāo)k時(shí)刻狀態(tài)向量為
式中:(px,py)和(vx,vy)分別為目標(biāo)的像素坐標(biāo)位置和矢量速度分量。
(2)預(yù)測(cè)
恒定速運(yùn)動(dòng)模型為
式中:ψ為系統(tǒng)的處理噪聲;A為預(yù)測(cè)矩陣。
測(cè)量誤差的計(jì)算公式為
式中:Pk為k時(shí)刻測(cè)量誤差矩陣;Qk為處理噪聲的協(xié)方差。
在使用卡爾曼濾波跟蹤目標(biāo)的過程中,由式(24)可得恒定速的運(yùn)動(dòng)模型:
在一定時(shí)間段內(nèi)的運(yùn)動(dòng)認(rèn)為是恒定速運(yùn)動(dòng),而目標(biāo)實(shí)際的真實(shí)運(yùn)動(dòng)并非恒定速。假設(shè)模型包含的處理噪聲ψ是目標(biāo)的加速運(yùn)動(dòng)引起的,此時(shí),處理模型為
處理模型的前后狀態(tài)值的線性關(guān)系為
處理噪聲ψ是隨機(jī)帶入的,本質(zhì)是一個(gè)高斯分布:ψ∽N(0,Q),處理噪聲Q為位移和速度矢量的協(xié)方差矩陣。
對(duì)道路運(yùn)動(dòng)的行人、車輛目標(biāo),根據(jù)先驗(yàn)知識(shí)[12],速度的方差近似?。?/p>
(3)更新
對(duì)目標(biāo)的狀態(tài)預(yù)測(cè)完后,修正卡爾曼增益和預(yù)測(cè)誤差,為下一次預(yù)測(cè)做好準(zhǔn)備。目標(biāo)速度是根據(jù)像素位移直接計(jì)算得到的矢量,測(cè)量矩陣為
測(cè)量噪聲方差為
卡爾曼增益計(jì)算公式為
k時(shí)刻,被跟蹤目標(biāo)的測(cè)量值為zk,使用測(cè)量值更新估計(jì)值:
更新測(cè)量誤差:
測(cè)量位置直接使用目標(biāo)檢測(cè)獲得,k時(shí)刻目標(biāo)檢測(cè)位置為
(4)分段線性運(yùn)動(dòng)
目標(biāo)的分速度可根據(jù)間隔N幀匹配目標(biāo)中心位置在x和y方向的以像素為單位的移動(dòng)分量DISix,DISiy和N幀內(nèi)平均幀率f psk計(jì)算得到,獲得連續(xù)目標(biāo)位置信息后,使用間隔N幀匹配目標(biāo)的檢測(cè)位置信息計(jì)算矢量速度,并用該速度矢量作為后續(xù)N幀內(nèi)目標(biāo)的運(yùn)動(dòng)速度,k時(shí)刻的目標(biāo)矢量速度計(jì)算表達(dá)式為
因此,k時(shí)刻測(cè)量得到的目標(biāo)容器中每個(gè)跟蹤目標(biāo)的測(cè)量狀態(tài)為
每個(gè)目標(biāo)使用運(yùn)動(dòng)模型預(yù)測(cè)狀態(tài)值用來更新與之關(guān)聯(lián)目標(biāo)容器中的Km參數(shù),下一次預(yù)測(cè)時(shí)再調(diào)用。每隔5幀記錄的軌跡跟蹤連續(xù)幀檢測(cè)結(jié)果如圖3所示。
圖3 多目標(biāo)連續(xù)軌跡跟蹤結(jié)果
圖4 為每個(gè)目標(biāo)位置中心的軌跡記錄線。
圖4 目標(biāo)跟蹤軌跡
幀數(shù)N值和目標(biāo)更新狀態(tài)及跟蹤實(shí)時(shí)性有關(guān),間隔N幀取一次匹配點(diǎn)檢測(cè)坐標(biāo),計(jì)算N幀內(nèi)的矢量速度均值,更新目標(biāo)的速度和中心位置。初始化所有目標(biāo)矢量速度為20 pix/ms,為了確保目標(biāo)被判斷為丟失刪除之前能夠更新狀態(tài),N≤TH1,N為10時(shí),對(duì)圖4中的ClassID為car_1和truck_0的目標(biāo)的使用分段恒定速線性運(yùn)動(dòng)模型卡爾曼濾波跟蹤結(jié)果如圖5和圖6所示。
圖5 car_1分段線性運(yùn)動(dòng)模型跟蹤軌跡與原軌跡對(duì)比分析
圖6 truck_0分段線性運(yùn)動(dòng)模型跟蹤軌跡與原軌跡對(duì)比分析
從圖5和圖6中可以看出,N值取10時(shí),基于運(yùn)動(dòng)模型的目標(biāo)跟蹤能夠預(yù)測(cè)出目標(biāo)的運(yùn)動(dòng)趨勢(shì)。N取不同值時(shí),對(duì)car_1的分段軌跡預(yù)測(cè)見圖7。
由圖7可知,N值越大,在分段區(qū)間內(nèi)的運(yùn)動(dòng)細(xì)節(jié)將被丟失越多,目標(biāo)運(yùn)動(dòng)狀態(tài)獲取相應(yīng)滯后N幀,但對(duì)目標(biāo)的非線性運(yùn)動(dòng)仍有很好的響應(yīng),能夠滿足連續(xù)跟蹤過程中對(duì)目標(biāo)姿態(tài)估計(jì)的要求。為消除噪聲的同時(shí)保留運(yùn)動(dòng)細(xì)節(jié),N取值越靠近2越好。
N取不同值時(shí),卡爾曼濾波器對(duì)單個(gè)目標(biāo)進(jìn)行檢測(cè)、跟蹤消耗的平均時(shí)間如圖8所示。分段時(shí)間內(nèi),不再進(jìn)行基于運(yùn)動(dòng)模型的目標(biāo)運(yùn)動(dòng)姿態(tài)估算,減少了卡爾曼濾波運(yùn)動(dòng)狀態(tài)估算和目標(biāo)檢測(cè)次數(shù),提高了平均每幀的目標(biāo)跟蹤速度。N為1,不對(duì)目標(biāo)使用分段線性恒定速模型處理,將目標(biāo)前后兩幀時(shí)間段內(nèi)的運(yùn)動(dòng)狀態(tài)作為恒定速模型處理。相比于N大于2的分段線性恒定速模型,不使用分段運(yùn)動(dòng)模型處理的單個(gè)目標(biāo)的卡爾曼濾波跟蹤時(shí)間約增加了7倍。
圖7 car_1不同N值下分段線性運(yùn)動(dòng)模型軌跡跟蹤與原軌跡對(duì)比
圖8 不同N值下單個(gè)目標(biāo)的卡爾曼濾波跟蹤時(shí)間
N取不同值,多目標(biāo)的檢測(cè)、跟蹤時(shí)間如圖9所示。隨著跟蹤目標(biāo)個(gè)數(shù)的增多,平均每幀檢測(cè)、跟蹤消耗的時(shí)間增加,N為1時(shí),不使用分段線性模型,檢測(cè)、跟蹤消耗的時(shí)間比使用分段線性運(yùn)動(dòng)模型(N≥2)估算運(yùn)動(dòng)狀態(tài)的時(shí)間多。
為獲得實(shí)時(shí)目標(biāo)狀態(tài)信息,提高多目標(biāo)的跟蹤速度,同時(shí)消除環(huán)境噪聲影響,在本文中測(cè)試實(shí)驗(yàn)中N取4,多目標(biāo)的軌跡跟蹤速度平均提升1.5倍。
道路目標(biāo)的運(yùn)動(dòng)信息與目標(biāo)圖像尺寸相關(guān),目標(biāo)在圖像平面內(nèi)的成像滿足透視成像原理。目標(biāo)遠(yuǎn)離觀測(cè)點(diǎn)時(shí),觀測(cè)尺度變小;靠近觀測(cè)點(diǎn)時(shí),觀測(cè)尺度變大。目標(biāo)的運(yùn)動(dòng)方向和目標(biāo)的尺度、位置有關(guān)。
KCF跟蹤器的初始化矩陣在跟蹤目標(biāo)的位置確定后不再發(fā)生變化,導(dǎo)致KCF目標(biāo)對(duì)目標(biāo)的尺度變化適應(yīng)能力比較差。前方的跟蹤目標(biāo)運(yùn)動(dòng)時(shí)存在相對(duì)的旋轉(zhuǎn)、平移,尺度不斷發(fā)生變化,當(dāng)目標(biāo)檢測(cè)失敗時(shí),持續(xù)使用上一次檢測(cè)目標(biāo)框去跟蹤目標(biāo),不能適應(yīng)目標(biāo)的運(yùn)動(dòng)變化。
為關(guān)聯(lián)目標(biāo)運(yùn)動(dòng)信息與檢測(cè)信息,消除KCF跟蹤的尺度不變性,提升多目標(biāo)的匹配準(zhǔn)確率。本文中在目標(biāo)匹配時(shí),結(jié)合目標(biāo)屬性,使用關(guān)聯(lián)檢測(cè)目標(biāo)位置和跟蹤目標(biāo)位置,提升了目標(biāo)匹配準(zhǔn)確率,在目標(biāo)跟蹤時(shí),使用分段線性恒定速運(yùn)動(dòng)模型預(yù)測(cè)獲得目標(biāo)的位置、尺度信息,在每個(gè)分段的節(jié)點(diǎn)修正相關(guān)濾波跟蹤的目標(biāo)信息,將運(yùn)動(dòng)信息傳遞到圖像的特征位置信息中,目標(biāo)跟蹤特征的尺度變化融合了基于KCF提取的HOG特征[15]檢測(cè)方法和圖像目標(biāo)的運(yùn)動(dòng)分量。
KCF算法根據(jù)目標(biāo)樣本框的位置首先在周圍預(yù)測(cè)區(qū)域內(nèi)搜索目標(biāo)的最佳響應(yīng)位置。預(yù)測(cè)區(qū)域是以目標(biāo)框?yàn)橹行?,長(zhǎng)寬是目標(biāo)框的2.5倍。
如圖10所示,圖點(diǎn)為基于運(yùn)動(dòng)模型的卡爾曼濾波跟蹤位置,A1為KCF的跟蹤目標(biāo)框,P1為KCF在跟蹤時(shí)的預(yù)測(cè)區(qū)域,是檢測(cè)目標(biāo)A1的2.5倍,箭頭為目標(biāo)的運(yùn)動(dòng)方向。融合運(yùn)動(dòng)信息的跟蹤算法中,A2是根據(jù)目標(biāo)運(yùn)動(dòng)信息調(diào)整后的KCF的跟蹤目標(biāo)框,預(yù)測(cè)區(qū)域P2變?yōu)锳2的2.5倍,跟蹤目標(biāo)框和預(yù)測(cè)區(qū)域的中心都轉(zhuǎn)移到基于運(yùn)動(dòng)模型的卡爾曼濾波目標(biāo)跟蹤位置。
圖10 結(jié)合運(yùn)動(dòng)模型對(duì)KCF跟蹤的改進(jìn)示意圖
改進(jìn)的KCF算法對(duì)目標(biāo)的預(yù)測(cè)中心位置、跟蹤的尺寸進(jìn)行了調(diào)整。在對(duì)目標(biāo)跟蹤之前,使用基于運(yùn)動(dòng)模型獲得的中心位置替換檢測(cè)目標(biāo)位置中心。
使用運(yùn)動(dòng)模型獲得的矢量速度計(jì)算目標(biāo)運(yùn)動(dòng)增量,使用增量調(diào)整跟蹤目標(biāo)的尺寸。
為驗(yàn)證本文中算法對(duì)車輛前方多目標(biāo)的軌跡持續(xù)跟蹤性能,采集了晴天和雨天在城市、高速道路工況視頻35段,每段68 s。實(shí)驗(yàn)時(shí),N取4,評(píng)價(jià)指標(biāo)為丟跟率fd、錯(cuò)跟率fc、檢測(cè)率fe和有效跟蹤率f,每種評(píng)價(jià)指標(biāo)的定義為
將不同場(chǎng)景按照天氣和場(chǎng)景分類,跟蹤統(tǒng)計(jì)結(jié)果如表1所示。
高速道路條件下,目標(biāo)的運(yùn)動(dòng)速度快,加速度大,跟蹤目標(biāo)更容易丟失,受天氣影響,目標(biāo)的跟蹤效率下降。平均的跟蹤效率為92.5%,目標(biāo)平均檢測(cè)率為71.33%,平均丟幀率為5.27%,平均錯(cuò)幀率為2.24%。
表1 目標(biāo)軌跡跟蹤結(jié)果
本文中基于YOLOv2多類目標(biāo)檢測(cè),協(xié)同KCF和運(yùn)動(dòng)信息的道路多目標(biāo)跟蹤算法,實(shí)現(xiàn)了多目標(biāo)軌跡跟蹤。提出了分段的線性恒定速運(yùn)動(dòng)模型,消除了噪聲,減少了卡爾曼濾波運(yùn)動(dòng)估算次數(shù),在分段幀數(shù)為4時(shí),多目標(biāo)的跟蹤速度相比一般恒定速運(yùn)動(dòng)模型,目標(biāo)的平均檢測(cè)、跟蹤速度提高1.5倍,將目標(biāo)的運(yùn)動(dòng)狀態(tài)融合到特征跟蹤框的調(diào)整之中,并將目標(biāo)累計(jì)的跟蹤狀態(tài)加入到匹配規(guī)則中。實(shí)驗(yàn)表明,本文中算法在兩種天氣情況下對(duì)城市和高速道路對(duì)目標(biāo)軌跡的平均跟蹤效率為92.5%,為后續(xù)結(jié)合其他傳感器實(shí)現(xiàn)車輛的姿態(tài)估計(jì)和路徑規(guī)劃提供了有效信息。
本文中跟蹤算法效果依賴于檢測(cè)算法,YOLOv2目標(biāo)檢測(cè)算法對(duì)小目標(biāo)的檢測(cè)準(zhǔn)確率較低,檢測(cè)距離受到目標(biāo)遮擋限制,基于視覺的目標(biāo)檢測(cè)、跟蹤方法受限于攝像頭的工作條件,在陰雨天檢測(cè)精度降低,無法適用于夜晚場(chǎng)景。使用分段線性恒定速模型獲得目標(biāo)軌跡變得平滑,但也導(dǎo)致目標(biāo)軌跡獲取有一定滯后性,視覺目標(biāo)的分類檢測(cè)、跟蹤優(yōu)勢(shì)在于直接獲取目標(biāo)分類結(jié)果,結(jié)合雷達(dá)和車聯(lián)網(wǎng)通信技術(shù)才能獲取更多車輛信息,進(jìn)一步提升自動(dòng)駕駛系統(tǒng)的環(huán)境感知能力,解決當(dāng)前基于視覺的多目標(biāo)軌跡跟蹤缺陷,這也是當(dāng)前智能交通運(yùn)輸系統(tǒng)研究的難點(diǎn)。