蘭元帥 何晉
(成都信息工程大學軟件工程學院,四川 成都 610225)
森林資源是人類的重要資源,在凈化環境的同時給人類帶來多樣的物種資源。但是,我國每年都有不少森林防火不當引起的災難和損失。
早期森林防火僅依靠人工觀測技術,不僅精度低,而且實時性差。在森林防火中傳感器技術帶來了較大影響,但對于大面積的森林空間,傳統的傳感技術并不是很有效[1]。由于空間距離大,傳感器無法快速采集煙氣變化信息,有效探測火災情況。目前,森林火災的探測方法大多是紅外探測方法,具有火災探測精度高的特點,但紅外探測系統的探測算法易受到外界干擾,火災早期煙霧微弱時探測精度較低[2]。
通過深度學習方法訓練目標檢測模型,運用樹莓派4B搭載YOLOv3機器視覺模型對火焰智能識別,采用這種森林防火方法,抗干擾能力強,檢測精度高。本系統采用樹莓派4B+,性能強、價格低、功耗低、體積小,能很好地解決森林防火中因環境特殊性帶來的防火預警不及時的問題,具有一定的推廣價值。
森林防火系統采用模塊化的設計理念,主要由Gan網絡數據生成模塊、YOLOv3目標檢測模塊、實時圖像采集模塊、動態報警系統4部分組成,系統總體框圖如圖1所示。

圖1 系統總體框架圖
數據處理是模型訓練過程中很重要的一步。通過將煙霧和明火的圖片數據輸入到圖片生成Gan模型進行訓練,圖片生成Gan模型訓練成熟后再輸入固定格式的編碼即可生成大量目標圖片數據,以此降低尋找大量訓練圖片數據的成本,再將由圖片生成Gan模型的生成的目標圖片數據根據需求進行標注,標注后的圖片數據進行歸一化處理,加快網絡訓練的收斂性;再將歸一化處理后的目標圖片數據輸入到目標檢測模型進行訓練,目標檢測模型訓練成熟后即可連接至輸入設備待用。
火災主要的特征是明火和煙霧,因此對于森林火災識別模型的訓練數據應為明火和煙霧的圖片數據及視頻數據,同時增加“光線”相關特征使目標檢測模型精度更高。對于模型算法的使用優選為YOLOv3模型。YOLOv3目標檢測模型引用更加強大的特征提取網絡darknet-53使得計算速度大大加快,對象分類引用Logsitic支持多標簽以增加檢測精度。模型在PC端完成訓練后,將模型和數據優化后部署到樹莓派4B上,作為系統的目標檢測模塊。
相關圖像或視頻的數據通過鐵塔上安裝的攝像頭以及相關已部署的無人機完成采集。通過鐵塔和無人機采集視頻數據傳輸至監控中心,監控中心利用SLIC圖像分割技術對視頻進行分幀,分幀后的視頻數據變為待檢測的圖片數據[3],本系統SLIC搜索的限制范圍示意圖見圖2。

圖2 SLIC搜索限制范圍示意圖
攝像頭為雙目攝像頭,雙目攝像頭包括紅外攝像頭和高清攝像頭,紅外攝像頭用于夜晚,高清攝像頭用于白天[4]。由于光線的影響,將夜晚和白天分別用不同的攝像頭進行視頻采集,提高視頻采集的精度。
對于相關設備的供電則由設置的太陽能供電模塊完成。太陽能供電模塊包括若干光伏電池板、穩壓模塊、蓄電池組。將太陽能板與穩壓模塊的輸入端連接,再將穩壓模塊LM317輸出端與蓄電池的輸入端連接,并使用蓄電池為攝像頭提供備用電源,本系統的LM317穩壓電源電路,如圖3所示。

