廣州城市理工學院電子信息工程學院 張亦勛
針對視覺機器人功能單一、抗干擾能力差等問題,本文設計一款能夠對任意目標進行視覺識別和跟蹤的機器人,該系統的視覺跟蹤算法將TLD的中值流跟蹤器替換成KCF算法,同時融入融合HOG特征和顏色特征,提高TLD算法的目標跟蹤速度,系統測試結果表明,改進的跟蹤算法在背景產生變化、目標的圖像信息發生形變、目標被其他物體遮擋、目標突然丟失等問題都具有較高的穩定性和魯棒性,同時對靜態目標跟蹤的幀數有所降低,能夠快速瞄準目標。
隨著計算機視覺算法技術的發展,計算機視覺算法成為眾多人工智能領域的重要部分,也是智能機器人的重要組成部分,由計算機視覺和機器人這兩方面所結合起來的視覺跟蹤機器人有著廣泛的應用前景。但目前大多數視覺機器人由于所需的計算機視覺算法的算法運算量大,但機器人自身的運算能力十分有限,導致大多數機器人實現功能單一、抗干擾能力差。
本文針對此問題,在分析現有的實現視覺跟蹤機器人功能的基礎上,設計了一款以KCF與TLD相結合的計算機視覺算法,基于STM32單片機為下位機控制機器人實現目標跟蹤的視覺跟蹤機器人。主要完成的工作包括了,計算機算法環境搭建,視覺跟蹤算法的測試,測試結果表明,該系統具有較好的魯棒性。
KCF(Kernel Correlation Filter)核相關濾波算法通過目標樣本去訓練判別分類器,訓練判別分類器分析當前跟蹤的目標是被跟蹤目標周圍的背景信息還是被跟蹤目標,如圖1所示。KCF通過嶺回歸分類器的學習來完成對目標的跟蹤,通過快速傅里葉變化實現算法的加速運算。KCF跟蹤算法在訓練階段,利用循環矩陣理論,對視頻目標區域進行稠密采樣,獲取正負樣本,提取方向梯度直方圖(HOG)特征,通過嶺回歸分類器分析所以樣本進行訓練。在檢測階段,以視頻前一幀目標位置為中心進行稠密采樣,將得到的所有樣本輸入到嶺回歸分類器,經過嶺回歸分類器的分類,得到目標的位置。
圖1 KCF算法流程圖
TLD(Tracking-Learning-Detection)目標跟蹤算法由跟蹤模塊(Tracking)、檢測模塊(Detection)、學習模塊(Learning)三部分組成,如圖2所示。該算法首先由跟蹤模塊的作用是將被跟蹤目標的運動軌道處理成軌道碎片提供給學習模塊進行學習,學習模塊根據跟蹤模塊的處理結果進行學習并對檢測模塊的錯誤進行分析,通過學習處理后生成訓練樣本,檢測模塊在接收到訓練樣本后對相關參數和目標模型進行跟新并對跟蹤模塊重新初始化,其中跟蹤模塊為中值流跟蹤器,學習模塊為P-N目標模型學習。
圖2 TLD算法流程圖
圖3 KCF+TLD算法融合流程圖
KCF跟蹤算法的運行速度方面和在目標環境變化不大的情況下跟蹤速度表現優異,但其在被跟蹤目標出現遮擋、形變、跟丟后無法找回目標,反觀TLD解決了被跟蹤目標被遮擋、目標跟丟無法重新找回的情況,因此將兩個算法互相融合,取長補短能提高算法的運算速度和追蹤效果。融合方法:利用KCF克服TLD的中值流跟蹤器的缺點,將KCF替換TLD的中值流跟蹤器,能夠加快TLD的目標跟蹤速度。當被跟蹤目標在當前圖像幀中消失后,KCF會把盲目地在背景中尋找被跟蹤目標,當被跟蹤重新出現時,KCF算法依然在背景中尋找被跟蹤目標,導致跟蹤失敗,為了避免這個錯誤的方法,KCF與TLD融合的算法包含了原TLD學習模塊,當判斷目標丟失時不再盲目地在背景內尋找目標,當目標重新出現時重新跟蹤目標,進一步提高算法的跟蹤性能。雖然這兩個算法的融合方法很簡單,但融合后的算法確實解決了KCF不能跟蹤被遮擋的物體以及目標跟蹤后不能找回的缺點,而且算法速度上高于原TLD算法,提高了算法的性能和適用性。
機器人系統總體框架如圖4所示,USB攝像頭拍攝到的圖像信以視頻幀的形式傳入到程序中。首先先進行KCF的濾波和特征跟蹤,再經由TLD算法的處理運算出目標狀態,再通過整合模塊把得到被跟蹤目標的位置信息轉換為云臺舵機轉動命令發送,通過CH340模塊將指令由USB轉為TTL電平,機器人下位機通過STM32單片機直接或間接地控制各個模塊實現機器人的各個功能。STM32單片機在接收到PS2手柄模塊和CH340模塊的控制信號后,根據程序存儲器對應的指令執行行動,如前進、水彈槍射擊等。STM32單片機實時接收各模塊的信息,例如編碼電機的電機轉速,陀螺儀的歐拉角等,根據各模塊的信息及時調整機器人的運動狀態實現機器人運動底盤的靈活移動。攝像頭所拍攝的圖像信息并不會直接交給STM32單片機除了,而是先經由上位機NUC通過視覺追蹤算法運算過后所得的控制指令發送給單片機接收,單片機接收到通過CH340轉換的控制指令后控制舵機云臺轉動追蹤目標。
圖4 機器人系統總體框架設計
目標跟蹤算法軟件實現流程圖如圖5所示。由于該目標跟蹤算法的運算結果只返回一個跟蹤框,并沒有實際的跟蹤結果,所以需要獲取被跟蹤目標所在圖像中的坐標,獲取包圍被跟蹤目標的矩形重心后,才能方便實現目標跟蹤算法。計算出被跟蹤目標的矩形包圍框的重心后,先對圖像幀區域進行劃分,使用漸近式接近目標區域為核心思想,將每一幀的圖像劃分為許多相同的矩形區域。隨后根據KCF+TLD目標跟蹤算法運算得出的結果框的重心與圖像正中心對比,計算出被跟蹤目標與圖像正中心坐標的偏移量,再通過舵機控制算法計算出舵機云臺的轉動量,逐幀接近目標所在位置,達到跟蹤效果。
圖5 目標跟蹤算法軟件實現流程圖
為保證系統測試的可靠性,設置了遙控車為移動目標靶,機器人先對移動目標進行框選獲得目標樣本,隨后遙控移動目標測試機器人的實際追蹤效果。
通過測試可以發現在算法實際運行時,跟蹤目標的移動會導致目標的背景產生變化、目標的圖像信息發生形變、目標被其他物體遮擋、目標突然丟失等問題,攝像頭拍攝目標所在的圖像信息發生變化,KCF+TLD跟蹤算法通過在線不斷對目標進行樣本取樣學習目標特征,能夠有效應對移動目標的跟蹤瞄準。
當目標因為某種原因跟丟后(目標被遮擋也算跟丟),目標跟蹤算法會根據選取目標時保留的原始樣本的特征值在圖像信息內搜索。符合原始樣本目標特征的圖像將被重新判斷為被跟蹤目標。測試結果表1和表2所示。
表1 靜態目標瞄準測試結果
機器人對移動目標跟蹤、鎖定和瞄準測試,測試結果表2所示。
表2 移動目標瞄準測試結果
通過三個算法分別對靜態目標的跟蹤算法幀數測試如圖6所示,得出數據結果表3所示,KCF算法的運行幀數較高,TLD算法的運行幀數較低,而KCF+TLD算法的運行幀數比TLD算法有所降低。
圖6 三種算法跟蹤靜態目標實際運行幀數畫面
表3 三種算法對靜態目標跟蹤算法幀數測試結果
基于視覺跟蹤機器人的設計與實現,采用了融合KCF+TLD的目標跟蹤算法以及NUC作為視覺算法運行環境,可以對任意目標進行跟蹤瞄準并在目標丟失并重新出現時自動找回目標,同時能夠長時間穩定地跟蹤目標,該方案功能實現對視覺機器人的目標識別與跟蹤具有一定的研究價值。