張繼
(四川大學計算機學院,成都610065)
隨著技術的發(fā)展,無人機在軍民兩大領域逐漸得到廣泛運用。近幾年的閱兵式上,軍用無人機愈發(fā)嶄露頭角,翼龍、暗劍、彩虹等無人機在情報偵察、軍事打擊、信息對抗、通信中繼和后勤保障等領域發(fā)揮了重大作用;民用無人機最具代表性的當屬大疆出品的系列無人機,其在農(nóng)業(yè)、基建、電力巡檢、攝影和公共安全等領域發(fā)揮了重大作用[1]。
在城市中低空飛行的無人機,常常面臨著與起降的民航飛機、行人、汽車、交通燈、飛鳥等發(fā)生相互碰撞的嚴峻挑戰(zhàn),這不僅會對無人機自身造成損傷,更有可能影響造成危機飛行安全、傷及重要建筑設施、碰撞車輛、傷害行人等嚴重事故。所以,無人機對低空飛行障礙物的實時檢測跟蹤就顯得十分緊要和迫切。目前,無人機飛行障礙常用的檢測手段有超聲波回聲定位(Ultrasonic Echo Location)、激光掃描定位(Laser Scan Location)、雷達搜索定位(Radar Search Location)和視覺圖像檢測(Visual Image Detection)[2-3],但是障礙物的多樣性、復雜性決定了它們中的任何一種方法都各有利弊,難以單獨完成障礙物檢測跟蹤的任務,只有針對具體實用場景進行有機組合,才能達到較好的應用效果。為了更好地適應低空飛行無人機所處的復雜應用場景,本文擬從視覺圖像檢測(Visual Image Detection)的角度,將高準確率的YOLO目標檢測與高運行效率的KCF目標跟蹤相結(jié)合,對無人機飛行障礙的精準識別與實時跟蹤(Precise Recognition and Real-time Tracking)進行深入研究。
目標檢測的任務是找出視頻圖像中所有關注的目標障礙(物體),確定它們的位置和大小,這是現(xiàn)代機器視覺領域的核心問題之一。由于各類物體有不同的外觀、形狀、姿態(tài),加上成像時光照、遮擋等因素的干擾,目標檢測一直是機器視覺領域最具有挑戰(zhàn)性的問題。隨著計算機視覺技術的發(fā)展與進步,利用無人機搭載視頻傳感器進行目標檢測和跟蹤已廣泛應用在地形勘測、交通監(jiān)控、抗災救援以及軍事偵查等領域。因而,對無人機所獲取的視頻目標進行障礙精準識別與實時跟蹤是其中重要環(huán)節(jié)。
目標檢測算法主要有兩大類:one-stage目標檢測和two-stage目標檢測。one-stage目標檢測以SSD和YOLO為代表,它們使用一個卷積神經(jīng)網(wǎng)絡直接預測出目標的類別與位置;two-stage目標檢測以R-CNN為代表,分為兩步:首先產(chǎn)生大量的Proposal Bounding Boxes;然后通過卷積神經(jīng)網(wǎng)絡篩選出包含目標概率最高的Bounding Box,并判斷出目標類別。
YOLO(You Only Look Once)代表了一系列優(yōu)秀的目標檢測模型,從YOLOv1[4]、YOLOv2[5]、YOLOv3[6],如今進化到Y(jié)OLOv4[7]、YOLOv5,它們都是基于深度神經(jīng)網(wǎng)絡的目標檢測模型:以整張圖像作為輸入,通過卷積神經(jīng)網(wǎng)絡的非線性處理,最終輸出圖像中目標的類別和其在圖像中的位置(矩形包圍框Bounding Box)。YOLOv4在檢測精度、運行效率、訓練難易程度等方面均有較優(yōu)秀的表現(xiàn)。相比YOLOv3,YOLOv4在檢測精度和運行效率上分別提升了10%和12%,并且與YOLOv5性能相當。YOLOv4支持單GPU訓練,這讓我們能夠比較容易的添加自己的訓練數(shù)據(jù),從而擴展YOLOv4的檢測能力。YOLOv4的模型結(jié)構(gòu)(如圖1)由以下幾部分構(gòu)成:CSPDarknet53作為backbone骨干網(wǎng)絡、SPP作為Neck的附加模塊、PANet作為Neck頸部網(wǎng)絡的特征融合模塊,以及使用YOLOv3作為head頭部網(wǎng)絡。