圖3 LM317穩壓電源電路
通過無人機和鐵塔部署好的傳感器和攝像頭在定期采集數據后將數據回傳,通過原來訓練好的識別模型進行判斷目標檢測的模型是否大于預先設定好的閾值。如果超過所設閾值則觸發森林防火報警器,根據火災發生的位置通知相關人員滅火,并將數據存儲于數據庫[5]。
用于模型訓練的原始數據是明火和煙霧的圖片數據及視頻數據。由于獲取到大量的相關數據存在一定的困難,因此使用Gan網絡對于有限的真實原始數據進行處理。通過Gan網絡可以生成大量圖片,標注后的圖片可以提供給目標識別模型的訓練[6]。
圖片生成模型的Gan網絡是G網絡和D網絡的動態“博弈”。生成網絡G欺騙判別網絡D通過生成大量真實圖片;D網絡就盡最大努力區分生成圖片和真實圖片。最理想狀態下,G可以生成足以“以假亂真”的圖片G(z)。將煙霧和明火的圖片數據輸入到Gan網絡進行訓練,訓練成熟后生成編碼網絡和解碼網絡,編碼網絡輸出固定格式的編碼,這樣只需要輸入與編碼網絡輸出的相同格式的編碼到解碼網絡即可生成大量足以“以假亂真”的圖片,以降低尋找原始圖片數據進行目標檢測模型訓練的成本。
Gan的判別公式:
整個式子由2項構成,x表示真實圖片,z表示輸入G網絡的噪聲;G(z)表示G網絡生成的圖片;D(x)表示D網絡判斷真實圖片是否真實的概率。D(G(z))是D網絡判斷G生成的圖片是否真實的概率,G希望盡可能的大,這時V(D,G)會變小[7]。D的能力越強,D(x)應該越大,D(G(x))應該越小,這時V(D,G)會變大,因此,式子對于D來說是求最大。
生成器的定義:
def G(w,name="G"):
with fluid.unique_name.guard(name + "/"):
w=fluid.layers.fc(y,size=1024,act='relu')
w=fluid.layers.batch_norm(y,act='relu')
w=fluid.layers.fc(y,size=128×7×7)
w=fluid.layers.batch_norm(y,act='relu')
w=fluid.layers.reshape(y,shape=(-1,128,7,7))
w=fluid.layers.conv2d(y,num_filters=64,filter_size=5,padding=2,act='relu')
w=fluid.layers.image_resize(y,scale=2)
w=fluid.layers.conv2d(y,num_filters=1,filter_size=5,padding=2,act='relu')
return y
判別器的定義:
def D(images,name="D"):
def conv_bn(input,num_filters,filter_size):
y=fluid.layers.conv2d(input=input,num_filters=num_filters,filter_size=filter_size,stride=1,bias_attr=False)
y=fluid.layers.batch_norm(y,act="leaky_relu")
return y
開始訓練后,訓練判別器D識別生成器G生成的假圖片。訓練判別器D識別真實圖片進行對比,訓練生成器G生成符合判別器D標準的假圖片,然后測試。
目標檢測模型為YOLOv3目標檢測模型[8]。YOLOv3目標檢測模型引用更加強大的特征提取網絡darknet-53使得計算速度大大加快[9]。darknet-53的網絡結構包含53個卷基層,借鑒殘差網絡Residual Network的做法,在一些層之間設置了快捷鏈路,最左側1列的1、2、8等數字表示多少個重復的殘差組件,每個殘差組件有2個卷基層和1個快捷鏈路,殘差組件結構如圖4所示[10,11]。

圖4 殘差組件結構
YOLOv3網絡使用了darknet-53前面的52層,YOLOv3網絡是一個全卷積網絡,大量使用殘差的跳層連接。使用這種殘差結構的好處是,保證網絡結構在很深的情況下,仍能收斂;網絡越深,表達的特征越好,分類和檢測的效果都會提升。由于大量減少了參數量,進一步減少了計算量。對象分類引用Logsitic支持多標簽以此增加檢測精度。
YOLOv3將輸入圖像分成S×S個格子,每個格子預測B個bounding box,每個bounding box預測內容包括Location(x,y,w,h)、Confidence Score和C個類別的概率,因此YOLOv3輸出層的channel數為B×(5+C)[12,13]。YOLOv3的loss函數也由3部分組成,Location誤差、Confidence誤差和分類誤差。
使用互聯網易于搜索到的數據集進行Gan網絡訓練,并在高性能的計算機進行計算得到較成熟的Gan網絡圖片生成模型,并使用Gan網絡模型生成大量圖片數據訓練YOLOv3目標檢測模型。
部署相關硬件,采集相關數據。通過對隨機采集到的30張的森林火焰圖片輸入掛載目標檢測模型的樹莓派4B上進行計算,得到識別目標的準確率,如圖5所示。

圖5 實際測試結果
經過訓練,模型的準確率逐步增高。隨著數據采集數量的增多,模型對于森林火焰的數據有較強的敏感性;通過部署到樹莓派4B,輸入視頻和圖片完成測試,可以精準地識別森林中的火焰和煙霧,并輸入相應的較高的準確率。
這種基于樹莓派4B森林防火系統采用深度學習模型完成對森林火焰的識別。經過實驗測試,通過Gan網絡的圖片生成模型以及基于YOLOv3的目標檢測模型均可以良好的工作,具備較好的可移植性。整個系統運行穩定、準確度高,具備較強的抗干擾性,具有一定的應用市場。