閆耀芳,張子林,錢 堂,白佑銘,李兆麟
(河南科技大學信息工程學院,河南 洛陽 741023)
無人機最初只是應用于軍事領域,但近年來被逐漸運用到大眾生活等多個領域。由于無人機小巧靈活,方便大范圍巡查的特點,無人機在疫情防控、影視拍攝、搶險救災、電力巡檢等方面都發(fā)揮著重要的作用。在無人機的很多應用中都會包含目標跟蹤的任務,比如城市犯罪車輛的跟蹤、大型節(jié)日活動的跟拍錄制、海上漂流人員的跟蹤[1]等。
2012年深圳展出的智能多目標跟蹤技術,采用了國內(nèi)先進的視頻圖像識別、檢測和跟蹤算法,已經(jīng)遠遠領先于很多國外應用的多目標跟蹤系統(tǒng)。目前,像視頻監(jiān)控這樣靜態(tài)場景中的目標檢測與跟蹤技術研究已經(jīng)成熟[2],而在動態(tài)場景中,只要無人機的姿態(tài)發(fā)生改變,索引目標就會與之背景錯位,這使得檢測和跟蹤更加困難。我國大疆創(chuàng)新致力于無人機的研發(fā),近些年大疆就在Phantom4這樣的先進機型上使用了GPS跟蹤和視覺跟蹤兩種目標跟蹤技術。Phantom4可以識別人、汽車、船只等運動物體進行自動跟隨拍攝,并保持構(gòu)圖一致,讓高難度航拍變得輕而易舉。
因此,我們借助相對比較平價的Tello無人機進行了系統(tǒng)開發(fā),在原有性能上加入目標追蹤、軌跡推演和手勢控制多項功能。讓人們可以用手勢控制無人機,獲得運動軌跡,實現(xiàn)目標跟蹤。
本系統(tǒng)的主要功能是目標跟蹤,其中還包括航跡推演和手勢控制功能。本系統(tǒng)分為以下幾個軟件模塊:數(shù)據(jù)處理模塊、目標跟蹤模塊、無人機控制模塊、航跡推演模塊和圖像處理模塊。
◆數(shù)據(jù)處理模塊:主要負責數(shù)據(jù)收發(fā)處理,通過WiFi接收無人機視頻流及各項參數(shù),并發(fā)送PC端操作命令,實現(xiàn)底層的數(shù)據(jù)的交互。
◆目標跟蹤模塊:主要負責目標跟蹤。YOLO-V3算法檢測目標,DeepSORT算法跟蹤目標,使其在多人干擾的情況下也能穩(wěn)定跟蹤目標。
◆無人機控制模塊:主要負責控制無人機姿態(tài),分為手勢控制和鼠標鍵盤控制兩個方面。通過將無人機指令與鍵盤鼠標事件綁定,完成無人機上下翻轉(zhuǎn)等基本操作。使用OpenPose模型檢測人體關鍵點變化,獲知相應手勢指令來控制與人的距離。
◆航跡推演模塊:主要負責計算實時位置,記錄歷史點,畫出移動軌跡。
◆圖像處理模塊:負責計算視頻流圖片數(shù)據(jù)的幀率,抓取、裁剪縮小圖像。
本系統(tǒng)開發(fā)使用睿熾公司研發(fā)的Tello無人機。Tello無人機內(nèi)嵌Marvell 1x1 11n單頻WiFi系統(tǒng)單晶片(SoC),該芯片包括IP攝像頭、移動路由器、IoT網(wǎng)關等,是一款高度集成的單頻(2.4 GHz)IC,通過實現(xiàn)802.11b/g/n所規(guī)范的保護機制來避免干擾。它還使用內(nèi)置的有線等效加密(WEP)算法,來降低數(shù)據(jù)被第三方攔截的概率。Marvell產(chǎn)品能夠以極小能耗可靠傳輸空中無線高清視頻,緩解無人機電池載電量不高的限制,并且其價格極具競爭力,被廣泛使用于市場。
圖1 通信鏈路
圖1是Tello無人機的通信鏈路圖,本系統(tǒng)主要是在個人筆記本PC上建立UDP客戶端,建立接收線程RecvThread來負責從全局連接句柄Handle接收數(shù)據(jù),向特洛Tello UDP端口8889發(fā)送命令和接收響應。在PC移動設備上建立UDP服務器,通過UDP端口8890從IP 0.0.0.0收聽消息。無人機的控制鏈路是通過在PC端編譯的一個PID控制器來實現(xiàn)的,使無人機能夠平穩(wěn)飛行。
系統(tǒng)開始首先啟動數(shù)據(jù)處理模塊,進入自動連接狀態(tài),初始化WiFi,搜索新的WiFi信號,檢索并連接到Tello無人機,形成數(shù)據(jù)通路,建立視頻鏈路,接收視頻流,圖像處理模塊抓取、顯示圖像。之后,把圖像交給目標檢測進程,對圖像建立目標索引,鎖定目標,檢測人體骨骼點,保存數(shù)據(jù)。通過比較主要人體骨骼關鍵點的位置偏差,如鎖骨與手腕的距離,發(fā)現(xiàn)有較大的偏差值的時候,將偏差值傳給PID控制器,PID控制器進一步運算,計算得到偏航、俯仰、橫滾、高度四個維度的控制數(shù)據(jù),發(fā)送控制指令,改變無人機姿態(tài)。目標移動時,通過圖像處理模塊將圖像縮小到合適比例,從而便于系統(tǒng)利用DeepSORT算法輸出目標位置遷移,PID調(diào)整無人機姿態(tài),跟蹤目標。當鍵盤事件被觸發(fā)后啟動PID調(diào)整無人機實現(xiàn)基本指令。
建立通信線路后,接收無人機數(shù)據(jù),進入航跡推演模塊,最后在畫布上顯示出來。系統(tǒng)運行流程如圖2。
圖2系統(tǒng)運行流程
關于視覺跟蹤問題,各界學者專家提出了很多算法。但要彌補無人機在長時間實時跟蹤過程中出現(xiàn)目標丟失的不足,還要不斷改進機器視覺的檢測和跟蹤算法。本系統(tǒng)采用DeepSORT算法來實現(xiàn)目標跟蹤,YOLO-V3算法來實現(xiàn)目標檢測,得到了較好的跟蹤效果。
DeepSORT目標跟蹤算法是目前比較常見的針對多目標追蹤的跟蹤算法。DeepSORT算法繼續(xù)沿用了卡爾曼濾波加匈牙利算法,先檢測再跟蹤,在此基礎上增加了級聯(lián)匹配(Matching Cascade)+新軌跡[4]的確認??柭鼮V波用來對目標的軌跡進行預測,使用確信度較高的跟蹤結(jié)果對預測結(jié)果進行修正。匈牙利算法是一種尋找二分圖的最大匹配算法,在目標追蹤過程中幫助尋找前后兩幀的若干目標的匹配最優(yōu)解。在目標長時間被遮擋時,級聯(lián)匹配通過對頻繁出現(xiàn)的目標賦予優(yōu)先權的方法,來達到最佳的匹配效果。DeepSORT算法在系統(tǒng)中可以幫助無人機即使在較復雜的環(huán)境下,也可以更加快速、準確地找到目標。
YOLO是目前比較流行的Object Detection算法,速度快且結(jié)構(gòu)簡單。YOLO-V3借鑒了金字塔特征圖思想,小尺寸特征圖用于檢測大尺寸物體,而大尺寸特征圖檢測小尺寸物體[3],提升小物體檢測效果。由此,在運動目標的目標檢測過程中,可以減少追蹤過程中目標丟失可能。盡管YOLO系列檢測精度不如Faster RCNN,但是YOLO-V3每個真實框只對應一個正的候選區(qū)域。這就使得YOLO-V3算法具有更快的速度,能到達實時響應的水平。本系統(tǒng)中,YOLO-V3就很好地為無人機目標檢測提供了精度和速度。
根據(jù)系統(tǒng)設計方案,進行系統(tǒng)測試環(huán)境的搭建:首先安裝Python或Anaconda,硬件環(huán)境CPU 2.0 GHz以上,Nvidia顯卡2G內(nèi)存以上;軟件環(huán)境要求操作系統(tǒng)平臺為Windows 10系統(tǒng),安裝CUDA11.2架構(gòu)。然后依次安裝Paddlepaddle、Paddlehub預訓練模型。人體關鍵點檢測模型安裝Open pose_body_estimation,還要依次安裝Av、Keyboard、Pywifi等基本配置,最后安裝TelloPy(在TelloPy-develop-0.7.0目錄下執(zhí)行Python setup.py install)。編譯環(huán)境要求Pycharm 2021.1.1版本及以上。
系統(tǒng)運行后,當人伸手向右或向左擺動時,觀察無人機是否跟隨手勢指示向右或向左移動;若人做召回或遠離手勢觀察無人機是否靠近或遠離。在測試鍵盤,分別按下W,A,S,D或上、下、左、右、空格、Tab鍵,觀察無人機的動向,是否做上下左右移動,起飛或著陸。檢測功能正常。
鎖定目標之后,當目標移動時,觀察無人機是否會跟隨移動并在屏幕上顯示出運動的軌跡,同時會在屏幕右上角顯示飛行器狀態(tài)參數(shù)。
測試完成,屏幕中綠色箭頭表示無人機的位置,紅色曲線表示無人機的飛行軌跡。
右上角各項飛行參數(shù)如下:
FPS:圖像幀率 15
BAT:電池電量 72%
WIFI:信號強度 90
MODE:飛行模式 6
EXP:目標的期望距離 2.0 m
本文基于Tello無人機設計了一套目標跟蹤系統(tǒng),使用Python語言開發(fā),具有較強的可移植能力。本系統(tǒng)可以通過個人筆記本電腦鍵盤和手勢動作來控制無人機,可以顯示高清圖像,瀏覽行動軌跡,實現(xiàn)對動態(tài)目標檢測并跟蹤。利用Tello無人機自身集成的現(xiàn)在非常出色的WiFi技術,更加快速準確實現(xiàn)通信鏈路數(shù)據(jù)交互。將YOLO-V3目標檢測算法和DeepSORT目標跟蹤算法結(jié)合,大大降低了目標丟失概率。系統(tǒng)操作簡單,成本不高,可用于安防、體育轉(zhuǎn)播、老人孩童的看護等,有很大的應用前景。