圖1 YOLOv4網(wǎng)絡結(jié)構(gòu)
常用的YOLOv4模型如表1所示,它們有著不同的準確度MAP(Mean Average Precision)和檢測速度FPS(Frames Per Second)。大體而言,準確度越高,則檢測速度相對越慢。綜合考慮準確度和檢測速度的影響,我們選擇YOLOv4-416作為本文的目標檢測模型,它使用COCO(Common Objects in Context)[8]作為訓練數(shù)據(jù)集,具備飛機、行人、汽車、交通燈、鳥類等80個類別障礙物的檢測識別能力(如圖2)。

圖2 YOLOv4飛行障礙檢測效果

表1 常用YOLOv4模型
目標跟蹤的任務是找出被關注目標在每幀視頻圖像中的位置。它與目標檢測有著相似的功能:尋找目標位置,但“跟蹤”二字對它的運行速度提出了較高的要求。與目標檢測相比,目標跟蹤運行速度大大加快、目標位置定位精度存在一定偏差,可以理解為犧牲少量定位精度以換取成倍的運行速度。
目標跟蹤算法主要分為判別式(discriminative model)和生成式(generative model)。生成式方法采用特征模型描述目標的外觀特征,再最小化跟蹤目標與候選目標之間的誤差來確認目標,例如LK光流法;判別式方法將目標跟蹤視為二元分類問題,通過訓練關于跟蹤目標的分類器來從候選目標中找出正確的目標,例如CSK、KCF算法。此外,根據(jù)跟蹤目標的數(shù)量還可以將目標跟蹤算法分為單目標跟蹤與多目標跟蹤。相比單目標跟蹤而言,多目標跟蹤問題更加復雜和困難。多目標跟蹤需要考慮視頻圖像幀中多個獨立目標的不同類別、位置、大小、外觀、運動方向、動態(tài)光照、相互遮擋等因素,這些因素是目標跟蹤領域研究的難點。
KCF[9]即Kernel Correlation Filter(核相關濾波),它是一種判別式(discriminative model)的目標跟蹤方法。通過物體在當前幀的位置,迅速地預測物體在下一幀的位置,其運行速度可達到150fps。KCF的運行速度得益于循環(huán)矩陣和相關濾波這兩個特點。
進行平移,以產(chǎn)生更多的樣本用于訓練[10]。同時這種平移可以通過循環(huán)矩陣來表示,循環(huán)矩陣可以對角化,計算時僅需關注對角線上的非零元素,因此能夠大幅加快矩陣與矩陣的計算速度。
相關是衡量兩個信號相似值的度量,相關值越高,表示這兩個信號越相似[11]。KCF的輸入往往是通過其他檢測手段得到的物體在某一幀圖像上的準確位置(例如YOLOv4檢測得到的bbox),該準確位置記為patch_0。在后續(xù)的圖像幀上,有patch_1~patch_n共計n個patch,那么KCF預測的位置即為與patch_0相關值最高的patch。

在計算patch_0與patch_k(1≤k≤n)的相關值時,轉(zhuǎn)換到了傅里葉域進行。因為兩個patch的相關卷積相當于傅里葉域中的元素乘積(時域卷積=頻域點積),而乘積計算大大快于卷積運算。
大疆無人機(御Mavic Air等型號)具有智能跟隨功能,支持對行進車輛的識別跟隨能力,無人機可以在頂部俯拍、車尾/側(cè)面跟拍行進中的車輛。在頂部俯拍時,無人機的飛行高度保證了不會與被跟隨車輛相撞。在車尾/側(cè)面跟拍時,由于速度不同步,很有可能出現(xiàn)無人機加速接近汽車的情況。這種情況下,被跟隨車輛就屬于無人機飛行路線中有碰撞風險的障礙物,無人機需要識別、跟蹤并規(guī)避車輛。本文以大疆無人機使用智能隨車拍功能時,追隨汽車錄制的一段視頻作為數(shù)據(jù)研究對象。該視頻時長54s,1080p(1920×1080),幀率30fps,共計54×30=1620幀。
KCF算法將圖像沿著上下、左右(如圖3)的方向

