靳曉芳,岳 鼎,劉金羽
(中國傳媒大學(xué), 北京 100024)
隨著武器裝備技術(shù)發(fā)展,無人機(jī)作戰(zhàn)在現(xiàn)代化戰(zhàn)爭中的效果日益凸顯,而偵察任務(wù)是無人機(jī)作戰(zhàn)的重要組成。然而,無人機(jī)飛控訓(xùn)練受到天氣、場(chǎng)地、設(shè)備等因素的制約,成本高、效率低,存在安全隱患,并且無人機(jī)傳輸視頻信號(hào)依賴Wi-Fi網(wǎng)絡(luò),目標(biāo)檢測(cè)畫面與真實(shí)畫面存在明顯傳輸時(shí)延,使得偵察訓(xùn)練限制較多且條件苛刻。虛擬訓(xùn)練系統(tǒng)具有很強(qiáng)的安全性、便捷性、實(shí)時(shí)性,和兼容性,可滿足無人機(jī)智能偵察訓(xùn)練需要[1]。
目前面向軍事的虛擬訓(xùn)練系統(tǒng)傾向于模擬場(chǎng)景,戰(zhàn)斗仿真,針對(duì)智能算法嵌入應(yīng)用的相關(guān)工作較少。同時(shí)無人機(jī)實(shí)現(xiàn)實(shí)時(shí)目標(biāo)檢測(cè)存在以下問題,一方面基于嵌入式設(shè)備的無人機(jī)視頻傳輸時(shí)延低,但是由于散熱、體積、計(jì)算能力等問題,目標(biāo)檢測(cè)速度最高僅達(dá)到8.81 fps[2],另一方面基于后端算法處理的無人機(jī)圖傳也有500 ms左右視頻傳輸時(shí)延[3]。本系統(tǒng)在虛擬場(chǎng)景中應(yīng)用目標(biāo)檢測(cè)算法,以消除傳輸時(shí)延,提升檢測(cè)速度。
YOLO(You Only Look Once)算法在2015年由Redmon[4]提出,是一種單階段目標(biāo)檢測(cè)框架。在此基礎(chǔ)上改進(jìn)主干網(wǎng)絡(luò)、更改訓(xùn)練方法、引入殘差結(jié)構(gòu)逐漸發(fā)展出YOLOv2[5]、YOLOv3[6]等YOLO系列檢測(cè)算法。2018年YOLOv3算法由Joseph等[7]提出,和之前YOLO系列算法相比一定程度上提升了檢測(cè)速度和檢測(cè)精度,但網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,模型體積龐大。YOLOv3-tiny在YOLOv3基礎(chǔ)上簡化了網(wǎng)絡(luò)結(jié)構(gòu),體積小,實(shí)時(shí)性高。
本文基于YOLOv3-tiny算法,通過Unity3D camera組件渲染改進(jìn)了圖像傳輸方式,采用Blender、Unity3D等軟件進(jìn)行無人機(jī)智能偵察虛擬訓(xùn)練系統(tǒng)研究。
無人機(jī)智能偵察虛擬訓(xùn)練系統(tǒng)主要應(yīng)用于現(xiàn)代化戰(zhàn)爭背景下,模擬無人機(jī)飛控,并對(duì)車輛、人員等目標(biāo)進(jìn)行目標(biāo)檢測(cè)的任務(wù)[8]。基于該任務(wù),虛擬訓(xùn)練系統(tǒng)的功能如圖1所示。
圖1 系統(tǒng)功能框圖
本系統(tǒng)根據(jù)無人機(jī)偵察作戰(zhàn)的需要將分為以下4個(gè)主要功能:靜態(tài)展示、飛控模擬、目標(biāo)檢測(cè),和結(jié)果展示。
靜態(tài)展示通過對(duì)無人機(jī)以及場(chǎng)景的三維建模,展示無人機(jī)的具體構(gòu)造以及作戰(zhàn)場(chǎng)景的具體環(huán)境,便于訓(xùn)練人員掌握無人機(jī)作戰(zhàn)基本情況,加深操作理解。
飛控模擬通過鍵位設(shè)計(jì),將四旋翼無人機(jī)的垂直、翻滾、俯仰、偏航等動(dòng)作囊括在8個(gè)按鍵中,用按鍵模擬無人機(jī)搖桿控制[9]。
目標(biāo)檢測(cè)是智能偵察系統(tǒng)的核心,通過控制虛擬場(chǎng)景中的無人機(jī)飛抵目的地采集圖像,經(jīng)Unity3D camera組件渲染圖像和YOLOv3-tiny算法處理完成對(duì)車輛、人員等物體的檢測(cè)[10]。
結(jié)果展示將實(shí)時(shí)畫面檢測(cè)出的物體添加上預(yù)測(cè)框、預(yù)測(cè)類別、置信度,同時(shí)在console控制臺(tái)中輸出算法時(shí)延。并且飛控模擬、目標(biāo)檢測(cè)、結(jié)果展示可同時(shí)進(jìn)行,便于偵察結(jié)果實(shí)時(shí)分析。
無人機(jī)智能偵察系統(tǒng)基于Unity3D、Blender軟件和OpenCV For Unity插件,完成了三維立體建模、動(dòng)畫制作、場(chǎng)景搭建、視頻流讀取、算法搭載,和生成發(fā)布軟件等步驟,系統(tǒng)研發(fā)流程圖如圖2所示。
圖2 系統(tǒng)研發(fā)流程圖
三維建模主要應(yīng)用Blender軟件。采用多邊形建模方法,通過對(duì)模型點(diǎn)、線、面的調(diào)節(jié),建造出初始的Low Ploy低面模型。再通過環(huán)線切割、矩形倒角、曲面建模等功能建造出High Ploy高面數(shù)模。
本系統(tǒng)應(yīng)用真實(shí)貼圖對(duì)模型進(jìn)行材質(zhì)編輯。貼圖經(jīng)過Photoshop處理后導(dǎo)入到Blender中,選擇智能UV投射,將二維貼圖覆蓋到三維模型上,再通過著色器調(diào)整模型顏色和光澤。
系統(tǒng)啟用GPU進(jìn)行模型渲染并且使用無偏路徑跟蹤器引擎Cycles,既可以減少渲染時(shí)間又可以得到真實(shí)的渲染效果,如圖3所示。
圖3 模型渲染圖
Blender支持多種模型格式輸出。將模型全部選中導(dǎo)出為fbx格式并且導(dǎo)入到Unity3D軟件的項(xiàng)目文件夾,后續(xù)進(jìn)行場(chǎng)景搭建時(shí),可直接調(diào)出模型到場(chǎng)景中。
在Blender軟件中物體建模和動(dòng)畫制作可以同時(shí)進(jìn)行。本系統(tǒng)運(yùn)行時(shí)主要播放無人機(jī)動(dòng)畫,分為無人機(jī)飛控動(dòng)畫和旋翼動(dòng)畫兩部分。
飛控動(dòng)畫包含了無人機(jī)進(jìn)行懸停、俯仰、偏航、滾動(dòng)時(shí)的動(dòng)畫。在時(shí)間軸面板上給每個(gè)動(dòng)作都打上相應(yīng)的關(guān)鍵幀,每隔數(shù)幀就調(diào)整模型的運(yùn)動(dòng)軌跡,Blender可以自動(dòng)把關(guān)鍵幀補(bǔ)齊,方便動(dòng)畫的制作。動(dòng)畫播放時(shí),Unity3D對(duì)鍵盤進(jìn)行按鍵檢測(cè),判斷無人機(jī)的飛行狀態(tài)并播放相應(yīng)的飛控動(dòng)畫,該步驟由動(dòng)畫狀態(tài)機(jī)來決定,如圖4所示。
圖4 動(dòng)畫狀態(tài)機(jī)面板
旋翼動(dòng)畫模擬真實(shí)物理效果,處于懸停狀態(tài)時(shí)旋翼轉(zhuǎn)速慢,處于加速度狀態(tài)時(shí),旋翼轉(zhuǎn)速快。通過掛載C#腳本完成設(shè)定。
系統(tǒng)以城市街道為主題環(huán)境,使用三維建模和材質(zhì)貼圖來搭建城市場(chǎng)景,主要分為對(duì)城市道路的模擬和街道房屋的搭建。
城市道路的模擬采用平面拼接的方式。在Unity3D中新建平面,將制作好的道路貼圖附在平面上,將平面復(fù)制全選,頂點(diǎn)對(duì)齊后,達(dá)到道路鋪設(shè)的效果。
搭建街道房屋混合使用了3D建模和2D貼圖技術(shù)。近處的房屋從項(xiàng)目文件夾中導(dǎo)出預(yù)制模型,并按照頂點(diǎn)吸附在道路兩側(cè),遠(yuǎn)處的房屋則使用平面貼圖填補(bǔ)上天際線的空白[11]。最后添加車輛和人員模型,完成城市場(chǎng)景搭建。如此,不僅達(dá)到了模擬城市街道的效果,還減輕了場(chǎng)景渲染的負(fù)荷。
為更好地觀察無人機(jī)飛行姿態(tài)和實(shí)時(shí)位置,在虛擬訓(xùn)練系統(tǒng)中采用第三人稱視角攝像頭。訓(xùn)練時(shí),控制虛擬場(chǎng)景中的無人機(jī)飛行采集實(shí)時(shí)畫面,通過Unity3D的camera組件將虛擬場(chǎng)景中采集的畫面實(shí)時(shí)渲染為RenderTexture圖像格式[12]。
其中所拍攝的圖像需要經(jīng)過多次格式轉(zhuǎn)換才能在Unity3D界面和OpenCV函數(shù)中傳遞。Camera組件所拍攝畫面是RenderTexture格式需要先轉(zhuǎn)換為Texture2D格式,方可通過OpenCV For Unity插件的內(nèi)置函數(shù)轉(zhuǎn)換為Mat格式,使用Mat格式進(jìn)行矩陣運(yùn)算、圖像處理后,再逆變換為Texture2D格式返回Unity3D屏幕。
系統(tǒng)對(duì)車輛、人員等物體進(jìn)行實(shí)時(shí)畫面檢測(cè),對(duì)算法速度要求較高,因此選擇YOLOv3-tiny目標(biāo)檢測(cè)算法。YOLOv3-tiny是YOLOv3的輕量化版本,在后者基礎(chǔ)上去掉了一些特征層,并且在輸出結(jié)果上只保留了2個(gè)預(yù)測(cè)分支,網(wǎng)絡(luò)復(fù)雜度更低,目標(biāo)檢測(cè)速度更快[13]。
YOLOv3-tiny網(wǎng)絡(luò)一共有23層,分為卷積層、池化層、采樣層、路由層、輸出層5種網(wǎng)絡(luò)層。利用卷積層對(duì)檢測(cè)目標(biāo)進(jìn)行特征提取,在每個(gè)卷積層后連接池化層,最終提取出26*26和13*13兩種分辨率特征圖,前者對(duì)較小目標(biāo)進(jìn)行特征提取,后者對(duì)較大目標(biāo)特征提取,減少了目標(biāo)漏檢,達(dá)到理想的檢測(cè)效果[14],其網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。
圖5 YOLOv3-tiny網(wǎng)絡(luò)結(jié)構(gòu)圖
在Unity3D中搭載已經(jīng)訓(xùn)練好的YOLOv3-tiny模型,需要YOLOv3-tiny.weight模型權(quán)重文件、YOLOv3-tiny.cfg模型網(wǎng)絡(luò)配置文件、.names數(shù)據(jù)集類別文件這3種文件。通過修改模型網(wǎng)絡(luò)配置文件可以替換不同的目標(biāo)檢測(cè)算法,同時(shí)可以訓(xùn)練本地?cái)?shù)據(jù)集并更改模型權(quán)重文件和數(shù)據(jù)集類別文件對(duì)指定類別進(jìn)行目標(biāo)檢測(cè)。在C#腳本中設(shè)置好實(shí)時(shí)傳輸畫面的攝像機(jī)(Main Camera),以及算法處理后的渲染目標(biāo)(Raw Image),便可以將視頻流畫面上傳,經(jīng)過圖像處理后將目標(biāo)檢測(cè)結(jié)果返回到Unity3D屏幕中。
(1)
(2)
無人機(jī)實(shí)時(shí)目標(biāo)檢測(cè)時(shí),將每幀圖像對(duì)車輛和人員的檢測(cè)置信度輸出繪制成圖6的置信度折線圖。在無人機(jī)飛行過程中,算法實(shí)時(shí)目標(biāo)檢測(cè)置信度保持在80%以上。在console控制臺(tái)中返回算法檢測(cè)速率,并繪制為檢測(cè)速率折線圖,如圖7所示。算法實(shí)時(shí)檢測(cè)速率穩(wěn)定在25 fps。
圖6 置信度折線圖
圖7 檢測(cè)速率折線圖
本系統(tǒng)涉及大量三維模型和腳本文件,為保證系統(tǒng)運(yùn)行流暢,將系統(tǒng)場(chǎng)景和依賴文件打包導(dǎo)出成可執(zhí)行文件(.exe格式)[17]。無人機(jī)進(jìn)行智能偵察虛擬訓(xùn)練時(shí),點(diǎn)擊快捷圖標(biāo)便可直接進(jìn)入系統(tǒng)。
為驗(yàn)證本虛擬訓(xùn)練系統(tǒng)是否滿足無人機(jī)智能偵察訓(xùn)練要求,我們邀請(qǐng)了選修過無人機(jī)課程的25名測(cè)試者對(duì)本系統(tǒng)的各個(gè)功能進(jìn)行測(cè)試,主要的測(cè)試指標(biāo)為畫面流暢性、飛控仿真性、檢測(cè)準(zhǔn)確性,分為良好、一般、較差3個(gè)等級(jí)[18-19]。
本文中實(shí)驗(yàn)均在Windows 10操作系統(tǒng)的PC機(jī)上進(jìn)行,Unity3D版本為2020.3.31。
進(jìn)行虛擬訓(xùn)練測(cè)試時(shí),需要在系統(tǒng)中控制無人機(jī)飛抵指定作戰(zhàn)區(qū)域,對(duì)camera組件渲染的圖像進(jìn)行目標(biāo)檢測(cè)來完成智能偵察任務(wù)。
在虛擬場(chǎng)景中,通過鍵盤按鍵模擬無人機(jī)飛控。通過俯仰實(shí)現(xiàn)前進(jìn)后退、滾動(dòng)實(shí)現(xiàn)左右移動(dòng)、偏航實(shí)現(xiàn)左轉(zhuǎn)右轉(zhuǎn),如圖8所示。
圖8 無人機(jī)模型飛控模擬
對(duì)畫面內(nèi)容進(jìn)行目標(biāo)檢測(cè)時(shí),通過調(diào)整置信度閾值和NMS閾值可以控制錨框的數(shù)量,過濾掉置信度小的檢測(cè)結(jié)果,避免冗余,具體目標(biāo)檢測(cè)結(jié)果如圖9所示。
圖9 目標(biāo)檢測(cè)結(jié)果圖
完成虛擬訓(xùn)練測(cè)試后,與測(cè)試者交流感受并統(tǒng)計(jì)出測(cè)試結(jié)果,如表1所示。
表1 系統(tǒng)測(cè)試結(jié)果
實(shí)驗(yàn)表明無人機(jī)智能偵察虛擬訓(xùn)練系統(tǒng)能夠流暢地完成無人機(jī)飛行控制模擬和對(duì)目標(biāo)的實(shí)時(shí)檢測(cè)。客觀算法上,由3.5算法搭載結(jié)果,目標(biāo)檢測(cè)置信度達(dá)80%,檢測(cè)速度達(dá)25 fps。主觀評(píng)價(jià)上,畫面流暢性評(píng)價(jià)良好比例達(dá)88%,說明檢測(cè)速度滿足了人眼感知幀率,畫面在測(cè)試者眼中無明顯卡頓;飛控仿真性評(píng)價(jià)良好比例達(dá)92%,絕大部分測(cè)試者認(rèn)為按鍵模擬的無人機(jī)飛控能達(dá)到仿真效果;檢測(cè)準(zhǔn)確性評(píng)價(jià)良好比例為96%,表明偵察訓(xùn)練時(shí)對(duì)車輛和人員的目標(biāo)檢測(cè)結(jié)果基本正確。證明了本文提出在虛擬場(chǎng)景中應(yīng)用目標(biāo)檢測(cè)算法是有效的,滿足了飛控模擬和算法檢測(cè)訓(xùn)練。測(cè)試者也提出系統(tǒng)在長時(shí)間運(yùn)行后,畫面會(huì)有少許遲鈍感,后續(xù)需要對(duì)圖像傳輸做進(jìn)一步優(yōu)化。
1) 提出了基于Unity3D平臺(tái)與YOLOv3-tiny檢測(cè)算法的無人機(jī)智能偵察虛擬訓(xùn)練系統(tǒng),在模擬無人機(jī)飛控的基礎(chǔ)上,對(duì)車輛和人員進(jìn)行實(shí)時(shí)目標(biāo)檢測(cè),有效降低了訓(xùn)練成本、提高了訓(xùn)練效率、避免了訓(xùn)練風(fēng)險(xiǎn)。
2) 用Unity3D camera組件渲染代替無人機(jī)攝像頭進(jìn)行數(shù)據(jù)傳輸,視頻流數(shù)據(jù)在本機(jī)進(jìn)行采集和處理,消除了圖像傳輸時(shí)延。
3) 在虛擬訓(xùn)練系統(tǒng)上搭載YOLOv3-tiny目標(biāo)檢測(cè)算法后,系統(tǒng)測(cè)試實(shí)驗(yàn)表面,在模擬飛控條件下,算法也保持著較高檢測(cè)速度和置信度,評(píng)價(jià)指標(biāo)良好,達(dá)到了預(yù)期訓(xùn)練效果,為其他虛擬系統(tǒng)設(shè)計(jì)以及算法應(yīng)用提供了參考。