鄧俊文
(中國電子科技集團公司第三研究所,北京 100015)
現代戰爭中,無人機的廣泛運用極大地改變了戰爭形態。在戰場環境下,有效防御無人機,成為越來越緊迫的需求。雷達作為無人機探測的主要手段,具有探測距離遠、定位精度高、可對多個無人機目標持續跟蹤的優點。然而,低空慢速飛行的無人機雷達反射面積小,并且往往處于雷達探測盲區,對雷達有效探測形成極大挑戰。針對這個問題,研究一種基于計算機視覺的實時多無人機檢測與跟蹤算法,形成對雷達探測的有效補充,具有重大意義。
利用計算機視覺技術檢測并跟蹤低空環境下慢速飛行的多個小型無人機目標,是一項極具挑戰性的任務。其技術難點主要有:一是無人機型號種類多樣,外觀差異較大,特征描述困難;二是目標距離不同,相機焦距變化導致無人機的成像尺度差異大,多尺度目標檢測是目標檢測領域的難題;三是低空飛行的無人機背景復雜,比如天空、山坡、樹林、水面、農田、建筑以及庭院等,對目標檢測造成干擾;四是無人機靈活機動,難以對其飛行軌跡建模,對其進行穩定跟蹤比較困難。針對這些技術難點,本文結合YOLOv8 目標檢測算法和SORT[1]多目標跟蹤算法,能對低空環境下慢速飛行的多個小型無人機進行快速檢測和穩定跟蹤,對于及時發現并定位威脅目標、保障低空安全具有重要意義。
多無人機檢測的主要任務是確定單個或者多個無人機在圖像中的位置和長寬,屬于計算機視覺領域多目標檢測任務的一個應用實例。本文采用YOLOv8 目標檢測算法實現多無人機檢測。YOLOv8 算法是卷積神經網絡領域目前最先進算法之一,具有準確率高、檢測速度快的優點。只要提供充足的不同場景下不同型號、不同成像尺寸無人機的訓練樣本,YOLOv8 算法就能克服因無人機種類多樣、外觀差異大、背景復雜導致檢測困難的問題。此外,YOLOv8 是多尺度目標檢測算法,對尺度變化的無人機具有較高的檢測性能,對目標遠近不同、相機焦距變化的場景具有較強的適應性。值得一提的是,YOLOv8 算法運行速度快、檢測性能高,對靈活機動目標建模和生成穩定航跡具有積極作用。利用YOLOv8 算法實現多無人機檢測,主要包括數據準備、網絡訓練和網絡推理三個階段。
基于深度學習的目標檢測算法對訓練數據要求較高,訓練數據的質量極大地決定算法的檢測效果。本文收集了各種場景、各種型號、各種成像尺寸的無人機圖片三萬多張[2]。無人機的成像背景包括天空、山坡、樹林、水面、農田、建筑以及庭院等場景。無人機的型號涵蓋國內大疆公司精靈、御、曉系列旋翼無人機和國外Parrot 公司的Disco 固定翼無人機。各場景下不同型號的無人機如圖1 所示。

圖1 各種場景下不同型號的無人機圖像
收集到的圖像并不能直接用于YOLOv8 神經網絡訓練,還需對圖像中的無人機目標進行標注。數據標注是將無人機在圖片中所處位置和長寬用特定數據格式記錄下來,并保存到與圖片同名的文本文件中。這些標注的數據也叫標簽,隨后被用于神經網絡訓練。本文采用機器自動標注與人工校驗相結合的方式完成全體圖片數據的標注。對機器標注不準確的圖片,由人工對其重新標注。所有標注的圖像和對應標簽構成一個數據集。在訓練神經網絡之前還需要對數據集進行劃分。本文按照8 ∶1 ∶1的比例將無人機數據集劃分成訓練集、校驗集和測試集。訓練集用于訓練神經網絡參數,校驗集主要用于網絡超參數調整和訓練過擬合判別,測試集用于評估神經網絡的檢測能力。
網絡訓練是用訓練數據計算網絡框架中各卷積核參數的過程。本文采用YOLOv8 算法訓練無人機數據,網絡主體框架如圖2 所示。具體訓練過程如下。

