蘇佳媛
關(guān)鍵詞:深度學(xué)習(xí)技術(shù);智能化無(wú)人機(jī);視覺(jué)系統(tǒng)設(shè)計(jì)
1 相關(guān)概念概述
1.1 深度學(xué)習(xí)技術(shù)
深度學(xué)習(xí)技術(shù)的全稱(chēng)是Deep Learning,在19 世紀(jì)90 年代末逐漸成為了人工智能的熱門(mén)研究領(lǐng)域,它是機(jī)器學(xué)習(xí)中的重要組成部分,主要是通過(guò)神經(jīng)網(wǎng)絡(luò)來(lái)形成一個(gè)較為完善的機(jī)器學(xué)習(xí)模式,結(jié)合底層組合特性來(lái)實(shí)現(xiàn)更高的屬性類(lèi)別表示,這樣一來(lái)所產(chǎn)生的數(shù)據(jù)信息就會(huì)以分布式特點(diǎn)的形式體現(xiàn)出來(lái)[1]。在深度學(xué)習(xí)之中最為關(guān)鍵的模型結(jié)構(gòu)便是神經(jīng)網(wǎng)絡(luò),由此能夠看出深度學(xué)習(xí)的本質(zhì)在于堆疊一個(gè)又一個(gè)神經(jīng)網(wǎng)絡(luò),讓神經(jīng)網(wǎng)絡(luò)輸入至輸出最長(zhǎng)路徑長(zhǎng)度得以提升,進(jìn)而構(gòu)建一個(gè)完善的函數(shù)關(guān)系。深度學(xué)習(xí)技術(shù)能夠自動(dòng)學(xué)習(xí)要建模數(shù)據(jù)的潛在分布的多層表達(dá),其核心技術(shù)是監(jiān)督和非監(jiān)督學(xué)習(xí)算法,通過(guò)這種監(jiān)督和非監(jiān)督學(xué)習(xí)算法自動(dòng)地學(xué)習(xí)到不同數(shù)據(jù)的多種特征,更好地表達(dá)數(shù)據(jù)。
1.2 智能化無(wú)人機(jī)視覺(jué)系統(tǒng)
智能化無(wú)人機(jī)視覺(jué)系統(tǒng)主要是指在該系統(tǒng)之中能夠?qū)崿F(xiàn)自主飛行目的,充分?jǐn)[脫相關(guān)技術(shù)人員的控制,體現(xiàn)出“無(wú)人”這一基本特征。同時(shí)智能化無(wú)人機(jī)視覺(jué)系統(tǒng)并不單單意味著對(duì)自身進(jìn)行智能化處理,在物聯(lián)網(wǎng)之中同樣能夠產(chǎn)生至關(guān)重要的作用,為相關(guān)通信提供傳播媒介方面的支持。智能化無(wú)人機(jī)視覺(jué)系統(tǒng)主要是以深度學(xué)習(xí)為技術(shù)基礎(chǔ),包含了上位機(jī)以及無(wú)人機(jī)飛行器這兩個(gè)部分,具體如圖1 所示。
在無(wú)人機(jī)飛行器之中,主要包含了軟件以及硬件,其中硬件是由機(jī)載運(yùn)動(dòng)相機(jī)以及無(wú)人機(jī)飛行器這兩個(gè)模塊,無(wú)人機(jī)通過(guò)數(shù)傳電臺(tái)來(lái)和地面站就所采集的數(shù)據(jù)信息進(jìn)行交流與共享,而機(jī)載運(yùn)動(dòng)相機(jī)則通過(guò)自身所具備的無(wú)線(xiàn)傳導(dǎo)功能來(lái)和地面站建立聯(lián)系[2]。為了有效避免緊急情況產(chǎn)生而引發(fā)的無(wú)人機(jī)失控現(xiàn)象,技術(shù)人員會(huì)在智能化無(wú)人機(jī)之中添加一個(gè)遙控接收機(jī)這一裝備,以此來(lái)讓地面站能夠通過(guò)遙控器的使用來(lái)實(shí)現(xiàn)對(duì)無(wú)人機(jī)的接管。在無(wú)人機(jī)云臺(tái)之中會(huì)掛載一個(gè)具備較強(qiáng)專(zhuān)業(yè)性能的運(yùn)動(dòng)相機(jī),無(wú)人機(jī)飛行控制模塊能夠利用云臺(tái)所提供的功能來(lái)對(duì)相機(jī)的實(shí)際拍攝角度以及拍攝姿勢(shì)進(jìn)行合理地調(diào)整。而在無(wú)人機(jī)飛行器中,主要是采取了RT-Thread 這一實(shí)時(shí)操作系統(tǒng)軟件,并且以此為基礎(chǔ)將原有的神經(jīng)網(wǎng)絡(luò)庫(kù)以及機(jī)器視覺(jué)庫(kù)相關(guān)數(shù)據(jù)信息進(jìn)行了移植,以此來(lái)完成視覺(jué)應(yīng)用平臺(tái)的搭建,能夠給后續(xù)視覺(jué)應(yīng)用開(kāi)發(fā)奠定堅(jiān)實(shí)的理論基礎(chǔ)。
在智能化無(wú)人機(jī)視覺(jué)系統(tǒng)之中,主要是將平板設(shè)備當(dāng)做上位機(jī),可以有效操作無(wú)人機(jī)以及機(jī)載運(yùn)動(dòng)相機(jī),并且具備目標(biāo)檢測(cè)以及圖像處理這方面的功能。上位機(jī)主要是通過(guò)數(shù)傳電臺(tái)來(lái)和無(wú)人機(jī)進(jìn)行通信,所遵循的通信協(xié)議為MAVLink 協(xié)議。上位機(jī)的地面站軟件能夠?qū)ο嗬^的拍攝進(jìn)行全方位地控制,接受相機(jī)所拍攝的圖像并對(duì)其進(jìn)行處理。
2 基于深度學(xué)習(xí)技術(shù)智能化無(wú)人機(jī)視覺(jué)系統(tǒng)設(shè)計(jì)思路
2.1 搭建無(wú)人機(jī)硬件平臺(tái)
本次研究主要采取了開(kāi)源Pix Hawk 飛控拼裝制作而成的無(wú)人機(jī),主要包括了機(jī)載運(yùn)動(dòng)相機(jī)以及四旋翼無(wú)人機(jī),其中四旋翼無(wú)人機(jī)主要是將Pix Hawk 作為核心,通過(guò)STM32F103 以及STM32F247 為協(xié)助控制器以及主要控制器,其具體參數(shù)如表1所示。
相機(jī)主要是在掛載于四旋翼無(wú)人機(jī)云臺(tái)下方,該搭建無(wú)人機(jī)硬件云臺(tái)能夠適當(dāng)調(diào)整翻滾角度,進(jìn)而直接在地面總站臺(tái)對(duì)相機(jī)進(jìn)行有效地控制,其主要參數(shù)如表2 所示。
2.2 構(gòu)建無(wú)人機(jī)實(shí)時(shí)操作系統(tǒng)
在智能化無(wú)人機(jī)之中,所采取的實(shí)時(shí)操作系統(tǒng)主要是RTThread系統(tǒng)(Real-Time Thread),屬于嵌入式實(shí)時(shí)多線(xiàn)程操作系統(tǒng)的范疇。構(gòu)建的無(wú)人機(jī)實(shí)時(shí)操作系統(tǒng)具備較為分明的架構(gòu)以及較高的模塊化程度,相關(guān)技術(shù)人員能夠較為輕易地對(duì)其進(jìn)行剪裁。與市場(chǎng)中應(yīng)用較為廣泛的Linux 系統(tǒng)相比,RT-Thred 系統(tǒng)有著較高的實(shí)時(shí)性,較小的體積以及功耗,不會(huì)耗費(fèi)大量的成本,且占用資源相對(duì)較小,啟動(dòng)速度更快,十分契合無(wú)人機(jī)應(yīng)用于各類(lèi)資源受限的環(huán)境之下[3]。并且RT-Thread 不單單能夠應(yīng)用于較為低端的MCU 之中,也能夠應(yīng)用于ARM9、ARM11 以及ARMCortex-A 系列級(jí)別的應(yīng)用處理器之中。其實(shí)際結(jié)構(gòu)如2 所示。
從上圖中能夠得知,這一系統(tǒng)的核心部分在于內(nèi)核層,主要包含了內(nèi)存管理、郵箱、多線(xiàn)程調(diào)度、定時(shí)器、消息隊(duì)列等功能;libcpu / BSP 主要是指硬件抽象層,主要包含了CPU 移植以及外設(shè)驅(qū)動(dòng)。將RT-Thread 操作系統(tǒng)應(yīng)用于無(wú)人機(jī)操作系統(tǒng)之中,主要有著以下幾個(gè)方面的優(yōu)點(diǎn):一是屬于硬實(shí)時(shí)系統(tǒng)的范疇,能夠充分迎合無(wú)人機(jī)在實(shí)時(shí)性方面的需求[4] ;二是能夠?qū)ο到y(tǒng)的功耗進(jìn)行最大地減少,具備自動(dòng)化功耗控制這一功能;三是其網(wǎng)絡(luò)協(xié)議棧較為豐富,當(dāng)前能夠支持商場(chǎng)中的4G、5G 移動(dòng)通信;四是多媒體軟件包數(shù)量眾多,處理相關(guān)圖像信息更為便捷;五是提供了數(shù)量眾多的云SDK,和物聯(lián)網(wǎng)有著密切的聯(lián)系,使得云計(jì)算技術(shù)能夠有效應(yīng)用于無(wú)人機(jī)之中。
2.3 提供深度學(xué)習(xí)技術(shù)支持
無(wú)人機(jī)所使用的深度學(xué)習(xí)框架應(yīng)該對(duì)無(wú)人機(jī)硬件具有較好的優(yōu)化,同時(shí)盡可能地減少第三方的依賴(lài),同時(shí)又要盡可能支持主流的網(wǎng)絡(luò)和模型。據(jù)此,移植移動(dòng)端已有的深度學(xué)習(xí)框架是比較合適的選擇。本文通過(guò)移植騰訊的 ncnn 神經(jīng)網(wǎng)絡(luò)計(jì)算框架到RT-Thread 操作系統(tǒng),為無(wú)人機(jī)提供深度學(xué)習(xí)支持。ncnn 從設(shè)計(jì)上考慮移動(dòng)端的部署和應(yīng)用,并且具有良好的跨平臺(tái)性,無(wú)任何第三方庫(kù)依賴(lài),不依賴(lài) BLAS 等計(jì)算框架。ncnn 滿(mǎn)足具有以下優(yōu)點(diǎn),使其能作為智能化無(wú)人機(jī)深度學(xué)習(xí)支持平臺(tái):(1) 支持大部分常用的 CNN 網(wǎng)絡(luò),如主流的 VGG、Goog Le Net、Resnet、Squeeze Net、YOLO。(2) 純 C++ 實(shí)現(xiàn)。通常深度學(xué)習(xí)框架會(huì)依賴(lài) BLAS 和 LAPACK 等計(jì)算庫(kù),而后者部分代碼往往使用Fortran 語(yǔ)言編寫(xiě),難以移植。(3) ARM NEON 匯編優(yōu)化。NEON是 ARM Cortex-A 系列芯片中的一種 SIMD 指令集,在單個(gè) CPU指令周期完成多組數(shù)據(jù)的運(yùn)算。目前無(wú)人機(jī)設(shè)備常用ARM 芯片,使用 NEON 指令集實(shí)現(xiàn)卷積層、全連接層、池化層等大部分CNN 的關(guān)鍵層,能有效地提升計(jì)算性能。(4) 通常卷積層在計(jì)算卷積時(shí),為利用優(yōu)化過(guò)的高效的通用矩陣乘法函數(shù)(GeneralMatrix Multiplication),會(huì)將一個(gè) H × W × C 的特征圖拆分重組為 N 個(gè) K2 × C 維向量,即一個(gè)(K2C)× N 的矩陣,其中 K 為卷積核的長(zhǎng)寬,同時(shí)將 D 個(gè) K × K × C 的卷積核重組為一個(gè) D×(K2C)的矩陣。兩個(gè)矩陣通過(guò)一個(gè)矩陣乘法得到一個(gè)輸出矩陣,再改變?yōu)橄鄳?yīng)輸出的形狀,得到輸出張量,即完成出一個(gè)卷積層的計(jì)算。這種計(jì)算卷積的方法會(huì)造成大量的數(shù)據(jù)冗余[5]。在ncnn 中卷積層采用原始的滑動(dòng)窗口卷積實(shí)現(xiàn),然后進(jìn)行優(yōu)化,避免在中間計(jì)算過(guò)程構(gòu)造出較大的矩陣,減少內(nèi)存占用。(5) 整體庫(kù)體積較小,低于 500KB。無(wú)人機(jī)系統(tǒng)通常存儲(chǔ)空間有限,如Pixhawk 僅提供 2MB 大小的閃存用于存儲(chǔ)程序,而 Ardupilot 提供的 Pixhawk 飛控固件僅 1.1MB,較小的第三方神經(jīng)網(wǎng)絡(luò)庫(kù)可以盡量降低對(duì)存儲(chǔ)空間的要求。
3 結(jié)語(yǔ)
綜上所述,傳統(tǒng)無(wú)人機(jī)視覺(jué)系統(tǒng)中存在著一定的弊端,無(wú)法深入處理所獲取的各類(lèi)數(shù)據(jù)信息,因此本次研究引入了深度學(xué)習(xí)技術(shù),在無(wú)人機(jī)視覺(jué)系統(tǒng)中移植了ncnn 作為其深度學(xué)習(xí)的主要框架,能夠有效解決這類(lèi)問(wèn)題,并且維持無(wú)人機(jī)的穩(wěn)定飛行,有效提升無(wú)人機(jī)執(zhí)行相關(guān)任務(wù)的質(zhì)量及效率,值得大力推廣。