李珍輝,魯靜文,陳鏡伊,劉 鵬,龔德峰
(湖南工程學院 計算機與通信學院,湘潭 411104)
近年來,圖像識別技術飛速發(fā)展,在火災檢測上也有了相關的應用.隨著科學的發(fā)展,計算機視覺和人工智能技術也有了“井噴式”的發(fā)展.
在圖像識別中有很多優(yōu)秀的算法.傳統(tǒng)的圖像識別算法包括微分算子邊緣檢測算法、Canny邊緣檢測算法、角點檢測算法、卷積神經(jīng)網(wǎng)絡等[1].本文將以改進的卷積神經(jīng)網(wǎng)絡來進行森林火災檢測,該算法以原始數(shù)據(jù)圖像為輸入信息,利用卷積核對輸入的圖像進行卷積能有效地從大量樣本中得出相應的特征,避免了復雜的特征提取過程.
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡目標檢測算法需要使用大量的數(shù)據(jù)來對網(wǎng)絡參數(shù)進行訓練,會花費大量的時間,并且森林火災數(shù)據(jù)屬于小樣本數(shù)據(jù)[2].因此,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡算法需要進一步改進,本文通過選取更好的梯度算法和進行模型微調(diào),對傳統(tǒng)算法進行了改進.
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡會選用ResNet模型、VGG模型等分類網(wǎng)絡來進行森林火災圖片的訓練.卷積神經(jīng)網(wǎng)絡用于森林火災探測的優(yōu)點是能從大量的樣本中有效地學習森林火災相應特征,其中包含了多個卷積層和池化層[3],在輸出層之前通過全連接層對網(wǎng)絡卷積池化提取出的特征在樣本空間進行映射,通過大量的訓練來提取森林火災特征:
(1)網(wǎng)絡掃描輸入的真實圖像用以提取特征.卷積的作用就是提取特征,卷積層有兩個關鍵的操作,分別為局部關聯(lián)和窗口滑動.主要是通過窗口滑動計算每一個區(qū)域的特征值,卷積操作的公式如下:
(2)激活圖以棧的形式排列,每個圖像對應于所使用的濾波器.圖像經(jīng)過濾波器之后,輸出的就叫作激活層activation.
(3)通過下采樣對激活圖進行壓縮[4].n代表輸入圖片的大小,M為輸出圖像的大小,S代表步長,F(xiàn)*F為每個卷積核的大小,P為特征圖邊緣補充大小.計算公式如下:
(4)對下采樣的激活圖進行過濾,生成一組新的激活圖.
(5)全連接層為每個節(jié)點的輸出分配一個標簽.對于森林火災檢測這種二分類問題來說,只需要分配有火或無火標簽.
遷移學習是一種機器學習方法,是指將一個訓練好的模型運用在一個新的任務中[5],如圖1所示.通過使用他人已經(jīng)訓練好的權重,即使只有很小的數(shù)據(jù)集,也有可能獲得良好的表現(xiàn).其中遷移學習有三個好處,分別是更高的起點、更高的斜率、更高的漸進.
圖1 遷移學習原理圖
考慮到大部分數(shù)據(jù)或任務是相關的,可以通過遷移學習的方式將學習到的模型參數(shù)以某種方式與新模型共享,從而優(yōu)化模型并加快模型的學習效率,而不是像大多數(shù)網(wǎng)絡那樣從頭開始學習[6].
刪除原來的Softmax層,并創(chuàng)建自己的Softmax單元來輸出二分類問題,用來輸出是否有林火.之前的所有層都被視為凍結.對于凍結網(wǎng)絡中的所有參數(shù),只需訓練與Softmax相關的參數(shù)即可.
在以圖像為輸入的建模預測問題中,經(jīng)常將其應用于遷移學習.本文以森林火災圖像為輸入,進行遷移學習.圖像處理中常用的三種模型:VGG模型、ResNet模型、Inception模型.[7-9]
Keras提供的預訓練模式的基本信息如表1所示.
表1 Keras提供的預訓練模型
對于分類網(wǎng)絡來說不免會遇到以下三個問題,第一,參數(shù)越多,數(shù)據(jù)集有限的情況下,會導致過擬合的問題.第二,網(wǎng)絡越大,計算復雜度就越高.第三,網(wǎng)絡越深,梯度越容易消失.
本文實驗使用的是InceptionV3的模型,由表1可知,其準確率以及參數(shù)數(shù)目比較符合森林火災圖像的訓練.InceptionV3是對InceptionV2進行了改進,主要改進了兩個方面,首先是對Module模型進行了優(yōu)化,在Inceotion Module的分支中添加了分支.其次是將一個大的二維卷積拆分成了兩個小的一維卷積.這種非對稱的卷積結構拆分在處理復雜空間特征和增加特征多樣性等方面的效果比對稱卷積結構拆分更好,還減少了計算量[10-11].InceptionV3主要有三種網(wǎng)絡結構,如圖2、圖3、圖4所示.
圖2 8*8
圖3 17*17
圖4 35*35
2014年,InceptionV1誕生,主要是將傳統(tǒng)網(wǎng)絡結構中的全連接層替換成了全局平均池化層,極大地降低了參數(shù)量,在InceptionV3模型中,將二維卷積層拆分成兩個一維卷積層,降低了參數(shù)數(shù)量,也減少了過擬合的現(xiàn)象.
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡采用的優(yōu)化器為最速下降法(GD),本文將采用隨機最速下降法(SGD)對算法進行優(yōu)化.假定優(yōu)化的函數(shù)是f(x),優(yōu)化的方法就是針對訓練樣本上的目標函數(shù)找到其最優(yōu)解.
(1)GD算法找到其最小值的方法就是每次沿著當前位置的導數(shù)方向走一小步.在t+1時刻,更新迭代公式為:
GD算法有兩個缺點:一是運算速度慢;二是可能會陷入鞍點(saddle point)并且GD算法走不出鞍點,鞍點在優(yōu)化過程中正交函數(shù)求導為0,但是不管在任何軸上都不是一個局部最優(yōu)點.
(2)在大規(guī)模的問題中,GD算法在每次迭代中需要很高的計算復雜度,而SGD算法在每次迭代時是隨機采取一個數(shù)據(jù)樣本來計算此時的梯度方向,SGD的計算復雜度與樣本的數(shù)量無關,大大減少了計算復雜度.隨著SGD算法的隨機梯度下降,每次的權重更新只利用數(shù)據(jù)集中的一個樣本來完成,即一個epoch過程只有一次迭代和一個更新數(shù)據(jù).在t+1時刻,更新迭代計算公式為:
SGD的算法公式為:
綜上所述,使用SGD算法可以完美地解決這兩個問題,不僅速度快,也可以更好地收斂.
SGD和GD的對比結果如圖5所示.
圖5 SGD和GD對比圖
本文一部分數(shù)據(jù)來自百度和谷歌森林火災圖片,通過網(wǎng)絡獲得了大量的森林火災圖片,數(shù)據(jù)來自百度AI公開數(shù)據(jù)集《森林火焰圖片》、英國Durham University的Dunnings和Andy教授課題組公開的火災數(shù)據(jù)集,該數(shù)據(jù)集主要包含野外各種環(huán)境下的火災圖片.由于收集的圖片尺寸大小有差別,本文通過統(tǒng)一尺寸標準化的方式將所有圖片調(diào)整成了224*224,并且整理成為一個數(shù)據(jù)集,如圖6所示.
圖6 數(shù)據(jù)樣例圖
整理出來的數(shù)據(jù)集分為兩類,分別是用于訓練的1800張圖片和用于驗證的200張圖片.
本文在windows10上,使用谷歌開源的tensorflow2.1.0以及tensorflow內(nèi)嵌的keras,開發(fā)語言選用python3.7.6,在pycharm中進行實驗.
本文將采用訓練準確度(Training accuracy)、驗證準確度(Validation accuracy)、訓練損失(Taining loss)和驗證損失(Validation loss)來對比傳統(tǒng)算法和改進后的算法.訓練:輸入有標簽的樣本到模型中,找出一組權重和偏差,使所有樣本的平均損失“更小”.損失指模型預測值與準確值之間的誤差.
(1)本文對改進前后的算法在訓練過程中的表現(xiàn)進行對比,如圖7、圖8、圖9、圖10所示.
圖7 傳統(tǒng)算法準確度
圖8 傳統(tǒng)算法損失
圖9 改進后算法準確度
圖10 改進后算法損失
(2)改進算法訓練表現(xiàn):
通過上述訓練的表現(xiàn)得出的實驗結果如表2所示.
表2 算法改進前后實驗結果對比
圖7和圖9從訓練準確度的指標來對比.在經(jīng)過20個時期的訓練后,得到了改進后模型的驗證準確度高于傳統(tǒng)模型的驗證準確度.
圖8和圖10從損失的指標來對比.可以看到,傳統(tǒng)的損失過大,損失函數(shù)主要是用來衡量神經(jīng)網(wǎng)絡輸出值Y’和真實值Y之間的差距,改進后的模型更加接近真實值.
不難看出,改進后的算法從準確度和損失值的角度來看,都比傳統(tǒng)的算法更加準確.
從數(shù)據(jù)集中隨機選取三組森林圖片,使用本文訓練好的模型做火災檢測,如圖11、圖12、圖13所示.
圖11 第一組火災檢測
圖12 第二組火災檢測
圖13 第三組火災檢測
通過實驗發(fā)現(xiàn),使用傳統(tǒng)的CNN模型經(jīng)過20個時期的訓練后,得到了94.83%的訓練準確度和87.50%的驗證準確度.訓練損失和驗證損失分別為0.169%和0.25%.而改進后的inceptionV3經(jīng)過5個時期的訓練,得到了96.17%的訓練準確度和94.43%的驗證準確度,以及0.108%的訓練損失和0.110%的驗證損失.可以看出,使用改進后的inceptionV3模型可以得到更好的森林火災識別效果.
時代在發(fā)展的同時,圖像識別的技術也在不斷發(fā)展,以前的人工檢測林火的方法已經(jīng)過時,取而代之的是用圖像檢測技術來檢測林火,通過卷積神經(jīng)網(wǎng)絡可以對輸入的林火圖片自動提取特征.本文對傳統(tǒng)的卷積神經(jīng)網(wǎng)絡算法進行了改進,使林火檢測效果得到進一步的改善.
在卷積神經(jīng)網(wǎng)絡算法的研究中,還有很多的拓展,比如使用煙霧來判別林火,往往林火產(chǎn)生時,煙霧是伴隨其產(chǎn)生的.可以綜合煙霧和火焰來進行林火檢測.未來還需要研究出更好的方法來解決和改善圖像識別中的問題.