羅 鵬, 張清亮, 王 軻, 丁祝順
(北京航天控制儀器研究所, 北京 100039)
目標(biāo)跟蹤系統(tǒng)一直是機器視覺領(lǐng)域研究的熱點, 在安防監(jiān)控[1]、 搜索救援[2-3]等領(lǐng)域都有著廣泛的應(yīng)用。 隨著技術(shù)的發(fā)展, 目標(biāo)跟蹤系統(tǒng)在運行速度、 體積等方面的要求也逐漸提高, 因此設(shè)計一種體積小、 功耗低、 實時性強的目標(biāo)跟蹤系統(tǒng)具有很大的實用價值。
FPGA 具備功耗低、 體積小、 成本低等諸多優(yōu)點, 能夠滿足目標(biāo)跟蹤系統(tǒng)的需求, 適合用于目標(biāo)跟蹤系統(tǒng)。 近些年來, 基于FPGA 的目標(biāo)跟蹤系統(tǒng)發(fā)展迅速。 其中, Yang 等[4]在FPGA 中實現(xiàn)了核相關(guān)濾波(Kernel Correlation Filter, KCF) 算法, 運行速度為30fps。 Yan 等[5]在FPGA 中實現(xiàn)了一種背景差分和Sobel 的融合算法, 能夠處理640 ×480 分辨率的圖像, 處理速度可達60fps。 張格森等[6]在FPGA 中實現(xiàn)了平均絕對差(Mean Absolute Differences, MAD)算法, 運行速度為60fps。 在算法方面, 為了提高系統(tǒng)的運行速度, 本文采用運行速度快、 算法復(fù)雜度低、 具備較強魯棒性的MOSSE[7]跟蹤算法。
本文在FPGA 中實現(xiàn)了MOSSE 跟蹤算法, 針對機載跟蹤目標(biāo)在運動過程中運動軌跡相對平穩(wěn)的特點, 對MOSSE 跟蹤算法加以改進。 通過之前的目標(biāo)位置預(yù)測下一幀目標(biāo)位置, 在下一幀圖像中對上一幀目標(biāo)位置及預(yù)測目標(biāo)位置區(qū)域進行搜索。 當(dāng)兩個區(qū)域計算得到的目標(biāo)位置至少有一個不小于設(shè)置的峰值旁瓣比(Peak to Sidelobe Ratio,PSR)閾值時, 得到目標(biāo)位置。 當(dāng)計算得到的目標(biāo)位置均小于PSR 閾值時, 利用Kalman 濾波算法[8]對目標(biāo)最終位置進行約束。 采用HLS 將改進前后的MOSSE 跟蹤算法封裝成IP 核, 在FPGA 中搭建目標(biāo)跟蹤系統(tǒng)對IP 核進行測試并對測試結(jié)果進行分析。
2010 年, Bolme 等[7]首次將相關(guān)濾波用在了目標(biāo)跟蹤領(lǐng)域, 提出了MOSSE 跟蹤算法, MOSSE 跟蹤算法是一種從少量訓(xùn)練圖片來產(chǎn)生類似于合成平均濾波器(Average of Synthetic Exact Filters,ASEF)的算法。 開始的時候, 它需要初始訓(xùn)練圖片f1和期望輸出g:f1為根據(jù)目標(biāo)位置P1在初始幀圖像中取出的目標(biāo)區(qū)域,g為一個與f1同等大小的標(biāo)準(zhǔn)Gauss 模板。 將f1和g通過Fourier 變換轉(zhuǎn)換成F1和G, 通過點除計算得到相關(guān)濾波器
式(1)中, *表示矩陣的復(fù)共軛。 輸入第i幀圖像, 根據(jù)i幀圖像中目標(biāo)所在位置取出第i幀圖像中的目標(biāo)區(qū)域fi, 進行Fourier 變換后得到Fi與相關(guān)濾波器進行相關(guān)運算得到響應(yīng)結(jié)果Gi,對Gi進行Fourier 逆變換得到gi,gi中的最大值為目標(biāo)當(dāng)前位置Pi
式(2)中, IFFT 為Fourier 逆變換, ⊙為點乘運算。 在得到響應(yīng)圖gi和響應(yīng)圖峰值gmax后, 計算當(dāng)前響應(yīng)圖gi的PSR 并與提前設(shè)置的PSR 閾值進行比較, 用于判斷響應(yīng)圖的可靠性。 PSR 的計算公式如下
式(3)中,μi為響應(yīng)圖gi中除峰值周圍11 ×11區(qū)域像素值外其余像素值的均值,σi為其余像素值的標(biāo)準(zhǔn)差。 為了找到一個將訓(xùn)練輸入映射到所需訓(xùn)練輸出的濾波器, 這個濾波器最小化了實際輸出和期望輸出G之間的誤差平方和。這個最小化問題可以通過下式表達
MOSSE 跟蹤算法在后續(xù)圖像幀中根據(jù)當(dāng)前目標(biāo)位置Pi所在區(qū)域計算后續(xù)目標(biāo)位置, 在未跟蹤到目標(biāo)的情況下, 一般的搜索策略是對Pi周圍八個方向的區(qū)域進行搜索, 這種搜索方式需要處理大量的數(shù)據(jù), 極大增加了系統(tǒng)的延遲。 本文針對機載跟蹤目標(biāo)的特點對MOSSE 跟蹤算法進行改進,機載跟蹤目標(biāo)如車輛、 船只、 行人、 建筑物等,這些目標(biāo)的運動軌跡相對而言更加具有穩(wěn)定性和規(guī)律性。 因此, 可以采用預(yù)測的方式計算目標(biāo)位置對目標(biāo)進行跟蹤, 在未跟蹤到目標(biāo)的情況下,利用Kalman 濾波約束目標(biāo)位置。 Kalman 濾波算法能夠降低目標(biāo)位置的誤差, 目標(biāo)運動軌跡越穩(wěn)定,預(yù)測得到的目標(biāo)位置誤差越小, Kalman 濾波算法效果越好。 改進前后的算法流程如圖1 所示。
圖1 MOSSE 跟蹤算法改進前后流程圖Fig.1 Flowchart of MOSSE tracking algorithm before and after improvement
改進后的算法原理如下: 在實時跟蹤的情況下, 兩幀圖像間的時間間隔通常為1/60s, 因此可以近似地認(rèn)為目標(biāo)在兩幀間的運動狀態(tài)沒有改變。通過目標(biāo)之前位置Pi-2、Pi-1、Pi, 預(yù)測后續(xù)目標(biāo)位置Pi+1
式(6)中,a為目標(biāo)的加速度,V為當(dāng)前目標(biāo)的速度。 在當(dāng)前幀圖像中取出Pi及Pi+1位置所在區(qū)域圖像fi和fi+1, 將兩副圖像進行處理及FFT 變換得到頻域圖Fi和Fi+1
根據(jù)式(7) 計算得到兩幅框圖中的目標(biāo)位置P_ki和P_ki+1, 根據(jù)式(3) 同時計算兩幅圖中的PSR, 用于判斷當(dāng)前位置的可靠性, 本文將PSR 閾值設(shè)置為7。 當(dāng)兩幅圖中至少一個PSR 達到閾值時, 將該位置設(shè)為目標(biāo)所在位置。 當(dāng)兩位置結(jié)果均不達標(biāo)時, 表明目標(biāo)處于形變或遮擋狀態(tài), 通過Kalman 濾波計算目標(biāo)所在位置, 在計算位置取出目標(biāo)區(qū)域, 更新相關(guān)濾波器。
Kalman 濾波算法需要輸入目標(biāo)位置的誤差,為了降低數(shù)據(jù)干擾, 目標(biāo)預(yù)測位置Pi+1的誤差設(shè)置為目標(biāo)的加速度a, 將目標(biāo)位置P_ki+1加入式(6)中計算加速度a_k, 以計算得到后的加速度為測試目標(biāo)位置的誤差, 計算過程如下
式(8)中,Q=a2,R=a_k2,XKal為目標(biāo)最終位置,Kk為Kalman 增量,Pk_1初始值設(shè)為0.01。
為了判斷目標(biāo)跟蹤算法的跟蹤效果, 本文采用跟蹤精度和跟蹤成功率對目標(biāo)跟蹤算法的性能進行量化, 采用的測試方法包括第一幀測試(One Pass Evaluation, OPE)、 空間魯棒性測試(Spatially Evaluation, SRE) 和時間魯棒性測試(Temporally Evaluation,TRE)。
OPE 測試方法給出起始幀圖像中的目標(biāo)位置,跟蹤算法根據(jù)起始幀目標(biāo)位置計算后續(xù)目標(biāo)位置,得到跟蹤算法的精度和成功率; SRE 測試方法通過在起始幀采用不同大小、 位置的跟蹤框?qū)δ繕?biāo)進行跟蹤, 以此測試算法在空間變化時的魯棒性; TRE測試方法在同一個視頻中選擇不同的起始幀對算法進行測試, 得到算法在時間變化時的魯棒性。
其中, 中心誤差距離為每一幀中算法跟蹤結(jié)果與人工標(biāo)注位置的歐式距離。 設(shè)定一個閾值,當(dāng)中心誤差距離小于此閾值時代表這一幀圖像跟蹤成功, 所有跟蹤成功的幀數(shù)與視頻總幀數(shù)的比例即為當(dāng)前閾值的精度。 選用不同的閾值能夠計算出不同的精度結(jié)果, 得到精度曲線。
成功率通過邊界框覆蓋率進行衡量, 算法跟蹤結(jié)果的邊界框面積為rt, 人工標(biāo)注的邊界框面積為ra, 邊界框覆蓋率的計算公式如下
設(shè)置一個成功率閾值S0, 當(dāng)S大于S0時代表這一幀跟蹤成功, 所有跟蹤成功的幀數(shù)與視頻總幀數(shù)的比例即為當(dāng)前閾值的成功率。
本文采用OTB2013 數(shù)據(jù)集對改進前后的算法進行測試, OTB2013 中包含51 個視頻序列, 包含了跟蹤算法在跟蹤過程中可能面臨的挑戰(zhàn), OPE、SRE、 TRE 的測試結(jié)果如圖2 所示。
圖2 跟蹤算法測試結(jié)果對比Fig.2 Comparison of tracking algorithm test results
圖2 繪制了三種算法在OPE、 SRE 及TRE 測試方法下的精度和成功率曲線, 并給出了每種算法的平均精度及平均成功率。 其中, MOSSE 為最初的算法; MOSSE_F 為添加了范圍搜索的算法,范圍搜索的位移距離為固定的14 個像素;MOSSE_Kal 為添加了Kalman 濾波后的算法。 算法的跟蹤曲線及平均精度、 成功率表明, 在三種測試方法中, 添加了Kalman 濾波后的算法相比于原算法和范圍搜索的算法在各個方面的性能都有所提升。
在OTB2013 視頻集中, 每個視頻都對屬性進行了注釋, 這些屬性描述了跟蹤算法在每個視頻中將面臨的挑戰(zhàn)。 例如照明變化、 遮擋、 形變,這些屬性可以用于判斷不同挑戰(zhàn)中跟蹤算法的跟蹤效果。 本文在圖3 中介紹了四個屬性的跟蹤結(jié)果對比, 分別是光照變化、 形變、 遮擋、 背景雜斑。
圖3 不同挑戰(zhàn)下算法跟蹤結(jié)果對比Fig.3 Comparison of algorithm tracking results under different challenges
四個屬性的跟蹤結(jié)果表明, 加入了Kalman 濾波后的跟蹤算法在面對光照變化、 形變、 遮擋、背景雜斑等不影響目標(biāo)運動軌跡的情況時都能夠提高算法的跟蹤精度, 得到更好的跟蹤效果。
為了驗證在FPGA 中兩個IP 核的實際情況,本文搭建了一個完整的目標(biāo)跟蹤測試系統(tǒng)對生成的MOSSE 跟蹤算法IP 核進行測試, 系統(tǒng)主要包括用于控制模塊的軟核、 圖像數(shù)據(jù)輸入模塊、MOSSE 跟蹤算法IP 核以及用于圖像顯示的HDMI模塊, 系統(tǒng)的整體結(jié)構(gòu)如圖4 所示。
圖4 目標(biāo)跟蹤測試系統(tǒng)結(jié)構(gòu)Fig.4 Structure of target tracking test system
將IP 核移植到FPGA 中進行測試, 通過IP 核在FPGA 中的資源消耗和運行速度來判斷之前的仿真結(jié)果是否正確。 整個目標(biāo)跟蹤系統(tǒng)平臺如圖5 所示, 跟蹤過程圖像如圖6 所示。
圖5 目標(biāo)跟蹤系統(tǒng)平臺Fig.5 Diagram of target tracking system platform
圖6 跟蹤過程圖像Fig.6 Images of tracking process
本文圖像的發(fā)送方式為通過IP 核進行控制,以此測試IP 核的實際運行速度, 結(jié)果如表1 所示。
表1 IP 核實際運行速度Table 1 Actual speed of IP core
實際運行速度測試結(jié)果顯示, 改進前后的算法均能夠?qū)崟r處理視頻圖像。 在前10s 的時間里,原算法IP 核實際運行速度在200fps 左右, 與仿真結(jié)果的4.9ms 相符。 后10s 的時間里, 原算法IP核由于范圍搜索的原因?qū)е逻\行速度下降, 而改進后算法的運行速度能夠始終維持在200fps 左右。FPGA 中IP 核資源消耗對比如表2 所示。
表2 算法在FPGA 中資源的實際消耗情況Table 2 Actual resource consumption of the algorithm in FPGA
由表2 可知, 改進后的算法資源消耗大大降低。 其 中, BRAM_18K 消 耗 降 低 了 20.33%,DSP48E 消耗降低了8.09%, FF 消耗降低了3.49%, LUT 消耗降低了8.97%。
本文利用Kalman 濾波算法的特點對MOSSE 跟蹤算法進行改進, 提高了算法的性能和運行速度。利用FPGA 的高速并行處理能力實現(xiàn)了基于FPGA的目標(biāo)跟蹤系統(tǒng), 降低了系統(tǒng)的資源消耗及功耗,對工程的實際應(yīng)用具有一定的參考價值。 但本文設(shè)計對目標(biāo)遮擋問題的考慮仍顯不足, 后續(xù)將針對該問題進行深入的研究。