廖駿明,徐逸暉,鄭 潞,鄭善豪,卓偉豪,廖紹成
(中國礦業大學,江蘇 徐州 221116)
傷員搜救是指對災害現場處于危險中的人員進行搜尋和救援行動,其目標是減少人員傷亡。傷員搜救面臨著搜救環境危險、時間緊迫、光線昏暗等困難。近年來,無人機(Unmanned Aerial Vehicle,UAV)越來越多地被用作輔助救援工具。無人機可以穿越人類難以到達的地區,如山區、島嶼等,無人機的攜帶能力可以在救援人員到達前運送藥品和救援設備。與直升機相比,多旋翼無人機具有操作簡單、無跑道起降、體積小和可靠性高等優點,適合在搜救工作中應用[1-3]。
在傳統的搜救工作中,救援人員可能錯過被搜救的人員。隨著嵌入式GPU 性能提升和成本下降,在無人機平臺運行圖像識別和神經網絡模型的門檻大大降低。使用算法自動檢測圖像中可能存在的人類,可提高救援工作的效率。本文研究近年流行的YOLO 目標檢測算法,此算法平衡了識別的準確率和性能,適用于無人機平臺,并且在開源社區的努力下仍在迭代優化[4]。
四旋翼無人機系統的硬件模塊可以劃分為飛行控制系統、動力系統和視覺識別系統3 個子系統,各個硬件模塊的關系圖如圖1 所示。

圖1 無人機硬件關系圖
3 個子系統的介紹如下。
1)飛行控制系統負責無人機的姿態控制、導航等功能,是無人機的核心部分。飛行控制系統由PX4 飛控、樹莓派4B 計算機和GPS 模塊等組成。
2)飛行動力系統負責提供無人機的電力,是無人機飛行的基礎。動力系統由電機、電調、槳葉、電池和分電板等硬件組成。
3)視覺識別系統負責對無人機周圍的環境進行感知,是無人機實現傷員搜救任務的關鍵。視覺識別系統由攝像頭、數據傳輸線、激光雷達等硬件,以及圖像處理軟件組成。
實驗無人機的硬件參數見表1,本平臺選用常見硬件,并保留后續升級其他模塊的裕量。

表1 無人機硬件參數
組裝完成的無人機實物照片如圖2 所示。

圖2 組裝完成的無人機實物
四旋翼無人機的組裝結構可分為“+”型和“×”型2種類型,二者飛行原理相似。本文采用更為常見的“×”型,其4 個電機在對角線位置。四旋翼無人機的運動是通過控制4 個螺旋槳的速度,改變力和扭矩來實現的,示意圖如圖3 所示。

圖3 “×”型四旋翼無人機示意圖
無人機的飛行姿態可以由以下公式歸納[5]
式中:ψ、θ、?分別表示偏航角、俯仰角和翻滾角,°;Ix、Iy、Iz是四旋翼三軸的轉動慣量,kg·m2;U1是4 個螺旋槳產生的總力,N;U2、U3、U4是翻滾、俯仰和偏航三軸的力矩,N·m。
四旋翼無人機通常由2 個PID 控制回路控制。一個是用于姿態控制的內環;另一個是用于位置控制的外環。為了求解真正的控制量,即螺旋槳的速度,需要建立螺旋槳與U1、U2、U3、U4之間的關系。在圖3 所示的結構中,關系如下
式中:ω1(i=1,2,3,4)是對應電機的角速度,rad/s;CT是螺旋槳拉力系數;CM是螺旋槳轉矩系數;d是無人機中心到電機的距離,m。
四旋翼無人機組裝完成后,需要進行測試,測試過程需要注意人身和設備安全。首先,檢查接線是否正確、各部件連接點是否牢固、飛控是否報警。如果一切正常,可以安裝螺旋槳后進行室外飛行。
YOLO 算法是一種基于深度學習的單階段目標檢測算法。YOLO 算法的特點是速度快、通用性強,近年在無人機目標檢測領域越來越受歡迎。本文采用的YOLOv5 由3 部分組成:特征提取層(Backbone)、特征融合層(Neck)和預測層(Head)。根據網絡的深度和寬度差異,YOLOv5 提供了5 個不同尺寸的版本。對于無人機平臺,考慮計算機的性能較弱,推薦使用YOLOv5s 模型。
首先準備數據集,模擬傷員姿勢在不同的角度、背景、光線下拍攝500 張照片,使用LabelImg 軟件對圖片進行標注。之后調用YOLO 程序訓練神經網絡。將500 張照片樣本隨機劃分為300 張訓練集,100 張驗證集,100 張測試集。訓練所用計算機的硬件配置見表2,訓練耗時2.1 h。