圖3 左右平移
我們以YOLOv4目標檢測的矩形包圍框bbox(Bounding Box)作為KCF跟蹤算法的初始輸入,并在隨后所有視頻幀使用KCF目標跟蹤來找出物體在每幀圖像中的位置。初始輸入時無人機在汽車的正后方,YOLOv4準確地找到了汽車的位置(如圖4,紅色矩形框完整包圍了汽車)。隨著時間的推移,無人機飛到了汽車的右側(cè)面,視角相對初始位置發(fā)生較大變化,我們發(fā)現(xiàn)KCF逐漸無法跟蹤到正確的目標(如圖5,紅色矩形框僅能包圍汽車的小部分車尾)。

圖4 準確檢測

圖5 跟蹤丟失
跟蹤丟失的原因在于視角相對初始位置發(fā)生較大變化,KCF算法“記憶中的車尾”在側(cè)飛時并未出現(xiàn)在圖像中。為了矯正這種跟蹤錯誤,每隔一定的幀數(shù),使用YOLOv4目標檢測模型重新獲得準確的車輛位置bbox,并更新KCF跟蹤算法的輸入,使KCF算法“記憶猶新”。
YOLOv4目標檢測有更高的準確率,但是檢測耗時較長;KCF目標跟蹤有更快的運行速度,但是容易出現(xiàn)跟蹤目標丟失的情況。因此,考慮將YOLOv4目標檢測與KCF目標跟蹤結(jié)合使用,從而兼顧檢測準確率與實時性。
本節(jié)以YOLOv4檢測間隔為0(所有圖像幀均使用YOLOv4目標檢測)時得到的目標位置bbox(Bounding Box)和運行時間(Elapse Time)作為基線,將YOLOv4檢測間隔為1~100(中間圖像幀使用KCF目標跟蹤)作為優(yōu)化對照,研究不同YOLOv4檢測間隔時的準確率和運行效率情況。基準與優(yōu)化的檢測間隔如圖6所示。

圖6 基準與優(yōu)化
所有1620幀圖像均使用YOLOv4目標檢測,然后輸出bbox,并輸出該段視頻總共的檢測時間,作為優(yōu)化對照的基準。部分結(jié)果如表2所示。

表2 基線檢測結(jié)果
其中,(x1_b,y1_b)表示benchmark bbox的左上角點,width_b和height_b分別表示benchmark bbox的寬和高。elapseTime_b為采用基準方法對整段視頻進行跟蹤檢測的總耗時,76.831s,可計算得到基準方法的幀率為1620/76.831=21.08fps。
由于實驗條件限制,使用了臺式機對無人機拍攝的視頻進行處理,測試機配置如表3所示。

表3 測試機配置
對汽車視頻每間隔interval幀抽取一幀進行YOLOv4目標檢測,其余幀使用KCF輸出bbox位置坐標和運行時間。interval為1時的檢測跟蹤結(jié)果如表4所示。

表4 interval為1時的檢測跟蹤結(jié)果
其中,(x1_r,y1_r)表示real bbox的左上角點,width_r和height_r分別表示real bbox的寬和高。elapseTime_r為采用間隔為1的優(yōu)化方法對整段視頻進行跟蹤檢測的總耗時,46.145s,可計算得到檢測間隔為1時的幀率為1620/46.145=35.10fps。間隔為1時相對基準方法速度提升speed_x=76.831/46.145=1.66倍。
(1)位置偏差
位置偏差采用交并比IOU(Intersection Over Union)進行評價,顧名思義,IOU為兩個集合的交集與并集之比(如圖7),即:

圖7 單幀圖像的IOU計算
IOU=(A∩B)(A∪B)
IOU在相同圖像幀之間進行計算,使用基準方法得到benchmark bbox,使用優(yōu)化方法得到real bbox,則該幀圖像的IOU為:

計算所有1620幀圖像的IOU,最后得到該段視頻的平均IOU。
(2)速度提升
對不同的檢測間隔,統(tǒng)計該視頻所有1620幀圖像的總共檢測跟蹤用時elapseTime_r。然后速度提升倍數(shù)為基準總用時與優(yōu)化方法總用時之比,即:

在實驗中,我們將interval值依次設置為1~100,并統(tǒng)計不同檢測間隔的位置偏差和速度提升效果,數(shù)據(jù)整理后使用MATLAB繪制如圖8所示。

圖8 不同Interval的位置偏差和速度提升
可以看到,檢測間隔越大,IOU越小(綠色曲線),表明位置偏差越大;速度提升效果(紅色曲線)在檢測間隔小于30時非常明顯,隨后逐漸趨于平緩。綜合考慮檢測位置準確性和運行效率,選擇20作為最優(yōu)檢測間隔,該間隔下的平均IOU、速度提升效果、總用時、幀率如表5所示。

