李 琳,曹麗英
(吉林農(nóng)業(yè)大學(xué) 信息技術(shù)學(xué)院,吉林 長春 130118)
隨著我國經(jīng)濟建設(shè)飛速發(fā)展,人們生活水平不斷提高,天然氣普及到家家戶戶,各種家電層出不窮,導(dǎo)致對柴草的需求一再減少,農(nóng)田里的秸稈無處銷售,農(nóng)民朋友便選擇燃燒秸稈[1]。但燃燒秸稈對環(huán)境影響極為嚴(yán)重,不僅容易引起“火燒連營”的火災(zāi)事故,燃燒產(chǎn)生的煙灰更污染了空氣,降低可見度,極易引起交通事故,不完全燃燒產(chǎn)生的氣體會引發(fā)人體呼吸道疾病。因此,如何在火焰和煙霧形成早期進行檢測具有重大的理論和實際意義[2]。
農(nóng)田火災(zāi)的監(jiān)控系統(tǒng)多數(shù)來自于農(nóng)田中高塔上的攝像頭和無人機等設(shè)備,而這種圖像中往往包括多種物體,比如建筑、道路、汽車和作物等,并且圖像的清晰度受天氣、光照等因素影響[3]。除此之外,圖像中的煙霧和火焰相對于整幅圖像來說很小,而且背景也很復(fù)雜。
傳統(tǒng)的煙火檢測方法主要采用傳感器等技術(shù),但是安裝大量傳感器的成本很高,野外放置易受灰塵、氣流和人為因素的干擾,因此檢測精度較低。煙霧檢測在國內(nèi)外已經(jīng)做了大量研究,并且基于圖像的煙霧檢測方法也在不斷提出,主要研究方向是結(jié)合煙火圖像的動靜態(tài)特征進行檢測[4]。典型的動靜態(tài)特征包括目標(biāo)顏色、運動方向、運動范圍和時間軌跡等[5]。
深度學(xué)習(xí)是機器學(xué)習(xí)研究的重要領(lǐng)域,相比于傳統(tǒng)算法,深度學(xué)習(xí)算法可降低硬件成本,不依賴人工特征工程。目前已有學(xué)者將深度學(xué)習(xí)應(yīng)用于煙霧檢測方向,王中林[6]使用改進的支持向量機進行煙霧檢測;馮路佳等人[7]通過將提取到的運動背景放入卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)中進行煙霧檢測;段鎖林等人[8]通過對火焰區(qū)域進行RGB灰度處理進行火焰區(qū)域檢測。
本文結(jié)合深度學(xué)習(xí),使模型可以自我學(xué)習(xí)煙霧和火焰的特征,同時利用視頻監(jiān)控設(shè)備和無人機等設(shè)備對農(nóng)田中的秸稈燃燒行為進行數(shù)據(jù)采集,及時對農(nóng)田中秸稈燃燒產(chǎn)生的煙霧和火焰進行檢測,可以在秸稈燃燒初期進行相應(yīng)的檢測,從而實現(xiàn)快速、大范圍的煙火警告。此外,該方法安裝和使用成本適中,有利于進行推廣。Single Shot MultiBox Detector(SSD)算法[9]是目前深度學(xué)習(xí)目標(biāo)檢測中較優(yōu)秀的算法之一,在保證了精度的同時,又提高了檢測速度,可以達到實時檢測的需求。
SSD是目前主要的檢測框架之一,該方法于2016年由Wei Liu提出,是基于單個神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法,可以一次完成目標(biāo)定位與分類?;A(chǔ)網(wǎng)絡(luò)參考了VGG16網(wǎng)絡(luò),為了連接基礎(chǔ)網(wǎng)絡(luò)的特征映射圖而補充了輔助卷積層。預(yù)測卷積層是預(yù)測特征映射圖每個點的矩形框信息和所屬類別信息,從不同層獲取特征并進行預(yù)測,隨著層次結(jié)構(gòu)的增加,語義變得更加復(fù)雜,SSD網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。SSD算法使用直接卷積的方式對特征圖進行預(yù)測并獲取結(jié)果。SSD特有的網(wǎng)絡(luò)結(jié)構(gòu)使得采用3×3×q的卷積核即可對m×n×q的特征圖進行檢測[10],從而減少計算量。SSD使用低層特征圖檢測小目標(biāo),高層特征圖檢測大目標(biāo)。
圖1 SSD網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 SSD network structure
SSD在預(yù)測時參考了Faster R-CNN[11]中候選框的方法,但為了減小訓(xùn)練時的難度,設(shè)置了比Faster R-CNN更少的4個先驗框,有效提高目標(biāo)檢測速度。SSD算法雖然能夠多層次提取特征,但是隨著層次加深,形狀易發(fā)生變化的目標(biāo)語義會變得更加抽象,特征提取難度大大增加,因此實現(xiàn)不同尺度多種語義層次的特征提取,才能真正意義上幫助模型提升檢測精準(zhǔn)度。SSD算法在進行小目標(biāo)檢測時效果一般,常常出現(xiàn)漏檢現(xiàn)象。
為了使SSD算法更好地契合農(nóng)田煙火檢測場景,解決SSD對小目標(biāo)檢測精度不高、訓(xùn)練過程易產(chǎn)生梯度下降和梯度爆炸等問題,對經(jīng)典SSD網(wǎng)絡(luò)結(jié)構(gòu)進行修改:在經(jīng)典SSD模型的基礎(chǔ)網(wǎng)絡(luò)VGG16的每2個卷積層中引入殘差網(wǎng)絡(luò)(Residual Network,ResNet)結(jié)構(gòu)的思想,共組成4個ResNet+VGG16的結(jié)構(gòu);結(jié)合特征金字塔網(wǎng)絡(luò)的融合思想,增強SSD網(wǎng)絡(luò)對圖像信息進行表達輸出,更好地展現(xiàn)出圖像各個維度的信息,提升小目標(biāo)的檢測效率,使用組歸一化替代批量歸一化避免數(shù)據(jù)量小對模型的影響,改進后的SSD網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 改進SSD網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Improved SSD network structure
在進行煙火目標(biāo)檢測時,先驗框的設(shè)置極其重要,先驗框尺寸為:
(1)
1.2.1 引入ResNet模塊
ResNet是在深度學(xué)習(xí)中用于提取主干特征的一種網(wǎng)絡(luò)模型。在CNN中,網(wǎng)絡(luò)層數(shù)越多,模型對事物的表征能力越強,但同時會產(chǎn)生性能快速下降的情況,這種情況稱為“退化”。為解決該問題,ResNet網(wǎng)絡(luò)應(yīng)運而生[12]。提出殘差的概念,殘差結(jié)構(gòu)有2種,本文引入的殘差結(jié)構(gòu)如圖3所示。
圖3 殘差結(jié)構(gòu)Fig.3 Residual structure
殘差模塊的數(shù)學(xué)公式為:
f(x)=h(x)-x,
(2)
式中,f(x)為殘差模塊中的殘差;x為殘差模塊的輸入部分;h(x)為經(jīng)過第1次線性變化并通過激活函數(shù)處理的輸出結(jié)果。
改進SSD網(wǎng)絡(luò)模型將待預(yù)測的圖片進行多層次卷積時,在VGG16網(wǎng)絡(luò)的每2次卷積中進行殘差學(xué)習(xí),由于存在前后維度不一致的情況,此時使用步長為2的池化層進行降采樣操作,可以避免無用參數(shù)對時間復(fù)雜度的影響,有效提高特征整合度。
1.2.2 引入特征金字塔思想
特征金字塔網(wǎng)絡(luò)是一種高效提取圖片多維度特征的方法,可以使不同尺度特征圖之間互相融合,將淺層細節(jié)與高層語義結(jié)合并提高圖像識別率,同時對小目標(biāo)有更高的特征映射分辨率[13-16],可以解決經(jīng)典SSD算法不能區(qū)分不同維度特征信息的缺點,但由于農(nóng)田復(fù)雜的背景會對目標(biāo)分辨率產(chǎn)生干擾,給FPN特征提取帶來困難。為解決該問題,本文在引入FPN思想時對FPN結(jié)構(gòu)進行調(diào)整,改進后結(jié)構(gòu)如圖4所示。
圖4 改進特征金字塔網(wǎng)絡(luò)Fig.4 Improved feature pyramid network
改進后的FPN結(jié)構(gòu)可以進行跨層級連接,將高層級特征跨層與低層級特征融合,使用雙線性插值代替臨近插值,得到更優(yōu)秀的上采樣效果。
改進SSD網(wǎng)絡(luò)模型對Conv7采用雙線性插值方法進行上采樣操作,與Conv4_3進行特征融合作為Conv4_3的特征圖,同理將Conv8_2進行上采樣與Conv7進行融合作為Conv7的特征圖,將經(jīng)過卷積的Conv11_2,Conv10_2,Conv9_2,Conv8_2與融合后的Conv7和Conv4_3組成一個新的特征金字塔通過非極大值抑制進行預(yù)測。
1.2.3 歸一化方法
經(jīng)典SSD算法進行歸一化處理時使用批量歸一化(Batch Normalization,BN)[17]。BN在對大量數(shù)據(jù)進行歸一化處理時效果較好,能夠有效減少訓(xùn)練過程中產(chǎn)生的誤差,但在對少量數(shù)據(jù)進行歸一化時,其訓(xùn)練產(chǎn)生的誤差會隨著數(shù)據(jù)量減少而逐漸增大[18]。為了使模型在數(shù)據(jù)量較少的情況下也能有效減少誤差,本文采用組歸一化(Group Normalization,GN)實現(xiàn)模型的訓(xùn)練。GN將數(shù)據(jù)進行分組,每個組中的數(shù)據(jù)進行歸一化,最后將各組結(jié)果合并,其數(shù)學(xué)表達式為:
(3)
(4)
式中,σ為標(biāo)準(zhǔn)差;μ為均值;x為待歸一化處理的數(shù)據(jù)。S在GN中定義如式(4)所示,其中C/G代表通道數(shù)量。
本文實驗在64位Windows10操作系統(tǒng)下,運行內(nèi)存32 GB,GPU為GeForce RTX 2080Ti(11 GB顯存),處理器為Inter(R) Core(TM) i9-10900K CPU@3.00 GHz。采用Python3.7和Tensorflow 1.10.0框架實現(xiàn)模型的搭建以及模型的訓(xùn)練及驗證。
由于截至目前還沒有比較權(quán)威的煙霧和火焰檢測標(biāo)準(zhǔn)數(shù)據(jù)集,因此本實驗數(shù)據(jù)部分來自網(wǎng)絡(luò)圖片平臺,部分來自項目拍攝,其中包括在自然環(huán)境下,田間高塔定點拍攝圖像和無人機拍攝圖像,經(jīng)人工篩選,共計3 500張,圖片樣本如圖5所示。通過LabelImg圖像標(biāo)注工具中的矩形框?qū)D像進行人工標(biāo)注,標(biāo)注時盡量沿待檢測煙霧和火焰邊緣進行標(biāo)注,以免進行模型訓(xùn)練時不能夠準(zhǔn)確地學(xué)習(xí)到煙霧和火焰的特征,避免模型不易飽和、誤檢率高的問題。
圖5 圖像樣本集Fig.5 Image sample set
在SSD模型中,數(shù)據(jù)增強是一種有效增加數(shù)據(jù)集樣本數(shù)量的方式,從而提升模型的泛化能力以及魯棒性[19]。數(shù)據(jù)增強可以將現(xiàn)有圖像進行縮放操作,對圖像中的小目標(biāo)進行放大可以更明顯地觀察其內(nèi)在結(jié)構(gòu),提高小目標(biāo)檢測效果。數(shù)據(jù)增強還可以通過裁剪方式,保留待檢測目標(biāo)未被遮擋的部分。本文采用如圖6所示的隨機縮放、隨機旋轉(zhuǎn)和隨機翻轉(zhuǎn)等方式對數(shù)據(jù)進行增強。當(dāng)隨機生成的裁剪框與目標(biāo)的交并比(Intersection over Union,IOU)不滿足要求,則要求刪除;如IOU滿足但目標(biāo)中心點不包含在隨機裁剪框也要求刪除,經(jīng)過數(shù)據(jù)增強后數(shù)據(jù)集擴充至7 000張圖片。
(a) 隨機縮放
(b) 隨機旋轉(zhuǎn)
(c) 隨機翻轉(zhuǎn)
整體實驗過程如圖7所示。
圖7 實驗流程Fig.7 Experimental flow chart
將數(shù)據(jù)集隨機劃分為訓(xùn)練集和測試集,分別包含5 400張和1 600張圖片。訓(xùn)練集用于網(wǎng)絡(luò)模型的訓(xùn)練,測試集用于確定模型后進行測試實驗。
實驗采用隨機梯度下降的方法來訓(xùn)練優(yōu)化模型[20]。該方法可以在每次迭代過程中只選取一個隨機樣本數(shù)據(jù)用來更新模型參數(shù),因此迭代次數(shù)大幅提升,但每次的學(xué)習(xí)是非??焖俚?,并且可以進行在線更新。
首先將數(shù)據(jù)集分辨率統(tǒng)一為300 pixel×300 pixel,然后使用訓(xùn)練集來訓(xùn)練網(wǎng)絡(luò)模型。將激活函數(shù)學(xué)習(xí)率設(shè)置為e-4,學(xué)習(xí)率衰減因子設(shè)置為0.97,最大迭代步數(shù)為2×104,訓(xùn)練過程中每進行1×103次迭代后將所得模型進行保存,當(dāng)訓(xùn)練結(jié)束后將目標(biāo)檢測準(zhǔn)確度作為評判標(biāo)準(zhǔn)來選取最優(yōu)模型。使用測試集對模型進行驗證實驗,并對實驗結(jié)果進行分析。
在本實驗中,使用每秒傳輸幀數(shù)(Frames pre Second,F(xiàn)PS)、平均精度均值(Meanaverage Precision,mAP)和平均精度(Average Precision,AP)作為目標(biāo)檢測評估參數(shù)[21]。FPS表示1 s能夠處理的圖片數(shù)量,值越大說明算法的識別速度越快,mAP是目標(biāo)檢測算法中常用的綜合評估多個類別下的平均準(zhǔn)確率,AP是衡量單個類別下算法的準(zhǔn)確率。AP和mAP為:
AP=∑precision/N,
(5)
mAP=∑AP/M,
(6)
式中,precison表示正確檢測圖像數(shù)量在算法檢測出圖像數(shù)量中的占比;N為目標(biāo)類別圖片總數(shù);M為類別總數(shù)。
本文在經(jīng)典SSD網(wǎng)絡(luò)模型的基礎(chǔ)網(wǎng)絡(luò)中引入殘差模塊,將改進后的SSD模型與經(jīng)典SSD模型使用相同訓(xùn)練數(shù)據(jù)集進行訓(xùn)練,當(dāng)模型達到飽和后使用相同測試數(shù)據(jù)集進行對比實驗,實驗結(jié)果如表1所示。
表1 改進SSD模型與經(jīng)典SSD模型性能對比Tab.1 Performance comparison between improved SSD model and classical SSD model
由表1可以看出,改進SSD模型與經(jīng)典SSD模型相比較,訓(xùn)練時間有明顯縮短,并且在檢測速度上提升極為明顯,識別準(zhǔn)確率也高于經(jīng)典SSD模型。
經(jīng)典SSD模型使用多尺度特征融合方式從不同層抽取不同尺度特征進行預(yù)測,無上采樣過程;FPN結(jié)合多尺度特征融合思想,將頂層通過上采樣與低層特征進行跨層級融合,且每層都進行獨立預(yù)測。本實驗在改進SSD模型中引入FPN并與原有的多尺度特征圖進行對比,共進行3次測試,測試結(jié)果如表2所示。
表2 FPN與多尺度特征圖性能對比Tab.2 Performance comparison between FPN and multiscale feature map
由表2可以看出,在改進SSD模型中結(jié)合FPN思想后使模型檢測精度有較大提升,由于FPN中上采樣使得頂層與低層融合,因此在檢測速度上稍遜于多尺度特征圖。
在模型訓(xùn)練時,對數(shù)據(jù)進行歸一化的方法極其重要。本次實驗在引入FPN的改進SSD模型中分別使用組歸一化和批量歸一化2種歸一化方法對相同數(shù)據(jù)集進行對比測試,測試結(jié)果如表3所示。
表3 組歸一化與批量歸一化性能對比Tab.3 Performance comparison between GN and BN
由表3可以看出,使用組歸一化替代批量歸一化,在數(shù)據(jù)量較小時,識別準(zhǔn)確率更高。
為比較改進后的SSD模型更適用于農(nóng)田場景下的煙火圖像檢測,在本次實驗中使用改進SSD模型分別與經(jīng)典SSD模型、YOLOv3模型、Faster R-CNN模型使用相同數(shù)據(jù)集進行模型訓(xùn)練,訓(xùn)練過程中每進行1×103次迭代后將所得模型進行保存,經(jīng)過2×104次迭代后,4種模型分別生成20個模型,模型準(zhǔn)確率曲線和損失曲線如圖8和圖9所示。
圖8 模型準(zhǔn)確率Fig.8 Model accuracy
圖9 模型損失曲線Fig.9 Model loss curve
模型訓(xùn)練的實質(zhì)是從不斷迭代的過程中尋找最小損失值的過程。由圖8可以看出,隨著迭代次數(shù)增加模型準(zhǔn)確率不斷提高,最終趨于穩(wěn)定。由圖9可以看出,YOLOv3,F(xiàn)aster R-CNN,經(jīng)典SSD和改進SSD 四種模型分別在0.5×104,0.7×104,0.7×104和1.0×104次迭代時損失曲線趨于平緩,并且分別在1.5×104,1.6×104,1.8×104和1.3×104次迭代時損失曲線趨于收斂,模型達到飽和,此時模型準(zhǔn)確率最高,因此選擇這4個模型進行后續(xù)測試實驗。從準(zhǔn)確率曲線和損失曲線中可以看出,改進后的SSD模型收斂速度更快,收斂效果更好,準(zhǔn)確度更高。
為了驗證本文提出的改進SSD神經(jīng)網(wǎng)絡(luò)模型能夠有效識別圖片中的煙火小目標(biāo),將改進的SSD模型與經(jīng)典SSD模型、YOLOv3模型和Faster R-CNN模型使用相同的測試數(shù)據(jù)集進行實驗,并對得到的結(jié)果進行分析,實驗結(jié)果如圖10所示。
圖10 煙火目標(biāo)檢測效果Fig.10 Smoke and flame detection effect
由圖10可以看出,4種模型均能夠?qū)D片中的煙霧圖像進行檢測,改進SSD模型能夠有效對圖片中的煙霧和火焰目標(biāo)進行檢測,其他3種模型均存在較為明顯的漏檢現(xiàn)象;圖片中煙火圖像相對較小,YOLOv3模型、Faster R-CNN模型和經(jīng)典SSD模型未能有效識別,而本文所采用的模型能更好地識別小目標(biāo)。不同煙火檢測模型的測試結(jié)果統(tǒng)計如表4所示。
表4 煙火目標(biāo)檢測模型對比Tab.4 Comparison of smoke and flame target detection models
通過使用不同的網(wǎng)絡(luò)模型對相同測試集圖片中煙霧、火焰圖像檢測生成的結(jié)果進行分析,可得到如下結(jié)論:
① 從對圖片中圖像較小的火焰識別結(jié)果來看,引入殘差思想后的SSD模型結(jié)合FPN可以有效地將淺層細節(jié)與高層語義相結(jié)合,并使用組歸一化方法進而大幅度提升圖像中較小火焰識別的精準(zhǔn)度。與YOLOv3模型相比,在煙霧識別上AP值提升20.4%,在火焰識別上AP值提升16.6%。與Faster R-CNN模型相比,在煙霧識別上AP值提升21.6%,在火焰識別上AP值提升19.1%。與經(jīng)典SSD網(wǎng)絡(luò)模型相比,在煙霧識別上AP值提升18.0%,在火焰識別上AP值提升17.6%。
② 在使用相同測試集進行實驗的情況下,改進SSD模型相對于YOLOv3模型、Faster R-CNN模型和經(jīng)典SSD模型在檢測準(zhǔn)確度上均有較大提升,實驗結(jié)果表明,mAP值分別提高了18.5%,20.3%和17.7%。
③ 從圖像檢測速度來看,YOLOv3模型比經(jīng)典SSD模型和Faster R-CNN模型的效率更高,由于本文提出的模型在經(jīng)典SSD模型的結(jié)構(gòu)上進行改進,速度提升更為明顯,改進后的SSD算法FPS比YOLOv3模型高18,比Faster R-CNN模型高30,比經(jīng)典SSD模型高24。
本文提出了一種基于改進SSD算法的煙火圖像檢測方法,可以在農(nóng)田秸稈燃燒等行為產(chǎn)生煙霧和火焰的初期進行有效的監(jiān)測,為有關(guān)環(huán)保部門及時提供預(yù)警。煙火識別的核心問題在于提取有效的煙霧和火焰的特征。在使用深度學(xué)習(xí)對煙霧火焰檢測分類的基礎(chǔ)上,解決了傳統(tǒng)CNN計算量大、占用存儲空間大和計算時間長的問題。將改進后的SSD煙火檢測模型與YOLOv3模型、Faster R-CNN模型和經(jīng)典SSD模型進行仿真實驗,可以看出改進后模型對煙火目標(biāo)檢測更精確,尤其對小目標(biāo)的識別定位更加精準(zhǔn),同時在檢測速度方面有較大提升。在接下來的研究中將繼續(xù)擴充數(shù)據(jù)集并對網(wǎng)絡(luò)結(jié)構(gòu)進行更深層次優(yōu)化,使模型達到更加優(yōu)秀的效果。