圖2 YOLOv8 網絡架構圖
(1)首先用PyTorch 機器學習庫構建網絡框架,然后用YOLOv8 在COCO 數據集上的預訓練權重文件,初始化網絡參數。
(2)將訓練集中的所有圖像按原長寬比填充縮放到640×640 大小后輸入神經網絡運算。經過P1 至P5 模塊的卷積計算后,在P3,P4,P5 處分別輸出80×80,40×40 和20×20 三個尺度的特征圖。P5 和P4 尺度下的特征圖經過上采樣后分別與P4 和P3 尺度下的特征圖拼接,P3 和P4 尺度下的特征圖再分別與P4 和P5 尺度下的特征圖拼接。這便是特征金字塔網絡(Feature Pyramid Network,FPN)[3]和路徑聚合網絡(Path Aggregation Network,PAN)[4]神經網絡的設計思想,其好處是在細粒度檢測模塊中融入更多的全局輪廓特征,在粗粒度檢測模塊中融合更多的局部細節特征,用以提升檢測性能。神經網絡輸出三個尺度的檢測結果,分別對應圖像中的大、中、小三種目標。
(3)構造損失函數并利用檢測結果與訓練集標注的差異計算損失。根據損失,使用SGD[5]梯度下降算法調整網絡參數。
(4)反復重復過程(2)、過程(3),直到損失低于某個閾值并且保持平穩即停止訓練。保存訓練過程中最優的一組網絡參數,寫入權重文件。
網絡推理是在特定計算平臺上構建神經網絡并用訓練好的權重文件初始化網絡參數,執行前向推理獲取檢測結果的過程。其主要步驟如下。
(1)在NVIDIA Jetson Orin 硬件平臺上,利用NVIDIA JetPack SDK 構建軟件開發環境。
(2)構建并初始化YOLOv8 神經網絡。
(3)對待檢測圖像進行預處理,保持長寬比,縮放至640×640 大小,輸入神經網絡計算,得到檢測結果。對檢測結果進行后處理,將目標位置和長寬轉換到縮放前的圖片中去。
(4)使用非極大值抑制算法消除檢測結果中的冗余,得到最終檢測結果。
多無人機跟蹤的主要目的是關聯前后幀圖像中同一無人機目標,并為其分配航跡號。SORT 算法是當前多目標跟蹤領域最高效的算法之一,處理能力高達每秒260 幀。SORT 是一種檢測后跟蹤算法,其跟蹤性能極大依賴檢測質量,檢測結果的好壞對多目標跟蹤效果有著決定性的影響。本文利用YOLOv8 算法檢測每幀圖像中的無人機目標,SORT 算法利用檢測到的目標進行目標關聯和航跡生成,可以實時、穩定跟蹤多個無人機目標。只要檢測和跟蹤的時間間隔足夠短,目標在前后幀之間的運動可以近似為線性勻速運動,這極大地簡化了靈活機動目標的運動建模。SORT 多目標跟蹤算法包含航跡創建、航跡匹配以及航跡刪除三個核心步驟。
航跡創建是用檢測結果新建航跡并分配航跡號的過程,主要步驟如下。
(1)對第一幀圖像進行目標檢測,得到檢測結果。利用卡爾曼濾波對檢測結果進行預測,得到預測結果。
(2)獲取到第二張圖像的檢測結果后,將檢測結果逐一與前一幀圖像中的預測結果匹配。如果匹配上,則生成預備航跡,更新卡爾曼濾波器參數,利用卡爾曼濾波對預備航跡進行預測,得到預測航跡;如果匹配不上,該檢測結果被剩下。
(3)獲取到第三幀圖像的檢測結果后,將檢測結果逐一與前一幀的預備航跡匹配。如果匹配上,生成正式航跡,為其分配航跡號,更新卡爾曼濾波器參數;如果匹配不上,再與前一幀剩下的檢測結果匹配,如果匹配上,生成預備航跡,更新卡爾曼濾波器參數,反之,該檢測結果被剩下。如此反復。
航跡匹配是當前幀目標檢測結果與上一幀預測結果配對的過程。本文用檢測結果與預測結果邊框的交并比來衡量目標的相似度,用當前幀的所有檢測結果與上一幀所有預測結果計算目標邊框交并比,得到代價矩陣,用匈牙利算法從該代價矩陣中選擇出全局最優的匹配組合。將匹配組合中目標邊框交并比低于閾值的配對從組合中剔除,剩余的匹配就被認為是正確的匹配。
為了保證算法的正確、高效和低開銷,必須建立準則,及時刪除病態航跡。航跡刪除準則如下:
(1)正式航跡建立后,如果隨后連續三幀關聯不上目標,認為該航跡失效,從航跡列表中刪除;
(2)對于預備航跡,如果在下一幀關聯不上目標,認為該航跡是錯誤關聯,立即從預備航跡列表中刪除;
(3)對于上一幀剩下的檢測點,如果在當前幀未能配對,在下一幀不參與計算。
本文將YOLOv8 目標檢測算法和SORT 多目標跟蹤算法移植到NVIDIA Jetson Orin 硬件平臺上。實驗利用兩段視頻對算法性能進行測試,視頻1 包含一個無人機,視頻2 包含兩個無人機。圖3 是對單個無人機檢測與跟蹤的結果,圖4 是對兩個無人機同時檢測與跟蹤的結果。由圖可見,無論是單目標場景還是多目標場景,本文算法均能檢出、跟蹤場景中的無人機并穩定生成航跡。本文算法在NVIDIA Jetson Orin 硬件平臺上的處理能力在每秒30 幀以上,完全能滿足實時檢測與穩定跟蹤的需求。

圖3 單目標跟蹤結果

圖4 多目標跟蹤結果
本文針對低空環境下慢速飛行小型無人機檢測與跟蹤困難的問題,采用計算機視覺的技術路線,結合YOLOv8 目標檢測算法和SORT 多目標跟蹤算法,在NVIDIA Jetson Orin 硬件平臺上實現了對單個或者多個無人機的檢測與跟蹤。實驗表明,本文所提算法實時性好,跟蹤穩定,可以直接用于工程實踐。