栗俊杰, 毛鵬軍, 方 騫, 申禮瑞, 李鵬舉, 耿 乾
(河南科技大學機電工程學院, 洛陽 471003)
無人機作為新型消防裝備,在日益繁重、情況復雜多變的滅火救援任務中正發(fā)揮著極其重要的作用,其功能的擴展與技術的更新直接影響消防滅火的效率。現有無人機撲救火災方式之一是通過機載噴頭向火點噴射滅火劑,而噴頭對火點定向的過程完全依靠人為通過視頻監(jiān)控不斷嘗試和調整,這一過程既耗時耗力又造成滅火噴劑的大量浪費。為彌補這一不足,進一步提高無人機智能化程度,選擇非圖形處理器 (graphics processing unit,GPU)設備實現火點檢測與精準定向任務對提高無人機消防救援智能化程度具有非常重要的意義。
近年來,借助卷積神經網絡進行圖像分類的精度超過人工分類,將其作為特征提取層的目標檢測算法在檢測精度和速度上取得巨大提升,如R-CNN(regions with convolutional neutral network)系列[1-3]、SSD[4](single shot multibox detector)、YOLO[5-7](you only look once)在火點檢測領域取得較好的表現。Wu等[1]創(chuàng)建了一個森林火災基準,使用R-CNN、YOLO和SSD來檢測森林火災。他們發(fā)現SSD具有較好的實時性、較高的檢測精度和早期檢測能力。同時,對YOLO的結構進行調整,提出一種新的結構tiny-yolo-voc,實驗證明提高了火災檢測的正確率。Kim等[2]使用Fast R-CNN根據其空間特征檢測火與非火區(qū)域。另外,通過LSTM(long short-term memory)來預測火災報警的可靠性。Li等[3]為提高圖像火災檢測技術性能,使用Fast R-CNN、SSD和YOLO與現有算法比較,發(fā)現基于卷積神經網絡(convolutional neutral network,CNN)的火災檢測算法精度明顯優(yōu)于其他算法,其中YOLO檢測速度最快,魯棒性最強。Shen等[6]使用簡化版本的YOLOv1網絡對火點進行檢測和定位,該算法檢測速度較快,但易受到燈光光線的影響且邊界框不能框選出火點確切區(qū)域。以上方法中YOLO和R-CNN已成功地在檢測對象方面取得了不錯的結果,但由于視頻監(jiān)控平臺的局限性,使得它們無法在具有實時性受限的消防環(huán)境中工作。
在滅火過程中,需要用噴劑準確到達著火點位置,以保證快速滅火?,F有噴劑滅火主要是基于隔絕氧氣防復燃原理,噴劑下落過程會因空氣阻力形成速度梯度造成水體受力不均而擴散,同時也易受到風場影響。通過人工實時調整噴射角度,不僅精準度低而且造成噴劑的浪費。在精準滅火方面,中外科研人員提出不同的研究方法。Lee等[8]提出了一種采用計算機視覺技術和卷積神經網絡(CNN)實現在視圖中準確地跟蹤對象的方法。同時,利用混合運動學來實現噴頭的精確控制。伍毅等[9]通過建立噴頭霧場特性實驗平臺來研究高壓細水霧噴頭流量系數與霧場特性的關系,實驗結果表明,隨著流量系數在一定范圍內變化,噴頭的霧場強度、液滴粒徑分布和霧化角度均有明顯增加,滅火能力也更強。Zhang等[10]建立了一個反向傳播 (back propagation,BP)神經網絡模型,將噴口特性作為模型輸入,出水點坐標作為模型輸出。模型能夠準確預測出水點,從而準確地確定火點位置并調整噴頭。Zhu等[11]基于運動粒子半隱式(moving-particle semi-implicit, MPS) 方法建立了水射流軌跡模型預測火點位置。實驗發(fā)現空氣阻力是產生偏差的主要原因,采用二值函數插值補償方法進行誤差補償,利用未使用的數據驗證了修正后模型的準確性。上述研究中,應用在無人機這一特定設備上,可行性和適用性依然是個難題。
現采用新一代智能AI芯片,使用YOLOv2-Tiny[12-13]檢測框架,模型部署到K210上可實現較為理想的目標檢測效果,最后通過PID控制來調節(jié)火點框選中心與視頻中心的偏差值來控制噴頭定向火點并鎖定。同時,所有圖像處理和噴頭控制決策都在移動設備上進行,以期進一步提高無人機消防的部署速度與滅火效率。
YOLO[14-15]是一種基于CNN的對象檢測框架,將對象檢測任務作為一個統(tǒng)一的回歸問題。如圖1所示,YOLOv2[16]神經網絡共有23個卷積層,目標是在強大的硬件平臺上進行高精度的目標檢測,而YOLOv2的簡化版YOLOv2-Tiny只有9個卷積層,適用于移動和嵌入式設備。YOLOv2和YOLOv2-Tiny都支持多分辨率輸入,通過適當設置輸入圖像的分辨率,提供了一種方便的方法來平衡計算負載和檢測精度。
圖1 YOLOv2與YOLOv2-Tiny對象檢測框架Fig.1 YOLOv2 and YOLOv2-Tiny object detection framework
YOLOv2-Tiny火點檢測算法由如下幾步組成。
(1)對任意分辨率火點圖片按原圖長(w)、寬(h)比縮放至224×224。
(2)把步驟(1)得到的圖像網格化,把圖像劃分成7×7大小的網格,如圖2(a)所示。
(3)滑動窗口遍歷所有網格并且每個網格預測5個候選框,每個候選框包含30維特征(共5×30=150維),如圖2(b)所示。
圖2 YOLOv2-Tiny算法流程Fig.2 Algorithm flow of YOLOv2-Tiny
(4)對含有火點網格的候選框與真實框(黃色框)進行交并比計算,把置信度低于設定閾值的略去,高于設定閾值的使用非極大值抑制篩選得到最終的邊界框,如圖2(c)、圖2(d)所示。
本文中保留YOLOv2-Tiny提出的特征提取層,依據所要檢測的類別數量,修改最后一個1×1的卷積層。實驗所要檢測的類別數量為1,最終的向量深度為30。YOLOv2-Tiny具體結構組成如表1所示。為獲得高的交并比,進一步提高錨框定位的準確性,使用K-Means聚類方法對自制訓練集Ground truth聚類分析,以解決錨框定位不準確性問題,最終通過聚類得到5個anchor boxes為(0.67,0.81)、(1.27,1.81)、(1.71,3.71)、(3.07,2.34)、(3.42,4.62)。
表1 YOLOv2-Tiny具體結構組成Table 1 The specific structure of YOLOv2-Tiny
二維旋轉噴頭如圖3所示,結構主要是由兩個舵機組成,1號舵機用于控制噴頭上下移動,2號舵機用于左右移動,兩舵機調節(jié)范圍均為180°,可實現兩個方向的自由同步調節(jié)。噴頭定向火點如圖4所示。使用ov2640攝像頭獲取圖像,知識處理單元(knowledge processing unit,KPU)對視頻中每一幀圖像進行YOLOv2-Tiny檢測,獲得圖像中火點目標位置后,將火點框選中心與圖像中心之間距離參數傳遞給PID進程。PID控制噴頭實時移動保持火點框選中心在視頻中央,以實現定向火點。
圖3 二維旋轉噴頭Fig.3 Two dimensional rotating nozzle
圖4 PID控制噴頭定向火點Fig.4 PID control nozzle directional fire point
PID控制算法指比例(proportional)、積分(integral)和微分(derivative)3項全部或者部分組合的一種控制算法。PID控制幾乎適用各種被控對象,通過調整PID參數,可以使系統(tǒng)兼顧穩(wěn)態(tài)性能和動態(tài)性能。噴頭定向控制中,比例控制部分用于控制舵機帶動噴頭跟蹤火點移動而轉動,積分部分用于消除火點框選中心與視頻中心距離的穩(wěn)定誤差,微分部分用于控制兩點偏差的變化率。計算公式為
(1)
式(1)中:u(t)表示舵機最終輸出的角度;e(t)表示火點框選中心與視頻中心的偏差角度;Kp、Ki和Kd表示各增益系數。
1號和2號舵機初始角度分別為30°和50°。舵機控制信號周期為20 ms的脈寬調制(pulse width modulation,PWM)脈沖信號,脈沖信號范圍為0.5~2.5 ms,即占空比為0.5%~12.5%。不同占空比的PWM對應舵盤位置0°~180°,通過K210開發(fā)板產生指定的PWM脈沖信號給舵機。實際使用中,由于舵機零部件的差異、負載變化、減速齒輪磨損等影響,使得舵機機械特性不是嚴格線性的。為精確控制舵機轉動至指定角度,通過數據擬合的方式得到舵機真實轉動角度與占空比對應關系,波形如圖5所示。
圖5 角度與占空比關系Fig.5 Relationship between angle and duty cycle
實時視頻中的目標檢測一直是一項具有挑戰(zhàn)性的任務,通常受到所需計算能力的限制。到目前為止,隨著深度學習優(yōu)化方法的到來,以及專門為嵌入式設備和深度神經網絡加速而設計的新型片上系統(tǒng)的發(fā)布,有可能在小型廉價設備上實現實時性。K210[17-19]就是其中一款能夠在邊緣進行深度學習模型推理的系統(tǒng)級芯片。
K210內部配備的KPU(knowledge processing unit)是一種神經網絡處理器,能夠在先前訓練的模型上加快推理過程。KPU內置卷積、批歸一化、激活和池化運算單元,實時工作的最大固定點模型大小為5~5.9 MiB,并支持1×1和3×3卷積內核。K210有6 MiB通用SRAM與2 MiB專用AI SRAM,共計8 MiB。模型的輸入輸出特征存儲在2 MiB的AI SRAM中,權重參數存儲在6 MiB通用SRAM中。圖6所示為嘉楠科技公司推出的一款MAIX DOCK開發(fā)板。
圖6 MAIX Dock開發(fā)板Fig.6 MAIX Dock development board
K210火點檢測過程如圖7所示。執(zhí)行流程為:①初始化KPU,部署CNN結構;②等待一幀圖像采集完成;③開始CNN運算;④開始Region區(qū)域,計算火點區(qū)域;⑤繪制圖像;⑥繪制火點區(qū)域框。
圖7 K210火點識別執(zhí)行過程Fig.7 Implementation process of K210 fire point identification
模型訓練與編譯流程如圖8所示。數據集訓練是在TensorFlow框架下進行的(①)。訓練后的模型是.h5格式(②)。接下來.h5模型返回到TensorFlow(③),模型被轉換為.tflite格式(④),然后在nncase中編譯。nncase編譯器將模型壓縮、參數化和編譯為.kmodel格式(⑤)。生成的kmodel模型有兩種途徑到開發(fā)板上,一種為通過官方kflash軟件下載到Flash中(⑥),另一種直接存儲到設備SD卡上(⑦)。
圖8 模型訓練與編譯流程Fig.8 Model training and compilation process
模型訓練硬件平臺CPU為Inter i7 10750H @ 2.59 GHz,GPU為GeForce RTX 2060,6 G顯存,32 G運行內存,運行系統(tǒng)為Windows10專業(yè)版,CUDA版本為10.1。
隨機選取一定量圖片進行訓練,模型在K210上的檢測效果并理想。因此,實驗中所用到數據集是通過25 600張數據集中篩選得到的。目前,自制數據集只選擇1 500張火點圖片,分為訓練數據和驗證數據兩部分。所使用的訓練數據是1 200張來自監(jiān)控攝像頭圖片和100張網上下載圖片,共計1 300張圖片。驗證集使用200張監(jiān)控攝像頭圖片。通過labelImg對數據集進行手工打標。網絡訓練超參數設置如下:批次大小為8,迭代次數為50,學習率為0.001。模型檢測結果如圖9所示。
圖9 模型檢測結果Fig.9 Model checking results
訓練損失在深度學習中是衡量網絡模型性能優(yōu)良的重要指標。圖10描繪了YOLOv2-Tiny訓練損失隨迭代次數變化的關系。當迭代次數較小時,網絡模型對火點圖片特征進行學習,訓練損失值由1.3快速下降。當迭代次數增大時,訓練損失曲線下降并逐漸趨近穩(wěn)定。最終在40附近時,訓練損失曲線趨近于0.04的穩(wěn)定值,符合訓練預期。
圖10 訓練損失與迭代次數關系Fig.10 Relationship between training loss and iteration times
為選取最優(yōu)模型,分別對同一批火點圖片、不同迭代次數的訓練模型進行檢測。迭代次數分別為10、15、30、40、50。采用多項指標對模型進行性能評估,具體評估指標包括精確率P、調和平均值F1、召回率R和每秒傳輸幀數(frames per second,FPS)。表2列出了5種不同迭代次數模型相對應的指標參數。選擇最優(yōu)模型不僅需要權衡準確率和召回率,同時也要選擇能夠綜合反映模型性能的指標。F1是P、R的加權調和平均指標,因此選擇F1數值最大的模型作為最優(yōu)訓練模型。測試結果對比如表2所示,F1最大值為95.54%,故本次模型中迭代次數為40的為最優(yōu)檢測模型。將最優(yōu)模型下載至K210開發(fā)板上,對200張測試圖片進行檢測,檢測精度達到96.5%。MAIX DOCK開發(fā)板火點檢測效果如圖11所示。
表2 測試結果對比Table 2 Comparison of test results
圖11 MAIX DOCK開發(fā)板火點檢測效果Fig.11 Fire detection effect of MAIX DOCK development board
噴頭噴射軌跡與現場環(huán)境密切相關,實際環(huán)境中的風速、空氣阻力等都對噴頭射流有很大的影響,射流曲線與目標關系如圖12所示。本實驗中忽略風力與空氣阻力影響,以射流理想軌跡測定射流落點與火點形心之間誤差來衡量定向精度。實驗中無人機固定至1.5 m高度,噴頭加裝一個點狀激光器,共計測定100次AB之間的誤差。實驗場景如圖13所示,實驗測定結果如圖14所示。
圖12 射流軌跡與火點中心誤差圖Fig.12 Error diagram of jet trajectory and fire center
圖13 實驗場景Fig.13 Experimental scenario
圖14 誤差實驗圖Fig.14 Error experimental diagram
實驗中射流落點位置誤差的最大值為9 cm,平均誤差為3.7 cm。隨著次數的增加,誤差持續(xù)在一定的范圍內變化。一方面,由于0v2640攝像頭安裝的角度及高度使得采集得到的火點圖像出現“近大遠小”。具體表現為,當采集距離在焦距附近時,圖像質量好,位置誤差變小。當采集距離偏離該距離時,圖像像素分辨率降低,位置誤差略有變大。另一方面,由于火點屬于非剛性物體,輪廓相對不規(guī)則和散漫。同時,圖片擺放位置造成框選中心與火點形心不一致,導致誤差持續(xù)存在。相同實驗條件下,實驗中發(fā)現隨著高度(距離火點最高至8 m位置)的增加和火點面積的增大,誤差逐漸有變小的趨勢,這對精準滅火是有利的。通過調節(jié)PID參數,最終發(fā)現參數分別為0.23、0、0.015,滿足穩(wěn)定且快速響應的條件。
現有消防無人機噴頭是不具備火點定向功能的。同時,考慮到視頻監(jiān)控平臺的局限性,使用基于K210的可移動設備來實現火點檢測與精準定向火點任務,得到如下結論。
(1)提出了YOLOv2-Tiny目標檢測框架實現火點檢測。通過建立真實數據集對其進行訓練和測試,模型對火點的檢測,精確率達94.6%,召回率達96.5%。模型下載至K210開發(fā)板上實現良好的檢測效果,基于K210實現火點檢測具有可行性,運用到火災場景值得深入研究。
(2)提出了固有K210開發(fā)板的舵機帶動噴頭定向火點的控制方法。通過PID控制來調節(jié)火點框選中心與視頻中心的偏差值來控制噴頭定向火點。同時,為實現噴頭的精確定向,通過數據擬合的方式找到舵機精確角度對應的PWM脈沖信號。在4 m×4 m×3 m的室內實驗環(huán)境下,射流位置平均誤差為3.7 cm,能夠滿足精準定向火點的服務需求。
本研究也存在一定的不足:
(1)為避免積分飽和所造成舵機角度滯后和震蕩等問題,從而導致系統(tǒng)動態(tài)性能下降,本文中只使用了比例微分控制算法。盡管PD控制的穩(wěn)定余度不小,但具有好的動態(tài)品質余度不大。為實現最優(yōu)的控制品質,后續(xù)中將引入自抗擾控制算法。
(2)模型在K210上對火點的定位存在不精準問題。此外,一些類火焰物體,如帶有黃色帽子和穿有黃色衣服的行人易引起誤框選。后續(xù)研究中,會通過增加數據集和避免框選煙霧、火盆、干柴等不相干物體,有針對性地對火點區(qū)域進行打標。