表5 最優(yōu)檢測間隔的各項參數(shù)
觀察檢測跟蹤結(jié)果,跟蹤丟失的情況得到了很好的矯正。無人機飛行姿態(tài)任意變化,YOLOv4與KCF均能夠準確地找到汽車的位置(如圖10,紅色矩形框完整包圍了汽車)。

圖9 跟蹤丟失

圖10 跟蹤矯正
本文使用原生YOLOv4進行飛行障礙檢測,原生YOLOv4模型基于COCO數(shù)據(jù)集訓練得到,擁有飛機、行人、汽車、交通燈、鳥類等80個類別障礙物的檢測識別能力。YOLOv4模型支持單GPU訓練,使用單張1080 Ti或2080 Ti GPU即可訓練得到檢測準確率高、實時性好的目標檢測模型。這讓我們能夠比較容易地添加自己的訓練數(shù)據(jù),從而針對專用場景擴展YOLOv4的檢測能力。在驅(qū)鳥無人機上,將機場附近經(jīng)常出沒的鳥類圖片加入YOLOv4模型訓練集,使其獲得/提升特定鳥類的檢測能力;在農(nóng)業(yè)植保無人機上,將高大樹木的圖片加入YOLOv4模型訓練集,使其獲得識別樹木并避開的能力[12-13];在航拍無人機上,將高樓大廈頂部的圖片加入YOLOv4模型訓練集,使其能夠檢測出屋頂并避免碰撞。
綜上所述,我們以無人機低空作業(yè)場景中常見的典型障礙物作為研究對象,使用YOLOv4目標檢測(Object Detection)模型進行飛行障礙的精準識別(Precise Recognition),并結(jié)合KCF目標跟蹤(Object Tracking)算法提升實時性,同時達到精準識別與實時跟蹤(Precise Recognition and Real-time Tracking)兼顧的雙重目的。我們測試了不同檢測間隔(interval)對準確率與運行速率的影響,找出了精準檢測與快速跟蹤之間的最優(yōu)平衡點。
本文的研究成果主要體現(xiàn)在:
(1)采用YOLO家族新銳的YOLOv4目標檢測模型進行飛行障礙物的精準識別(Precise Recognition),保證了障礙物檢測的準確性;
(2)使用KCF目標跟蹤算法提升運行實時性,并分析出KCF目標跟蹤丟失的原因及解決方案;
(3)我們找出了最佳檢測間隔:在1080p(1920×1080)視頻中,每隔20幀使用一次YOLOv4目標檢測,其余幀使用KCF目標跟蹤。能夠在保證85%準確率的同時,提升4.2倍的運行速度,使運行幀率達到88.68fps;
(4)檢測能力擴展研究結(jié)果:將自定義類別數(shù)據(jù)(如房屋、樹木)加入YOLOv4訓練數(shù)據(jù)集,使用單張GPU(1080 Ti或2080 Ti)即可重新訓練YOLOv4目標檢測模型,可使無人機獲得其他類別障礙物的檢測避讓能力。
本文采用當前目標檢測領域中準確度和實時性均有較好表現(xiàn)的YOLOv4模型,搭配高效的KCF目標跟蹤算法,探索了無人機飛行障礙的精準識別與實時跟蹤。我們發(fā)現(xiàn),隨著時間推移、障礙物的移動、無人機飛行姿態(tài)發(fā)生變化等,KCF目標跟蹤算法得到的矩形包圍框會逐漸偏離原有障礙物,導致障礙物跟蹤丟失。為此,我們采用YOLOv4模型重新檢測飛行障礙物的具體位置,并更新KCF算法的輸入,能夠幫助KCF繼續(xù)準確地跟蹤上目標障礙物。我們將YOLOv4檢測間隔為0(所有1620幀圖像均使用YOLOv4目標檢測)作為基線,將YOLOv4檢測間隔為1~100(中間圖像幀使用KCF目標跟蹤)作為優(yōu)化對照,以找出飛行障礙物檢測跟蹤準確率與運行效率的最佳平衡點。經(jīng)過實驗對比發(fā)現(xiàn),檢測間隔interval為20時,相對于基線擁有85.73%的檢測準確率,運行效率提升4.20577倍,檢測幀率達到88.68fps。這表明,基于YOLOv4與KCF的無人機飛行障礙物精準識別與實時跟蹤研究具有較強的理論探索意義和工程應用價值。