表2 訓練計算機硬件配置
使用訓練好的權重模型對進行識別,原始圖像和識別結果如圖4 所示。

圖4 原始圖像和識別后的圖像
經過100 張樣本圖片的測試,訓練的模型識別出96 張圖片中的人物。100 張樣本的最長、最短、平均識別時間分別為1.21、0.31、0.54 s。
Qt 是一個跨平臺的C++應用程序開發框架,它為開發者提供了建立圖形用戶界面(Graphical User Interface,GUI)所需的基本功能,被廣泛用于應用程序開發。而PyQt5 是Qt5 框架在Python 語言下的實現,PyQt5 提供了一個基本的窗口控件集合,具有面向對象、高性能、開發靈活等諸多優點。由于PyQt5 框架與YOLO 算法都是基于Python 編程語言開發的,所以可以很方便地將二者整合到一起。結合Python 大量第三方庫可以開發出許多強大功能,例如圖像識別、音視頻數據分析等。
在開發軟件前,首先進行軟件功能的規劃,無人機傷員搜救系統應包括以下功能。
1)實時圖像識別。本功能包含攝像頭設備選擇、攝像頭實時圖像顯示、識別結果展示3 部分。可通過下拉列表切換多個攝像頭設備,通過點擊按鈕切換是否讀取攝像頭的圖像流,并將攝像頭的識別結果顯示在軟件界面中。
2)無人機實時參數。本區域顯示了無人機的高度、速度、電池電壓和系統狀態等關鍵信息。ROS 與PyQt5程序之間使用Socket 通信協議傳輸數據。
3)系統日志。本區域記錄系統運行的關鍵信息,右側2 個按鈕可以實現日志清除和導出功能。
基于上述功能規劃,在PyQt5 的Qt 設計師(QtDesigner)程序中設計無人機傷員搜救系統的軟件界面,并保存窗口布局為.ui 文件,供后續程序代碼調用。本程序使用了PyQt5 中的按鈕(PushButton)、文本標簽(Label)、組合框(ComboBox)和文本框(TextEdit)分組框(Group Box)等控件,軟件運行的截圖如圖5 所示。

圖5 軟件運行截圖
啟動軟件后,軟件以2 s 為周期定時刷新無人機參數,數據的自動刷新使用PyQt5 中的QTimer 定時器組件實現。隨后軟件等待用戶選擇并打開攝像頭,并讀取圖像流,調用YOLO 算法識別,并將識別結果顯示在圖片區域中。
軟件響應用戶的操作利用Qt 特有的“信號和槽”機制實現。當用戶點擊界面的按鈕或在文本框中輸入文字時,會產生一個“信號”,驅動執行對應“槽”函數中的代碼,從而改變界面的顯示效果。這是Qt 與其他GUI 框架相比的獨特機制,可以簡化程序開發的流程。
本文使用YOLOv5 算法展示了對模擬傷員圖片的檢測。實驗結果表明,采用無人機救援和YOLO 目標檢測算法設計的救援系統具有視角廣、識別時間短、工作效率高等優點。對于模擬訓練集,傷員平均識別率在95%以上,從而確保救援工作的快速開展,為搜救行動提供有效的支持。
但是本文的無人機救援系統還存在續航時間短、通信不穩定等問題,未來多機協同、自主飛行等技術的普遍應用,無人機將在更多領域為人類社會做出貢獻。下一步工作可以將光學和熱成像技術結合,以進一步減少傷員的漏檢率。還可以擴充數據集和標注,分類坐、蹲、躺等不同的傷員姿態。