任 進,李文邦,郭昱汝
(北方工業大學 信息學院,北京 100144)
目標跟蹤任務是無人機一項極為重要的功能,無論是目標抓捕、自動檢測打擊或是移動跟拍等都有著廣泛的需求,因此無人機目標跟蹤的完善與實踐具有極強的現實意義。
無人機的跟蹤算法主要有生成式算法和濾波類判別式跟蹤算法[1-3]。生成式算法早期主要是根據提取的目標特征,對目標建模后進行跟蹤。與生成式目標跟蹤算法相比,判別式跟蹤不僅考慮目標的模型描述[4],而且將目標的特征信息和其所在位置的環境背景信息加入了考慮范圍[5]。
相關濾波類算法由于通過傅里葉變換在頻域中進行計算[6],運行速度較快,能夠滿足無人機目標跟蹤最基本的實時性的需要。MOSSE算法作為目標跟蹤算法,在669 幀/秒的速度下,對亮度、尺度、位姿和不嚴格變形的魯棒性比較好[7]。
深度學習的方法提升了多目標跟蹤算法的精度[8-9],大都是通過預訓練出卷積神經網絡(Convolutional Neural Network,CNN)以分析目標的特征[10],此后再提取深度特征,得到特征信息后進行特征的分類,以此為基礎實現目標的確定與跟蹤。但是其也依賴于GPU的性能,運行速度較慢,所以深度學習和相關濾波相結合的方法漸漸成為主流。
目前,基于無人機平臺的跟蹤算法依然存在諸多問題,如目標的移動過快以至于脫離視線、拍攝后低分辨率等,這一系列問題使得學者們對跟蹤算法的研究有了新的方向與目標[11]。有的算法如核相關濾波 (Kernel Correlation Filter)算法利用梯度直方圖特征并融合多通道特征,通過多種方法結合使得跟蹤結果更加準確[12-13]。本文提出一種無人機多目標跟蹤算法,旨在使用無人機跟蹤地面行人目標,該算法需要在復雜環境和距離變化下依然能夠高效地跟蹤目標,在圍繞無人機特性設計多目標跟蹤算法的同時也應該注意目標檢測、特征提取和相似度等之間的關聯,力求在保證算法時效性和速度的同時,盡可能提高精度。
YOLOv5網絡結構可分為輸入端(Input)、骨干網絡(Backbone)、多尺度特征融合模塊(Neck)和輸出端(Output)共4個部分。YOLOv5包含了4個目標檢測版本:YOLOv5s,YOLOv5m,YOLOv51和YOLOv5x。4種模型有著一樣的網絡結構,通過改變網絡寬度來改變轉換器(Conv)中卷積核的數量,通過改變網絡深度來改變瓶頸層(BottleneckC3)中C3的數量,實現不同網絡深度和不同網絡寬度之間的組合,達到精度與效率的平衡[14]。YOLOv5s是這4種里面網絡深度最淺、特征圖寬度最小的YOLOv5網絡,有著非常不錯的性能,其在TeslaP100上檢測速度達到140 幀/秒。其他3種模型都在YOLOv5s基礎上不斷加深、加寬,并且各個網絡的網絡深度與特征寬度都可用代碼控制,在使用時復雜度降低,節約了成本。
4種YOLOv5與EfficientDet檢測器[15]對比如圖1所示。由圖1可以看出,在性能上YOLOv5s 圖1 4種YOLOv5與EfficientDet檢測器對比Fig.1 Comparison of four YOLOv5 detectors and EfficeintDet detector DeepSort算法由SORT算法改進得來[16]。相比于SORT算法,DeepSort算法的改進在于內容匹配,實現了避免內容匹配忽略多目標身份變換的問題,使用集成表觀信息來遏制身份變換的發生頻率,采用了一個簡單的CNN來提取被檢測物體(檢測框物體)的外觀特征(用低維向量表示),在每次檢測+追蹤后,進行一次物體外觀特征的提取并保存[17]。 在后面每執行一步時,當前幀中被檢測到的物體外觀特征與之前存儲的外觀特征都要執行一次相似度的計算,這個相似度將作為一個重要的判別依據。 DeepSort的核心流程是預測、觀測和更新3步結合的方式。DeepSort匹配過程分為以下幾種情況: ① 卡爾曼濾波的預測未被檢驗,出現這種情況時結果會進入重疊度(Intersection over Union,IoU)匹配進行核實。 ② 卡爾曼濾波的預測和檢測器匹配。在匹配時會出現2種情況:Tracks和Detections匹配成功,則更新卡爾曼濾波并進入下一幀Tracks未匹配。在這種情況下,結果會進入IoU匹配中,并重新生成Tracks,重復這一步。Detections或Tracks未匹配,這種情況下會進入IoU匹配,之后進行二次匹配。若二次匹配失敗,算法會標記其為一個不真實軌跡納入考慮,然后再次進行IoU匹配,如果在第3次匹配時成功了,則將其列為真實軌跡加入計算中。如果再次失敗,則會將其列為漏檢再次納入考慮范圍。若有軌跡被標記為不真實軌跡,則將其刪除并不再考慮。 DeepSort算法流程如圖2所示。YOLO預測的位置信息作為觀測值輸入DeepSort后,卡爾曼濾波先判斷是否存在Track,如果存在,對其位置信息進行先驗概率預測,然后在匹配模塊先后進行級聯匹配和IoU匹配,最終得到匹配成功列表。在卡爾曼更新模塊,對匹配成功的元素進行后驗預測,得到最終的修正坐標,更新卡爾曼增益等參數。一直循環上述操作,直至處理完全部視頻。 圖2 DeepSort算法流程Fig.2 DeepSort algorithm flow chart 1.2.1 卡爾曼濾波 卡爾曼濾波[18-19]對系統產生的噪聲有很好的容錯率,它的預測在一定程度上考慮了系統的不穩定性??柭鼮V波的預測非常全面,結果也更加接近真實的結果。基于這些優點,卡爾曼濾波逐漸成為各領域中常用的動態系統估算方法: zk=Hkxk+νk, (1) xk=Ak×xk-1+B×μk+wk-1, (2) 式中,Ak為狀態轉移矩陣;xk為系統狀態矩陣;Hk為狀態觀測矩陣;wk-1表示過程噪聲;zk為狀態陣的觀測量(實測),與系統模擬得到的狀態xk相對應;B為控制輸入矩陣;νk為高斯測量白噪聲。為了使卡爾曼濾波的測量更加準確,在以上公式中過程噪聲和測量噪聲2個誤差量起到了重要的作用,wk-1和νk的加入使卡爾曼濾波即使面對系統的線性變化,依然表現良好。 1.2.2 匈牙利算法 使用匈牙利算法解決分配問題,該算法解決了卡爾曼濾波算法預測框和檢測框的匹配問題。 將視頻前后幀中的檢測框看成2組數據,這2組數據存在匹配關系(同一個目標,在前后幀中的檢測框為一對),而同一幀中的目標框,可被認為是不同的目標,不存在匹配關系。顯然,前后幀中目標框的匹配問題是一個求二分圖最大匹配數的問題(盡量匹配所有目標)。匈牙利算法需要輸入一個代價矩陣,代價矩陣可以是IoU的距離,距離越小,匹配得越好。 無人機傳統的目標識別方法主要是進行特征提取,然后用分類器進行特征識別,但是傳統方法存在識別精度低、對多樣性的環境魯棒性差、無針對性和耗費時間長等問題。利用深度卷積模型,可對目標進行精準識別和鎖定,并應用在實時檢測上。通過CNN提取目標特征的目標檢測算法可以進行精準識別,如YOLO算法,其特點是采用端到端的檢測,檢測速度快,滿足實時檢測的要求。 算法設計概要如圖3所示,分為特征提取、目標識別、目標鎖定和目標跟蹤4大模塊。 圖3 算法設計概要Fig.3 Summary of algorithm design 各模塊功能描述如下: ① 視頻輸入:將需要進行跟蹤的視頻輸入到算法中。 ② 特征提取:算法將設定好的目標特征在視頻的幀圖像中進行提取,將與設定好的特征相似的地方選取出來,進行判斷。 ③ 目標識別:算法會對提取后的特征進行分析,對比后將與設定值相同的部分選中,即可將幀圖像中的目標識別出來。 ④ 目標鎖定:算法在識別了目標后,會生成一個與幀圖像中目標大小相當的錨框,將目標框在其中,以實現目標鎖定的功能。 ⑤ 目標跟蹤:實現對目標的框定后,跟蹤算法會根據檢測錨框中的圖像信息,使用相關濾波算法對比前后幀,實現對目標的持續跟蹤。 ⑥ 輸出跟蹤結果:跟蹤完成之后,程序會輸出跟蹤結果,結果分為2個,一個是視頻跟蹤結果,將目標的移動通過錨框的移動清楚地出現在視頻中;另一個是一個文本文件,包括目標在每一幀的坐標、錨框大小等數據。 YOLOv5算法和DeepSort算法結合后最終功能如下: ① 提取目標特征并進行檢測。 ② 鎖定識別后的對象。算法在檢測到對象后,自動生成錨框來框定檢測到的對象,即將其鎖定,檢測效果如圖4所示。即使應用于高空,從上往下觀測,算法依舊有較好的效果。 圖4 檢測效果Fig.4 Detection effect ③ 對移動中的對象進行跟蹤。將目標鎖定后,當目標移動時,根據算法的設計和卡爾曼濾波的原理,檢測目標框內各個目標的動作變化,從而推測各個目標在下一幀的位置,然后根據下一幀的圖像結合匈牙利算法計算出準確的位置,進而實現高效的多目標跟蹤。目標移動過程中的跟蹤捕捉如圖5所示。 圖5 移動中目標跟蹤Fig.5 Target tracking in movement YOLO將物體檢測作為回歸問題求解?;谝粋€單獨的端到端網絡,完成由原始圖像的輸入到物體位置和類別的輸出。 在網絡訓練中,網絡在初始錨框的基礎上輸出預測框并與真實框進行比對,計算二者差距,再反向更新,迭代網絡參數。BackBone主要進行特征提取,將圖像中的物體信息通過卷積網絡進行提取,用于后面目標檢測。Neck層對特征進行混合與組合,增強網絡的魯棒性,加強物體檢測的能力,并將這些特征傳遞到Head層進行預測,最終進行預測輸出。 YOLOv5在接收圖像后,會結合訓練集判斷圖像內容并進行識別,并框定出識別后的對象,實驗結果如圖6所示。由圖6可以看出,YOLOv5良好地對所選目標行人進行了識別,并完整地框定了目標對象。實驗中,YOLOv5的識別準確率到達了70%左右。在輸出的結果中,YOLOv5將每一幀的對象用錨框框住后,也保存了錨框內的圖像。 圖6 使用YOLOv5進行目標識別的結果Fig.6 Target recognition videos by using YOLOv5 在實現YOLOv5和DeepSort的聯用時,相當于視頻送入YOLOv5進行識別鎖定后,將處理好的視頻送進DeepSort算法中對目標進行跟蹤,從而實現完整的多目標跟蹤。無人機上算法運行效果如圖7和圖8所示??梢钥闯觯惴ㄔ跓o人機上運行較為穩定,跟蹤效果良好。 圖7 無人機上算法運行效果(前幀)Fig.7 Operation effect of algorithm on UAV (front frame) 圖8 無人機上算法運行效果(后幀)Fig.8 Operation effect of algorithm on UAV (rear frame) 實驗采用的是GPU版的PyTorch,選擇CUDA11.3版本。安裝Pycharm后,安裝環境所需的包require-ments,在深度學習中有很多調用視頻、圖像等的包需要進行調用,還有深度學習的包,例如opencv等,因此將所需的包都放入requirements中一并進行下載安裝。 選取公開的無人機數據集VisDrone2021進行圖像標注,從而形成自己的數據集來進行目標跟蹤?;鶞蕯祿?65 228幀和10 209張靜態圖像構成的400個視頻剪輯組成,由各種無人機攝像機捕獲,涵蓋廣泛,包括位置(從中國相隔數千千米的14個不同城市拍攝)、環境(城市和國家)、物體(行人、車輛和自行車等)和密度(稀疏和擁擠的場景)。 本算法設計的目的是為了能夠將無人機應用于災后救援、警方抓捕和環境保護等特殊環境,跟蹤目標主要是人群,故選取MOT16作為評估算法的評價指標。MOT16數據集是用于衡量多目標跟蹤方法標準的數據集,主要包含行人跟蹤圖片,專用于行人跟蹤領域的評估。 實現算法評價的步驟如下: ① 在seqinfo.init文檔中設定好測試視頻名稱。 ② 對seqinfo.init文檔中選定好的測試視頻運行檢測代碼,并生成結果的txt文件。 ③ 運行MOT16評估代碼文件,將生成的txt文件與gt.txt文件進行比較,得出代碼的準確性能評估。 MOT16代碼生成的評價指標如表1所示?!?”代表指標越高越好,“-”代表指標越低越好。 表1 MOT數據集評估指標Tab.1 Evaluation index of MOT dataset MOT指標能否準確測出算法性能,對跟蹤算法有以下要求: ① 在跟蹤過程中能及時檢測到所有出現的目標物體,包括初次進入視野的物體。 ② 算法推測位置和實際位置盡可能一致。 ③ 算法為每個檢測到的物體定義一個唯一的ID識別碼,相應地該物體分配的ID在整個跟蹤程序進行中保持不變。 在MOT的衡量指標中,跟蹤準確度(Multiple Object Tracking Accuracy,MOTA)是個很重要的指標,可以直觀地看出多目標跟蹤的性能并且不受檢測器精度的影響。MOTA為: (3) 式中,FN為False Negative;FP為False Positive;IDSW為ID Switch;GT為Ground Truth 圖像中物體的數量。MOTA將跟蹤過程中的所有錯誤納入了考慮范圍,這些錯誤主要是FN,FP,ID Switch。MOTA與物體位置的估計精度無關,但MOTA相應地準確衡量了跟蹤算法在檢測物體和跟蹤軌跡時的能力。MOTA有時也會為負數,即當跟蹤器產生的錯誤過大時。 跟蹤精度(Multiple Object Tracking Precision,MOTP)同樣也是跟蹤過程中的一個重要指標: (4) 式中,ct為t幀時匹配到的個數;dt,i為t幀時第i個匹配目標與GT的距離。 正確識別的計算檢測的分數(Identification Precision, IDP)是指每個行人框中行人 ID 識別的精確度;正確識別GT檢測的分數(Identification Recall, IDR)是指每個行人框中行人 ID 識別的回召率;ID Switch(ID_SW)為ID切換總數。 不同檢測器算法性能如表2所示?!?”代表指標越高越好,“-”代表指標越低越好。 表2 不同檢測器算法性能Tab.2 Performance of different detector algorithms 通過測試得出,DeepSort與YOLOv5x檢測器配合后,MOTP值最大。YOLOv4-tiny跟蹤精確度值最低,但占用內存較小,運行方便。對于搭載處理器較差的無人機,使用YOLOv4-tiny配合DeepSort算法更能發揮作用。 本文基于無人機平臺,將DeepSort與YOLOv5算法結合。關于多目標身份變換問題,當跟蹤目標消失又重新出現時,SORT算法給它重新分配新的身份,導致識別率降低,DeepSort算法將深度學習引入到SORT算法中,通過添加外觀描述符來減少身份切換,從而提高跟蹤效率。同時,還能計算目標間距以及特征相似度,并且增添了用來排除錯誤預測結果的驗證機制。實驗結果顯示,DeepSort與YOLOv5x檢測器結合要比YOLOv4-tiny檢測器的跟蹤精度提高22%,跟蹤準確度提高85%。
1.2 DeepSort算法

2 目標檢測
2.1 無人機平臺
2.2 算法設計概要

2.3 多目標跟蹤算法功能實現


2.4 使用YOLOv5實現目標檢測

2.5 基于YOLOv5+DeepSort的多目標跟蹤算法實現


3 實驗結果與分析
3.1 實驗環境及參數設置
3.2 定量分析


4 結束語