龐文宇
【摘? 要】 在當今社會的諸多領(lǐng)域,無人機應(yīng)用已日益普及,涵蓋了影視、航測等多個方面。然而,傳統(tǒng)無人機的人機交互相對復雜,并且需要大量的專業(yè)設(shè)備和訓練,這使得很大一部分用戶無法直接應(yīng)用便捷的無人機。此時就需要一種便攜、易學習和使用的控制系統(tǒng)和方式。其中,基于計算機視覺及深度學習的無人機手勢控制系統(tǒng)可以避免過往無人機控制和使用中的諸多困難,并且有助于去除復雜背景以及相機漂移的影響,使得控制更加便捷和有效,對無人機的應(yīng)用和控制水平提升具有重要意義和價值。文章旨在深入探討和分析基于計算機視覺及深度學習的無人機手勢控制系統(tǒng)。
【關(guān)鍵詞】 計算機視覺;深度學習;無人機控制;手勢控制
一、器材選取與工作平臺搭建
本系統(tǒng)研究初級階段,采用妙算Manifold作為機載處理器進行圖像的處理和識別,搭載在大疆M100飛行器上,利用大疆開發(fā)者平臺,實現(xiàn)手勢識別結(jié)果到對無人機飛行姿態(tài)及操作命令的映射,從而實現(xiàn)無人機的手勢操控:
(一)Manifold模塊
Manifold模塊是DJI推出的一款高性能計算模塊,模塊集成了強大的核心處理器和預裝內(nèi)置系統(tǒng),可以支持復雜的圖像處理、SLAM算法和深度學習等計算密集型任務(wù)。Manifold模塊的核心處理器采用了NVIDIA的TegraK1So C處理器,擁有4個ARM Cortex-A15核心和一個NVID IAKepler GPU,具有強大的計算能力和低功耗特性。同時,該模塊還支持多種接口和通信協(xié)議,包括HDMI、USB、Ethernet、CAN總線、UART和SPI等,能夠方便地與其他設(shè)備進行通信和數(shù)據(jù)交換。Manifold模塊預裝了DJI的內(nèi)置系統(tǒng)和軟件開發(fā)工具,提供了豐富的API和SDK,方便開發(fā)者進行應(yīng)用開發(fā)和調(diào)試。開發(fā)者可以基于Manifold模塊,使用Python、C++等編程語言,快速開發(fā)各種智能應(yīng)用,如機器人視覺導航、目標追蹤、SLAM算法、深度學習等。此外,Manifold模塊還支持ROS(Robot Operating System),ROS用于控制M100無人機及攝像頭的運轉(zhuǎn)工作,這為本系統(tǒng)研究和開發(fā)奠定了良好基礎(chǔ)。
(二)ROS模塊
通過ROS,開發(fā)者可以使用ROS提供的各種功能包和工具,快速構(gòu)建機器人應(yīng)用程序。對DJI的無人機,ROS提供了一個DJISDK的ROS接口,可以直接與DJI無人機進行通信和控制。開發(fā)者可以使用ROS的命令行工具或編寫ROS節(jié)點,通過調(diào)用DJISDK的API實現(xiàn)無人機的起飛、降落、定位、導航等功能,這使得手勢控制系統(tǒng)能夠?qū)崿F(xiàn)的功能變得比較多。譬如,通過ROS的靈活性和可擴展性,開發(fā)者可以將無人機的控制與其他傳感器、算法等模塊進行集成,實現(xiàn)更復雜的機器人應(yīng)用。例如,可以結(jié)合視覺傳感器和SLAM算法,實現(xiàn)無人機的自主導航和避障;也可以結(jié)合深度學習算法,實現(xiàn)無人機的目標識別和跟蹤等功能。在Ubuntu14.04系統(tǒng)下選擇安裝ROS Indio版本,此外需要預先安裝C、C++編譯器及相關(guān)開發(fā)工具和CMake3.2及更高版本。
二、圖像預處理
(一)定位手勢位置
在基于計算機視覺及深度學習的無人機手勢控制系統(tǒng)研究中,為克服使用者手部特征比較少和拍攝中輪廓變化比較大的問題,本系統(tǒng)采用簡捷方法實現(xiàn)手勢位置的定位。
首先使得系統(tǒng)進行人臉識別,在拍攝圖片中找到人臉,隨后在人臉的特定位置定位手勢。在人臉識別方面,使用 OpenCV 提供的物體檢測功能,庫中還自帶一系列的檢測參數(shù),包含人臉、眼睛、嘴巴等。其次,在訓練階段,決策樹通過已知的正確、錯誤圖片進行優(yōu)化。最后,通過系統(tǒng)方法,系統(tǒng)可以在照片中找到人臉,并且進行圓圈標記,隨后進行計算,假設(shè)圓圈半徑為R,在人臉作者創(chuàng)建一個邊長為2R的正方形區(qū)域。僅此區(qū)域內(nèi)的手勢能夠被精確定位和截取,從而間接實現(xiàn)了手勢的模糊定位。這一方法在現(xiàn)實環(huán)境中的應(yīng)用得以驗證。
(二)識別截取手勢圖片
在上述創(chuàng)建正方形區(qū)域后,區(qū)域內(nèi)不一定存在手勢,因此在這一區(qū)域需要進行進一步識別,以確定區(qū)域中是否存在手勢。BGR直方圖是基于圖像的RGB顏色空間的三個通道,即藍色、綠色和紅色通道。通過統(tǒng)計圖像中每個通道的像素強度分布情況,可以得到一個三維的顏色直方圖。在手勢位置定位中,可以通過對圖像進行顏色分割,提取出手部區(qū)域,并使用BGR直方圖對手部區(qū)域的顏色特征進行匹配,以確定手勢的位置。
HSV直方圖是基于圖像的HSV顏色空間的三個通道,即色調(diào)、飽和度和亮度值。HSV顏色空間將顏色的表示方式從原始的RGB空間轉(zhuǎn)換為更加直觀和易于處理的形式。色調(diào)表示顏色的種類或類型,飽和度表示顏色的純度或鮮艷程度,亮度值表示顏色的明暗程度。通過計算圖像中每個通道的像素分布情況,可以得到一個三維的HSV顏色直方圖。在手勢位置定位中,可以利用HSV直方圖對手部區(qū)域的顏色特征進行匹配,以準確定位手勢位置。因此,通過這種方式,系統(tǒng)可以捕捉到手部區(qū)域的顏色特征,并通過對比和匹配來確定手勢的位置。相比于BGR直方圖,HSV直方圖在處理顏色變化和光照變化時更具魯棒性,因為HSV顏色空間將顏色信息與亮度信息分離開來,更適合于對顏色特征的提取和匹配。
在手勢識別時用這些 H-S 膚色直方圖進行匹配。如果在照片中匹配率達到50%以上,截取圖片。否則判定指定區(qū)域內(nèi)無手勢。
(三)減輕背景干擾
由于手勢背景相對復雜,不利于識別,因此需要將背景簡化,利于識別,提升識別準確性和有效性。系統(tǒng)使用反向投影,先計算某一特征的直方圖模型,然后使用模型去尋找圖像中存在的該特征的方法。所使用的模型為預先獲取的 H-S 膚色直方圖。
三、手勢識別
(一)卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
系統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)使用谷歌發(fā)布的人工智能系統(tǒng)Tensorflow平臺進行搭建,建立一個輸入層、兩個卷積層、兩個池化層、兩個全連接層、一個輸出層,具體如以下所示:
1. 輸入層
輸入層為一組圖片input,目的在于加快系統(tǒng)的訓練速度,并且可以在一定水平方面避免過擬合現(xiàn)象和問題。本系統(tǒng)輸入張量為:[50,28,28,3]。
2. 第一卷積層
第一卷積層將圖片張量與一卷積核做卷積操作,第一卷積層的卷積核weight_1為[5,5,3,64]的張量,偏置為一[50,28,28,64]的張量bias_1。經(jīng)卷積后,得到一[50,28,28,64]的特征圖map_1。
3. 第一池化層
池化大小為3×3,每次移動2個像素點,得到一[50,14,14,64]的特征圖map_pool_1
4. 第二卷積層
第二卷積層的卷積核為一[5,5,64,64]的張量weight_2。偏置為一[50,14,14,64]的張量bias_2。經(jīng)卷積后,得到一[50,14,14,64]的特征圖。
5. 第二池化層
池化大小為3×3,每次移動2個像素點,得到一[50,7,7,64]的特征圖map_pool_2。
6. 第一全連接層
將[50,7,7,64]的張量變成一個[50,3136]的張量tensor_1。權(quán)重張量weight_3大小為[3136,448]。偏置張量bias_3大小為[50,448],得到一[50,448]的張量tensor_2。
7. 第二全連接層
該層權(quán)重張量weight_4大小為[448,6]。偏置張量bias_4為[50,6]。得到一[50,6]的張量X。
8. 輸出層
將張量中的三個元素做softmax運算,得一新的[50,6]張量y,此張量中的每個值代表概率。
(二)訓練過程
訓練過程包含3600張圖片,以一個batch(50張圖片)為單位提取圖片。為降低網(wǎng)絡(luò)中參數(shù)對圖片對比度、拍攝角度、使用左手或右手的敏感度的影響,會在一定范圍內(nèi)隨機改變圖像的亮度,并對其進行角度變化和翻轉(zhuǎn)。將分好類的圖像讀入神經(jīng)網(wǎng)絡(luò)。
為減少loss值并達到批量化的參數(shù)優(yōu)化,采用Tensorboard顯示訓練過程中l(wèi)oss的變化折線圖。通過觀察loss的變化,可以調(diào)整學習率以確保穩(wěn)步下降,以充分利用圖像數(shù)據(jù)而避免過擬合。同時,Tensorboard還可以展示數(shù)據(jù)在網(wǎng)絡(luò)結(jié)構(gòu)中的完整流動過程。
訓練過程完成后,保存訓練過程中的參數(shù),即可將其運用在圖像的測試過程中,輸出手勢分類結(jié)果,具體的參數(shù)訓練過程和初期loss值變化如(圖1和圖2)所示:
四、項目研究成果
人工控制無人機的位置使其穩(wěn)定后,可以通過攝像頭進行圖像截取,當視野中出現(xiàn)靜態(tài)手勢時,能完成識別,并控制無人機飛行,對攝像頭傳回的圖片,識別正確率接近80%。
五、結(jié)語
通過攝像頭進行圖像截取和靜態(tài)手勢識別以及對無人機飛行的控制。這些技術(shù)的綜合應(yīng)用使得無人機能夠?qū)崿F(xiàn)基于手勢的控制,為無人機應(yīng)用領(lǐng)域帶來了新的可能性。
首先,人工控制無人機的位置穩(wěn)定是實現(xiàn)準確的圖像截取和手勢識別的關(guān)鍵。通過精確控制無人機的飛行姿態(tài)和位置,保持相對穩(wěn)定的拍攝環(huán)境,可以提高后續(xù)圖像處理和手勢識別的準確性。
其次,利用攝像頭進行圖像截取能夠獲取實時的視覺信息。攝像頭將實時傳回的圖像用于后續(xù)的手勢識別,為靜態(tài)手勢的檢測和識別提供數(shù)據(jù)支持。在圖像截取過程中,需要考慮圖像質(zhì)量、光照條件和攝像頭參數(shù)等因素,以確保圖像清晰度和準確性。靜態(tài)手勢識別是本項目的關(guān)鍵任務(wù)之一。通過對截取到的圖像進行圖像處理和計算機視覺算法的運用,可以識別出圖像中出現(xiàn)的靜態(tài)手勢。靜態(tài)手勢的識別準確率接近80%,這表明算法在處理不同手勢姿勢和背景條件下具有一定的魯棒性。
最后,通過靜態(tài)手勢的識別結(jié)果,可以實現(xiàn)對無人機飛行的控制。根據(jù)識別到的手勢類型和位置信息,可以制訂相應(yīng)的飛行指令,實現(xiàn)無人機的起飛、降落、懸停、前進、后退等操作。這為無人機的控制提供了一種直觀且便捷的方法,拓寬了其應(yīng)用領(lǐng)域。
參考文獻:
[1] 閆耀芳,張子林,錢堂,等. 無人機目標追蹤系統(tǒng)設(shè)計與實現(xiàn)[J]. 山西電子技術(shù),2022(05):18-20.
[2] 于昌立,范書瑞,劉洋. 基于數(shù)據(jù)手套的無人機端側(cè)控制系統(tǒng)設(shè)計[J]. 電子測量技術(shù),2022,45(12):40-47.
[3] 李蕊冰. 四旋翼飛行器手勢控制及定點懸停技術(shù)研究與設(shè)計[D]. 西安:西安石油大學,2021.