趙 洋,王藝鋼,靳永強,華 丹
(1.沈陽化工大學 計算機科學與技術學院,遼寧 沈陽 110142;(2.遼寧省化工過程工業(yè)智能化技術重點實驗室,遼寧 沈陽 110142)
為解決目前火災頻發(fā),消防設施和消防人員不足的問題,減少人民生命和財產安全損失,需要對火災做出更加快速而準確的檢測。目前傳統(tǒng)的煙火檢測通常借助傳感器檢測煙霧氣體特征和火焰紅外信息,這種檢測方法檢測精度低,響應速度慢,在智能化、抗干擾和成本等方面有待加強?;谝曨l的煙火檢測可以很好地彌補上述不足。視頻煙火檢測借助攝像頭傳輸?shù)囊曨l畫面,檢測煙火位置并提供豐富的現(xiàn)場狀況,便于采取相應的措施,及時解決火情。
近年來,不少學者從不同的角度研究了視頻煙火的檢測問題。文獻[4]根據(jù)人眼視覺注意機制,提出基于顯著性檢測和高斯混合模型的視頻煙霧分割方法,提高了檢測精度和速度。該算法過于依賴手工提取特征,算法魯棒性較差,難以應用于復雜的煙火檢測場景。文獻[5]針對視頻火災檢測算法泛化能力弱等問題,提出了一種基于ViBe和機器學習的算法,該算法依靠ViBe算法以及隨機森林和支持向量機組成的兩級分類器,對前景信息進行選擇性提取,再結合Hu矩陣訓練出決策分類器,提升檢測穩(wěn)定性。由于隨機森林和支持向量機等算法對特征提取的能力較弱,該算法存在分類效果較差,誤報率較高的問題。文獻[6]利用YCrCb顏色空間對捕獲的圖像進行分割,使用基于分群體融合的改進FOA算法搜索SVM最優(yōu)參數(shù)和懲罰因子,提升了對火災圖像的分類效果。該算法以參數(shù)量較大的元啟發(fā)式算法(Meta-Heuristic Algorigthm)為基礎,在檢測速度上不能滿足對視頻實時檢測的需求。上述方法主要依靠人工提取特征,算法的泛化能力不強,檢測精度和速度都難以滿足實時穩(wěn)定檢測的需求。
隨著深度學習的發(fā)展,使用卷積神經網(wǎng)絡(CNN)取代人工提取特征成為趨勢,眾多學者展開了將CNN應用到煙火檢測中的研究。文獻[7]通過CNN對火災圖像進行自動特征提取和分類,大幅提升了對煙火圖像分類的精度和速度,但該算法沒有深入應用到檢測任務中。文獻[8]提出了一種改進YOLOv3的火災檢測方法,通過改進特征提取網(wǎng)絡和多尺度檢測網(wǎng)絡,提高了檢測效果,但該算法模型尺寸較大,計算成本較高。文獻[9]將SSD算法與輕量化模型MobileNet結合,對實時火災圖像進行檢測,提升了算法的檢測速度,降低了模型復雜度,但在檢測精度上存在一定不足。上述深度學習方法在一定程度上提升了算法的檢測性能,但是并沒有完全平衡高檢測精度、實時檢測和小模型尺寸對算法的要求。
針對上述模型復雜度較高,檢測速度與檢測精度難以兼顧的問題,本文提出了一種基于改進SSD的視頻煙火檢測算法(GSSD)。首先,使用GhostNet輕量化網(wǎng)絡模型替換SSD算法中的VGG16網(wǎng)絡模型。相較于VGG16網(wǎng)絡模型,GhostNet網(wǎng)絡模型大幅度減少了模型的參數(shù)量,并在PASCAL VOC 2012數(shù)據(jù)集上具有較高的準確率。使用GhostNet網(wǎng)絡模型可以提高算法的檢測速度,減少模型的參數(shù)量。其次,在SSD算法的特征映射網(wǎng)絡中使用多尺度特征融合技術。通過下采樣和Concat拼接操作,對多尺度的特征圖進行融合,以提升模型對小目標物體的檢測能力。通過以上改進得到了GSSD算法,該算法有效改善了原始SSD算法檢測精度不高、檢測速度慢和模型參數(shù)量大的問題。在PASCAL VOC 2012數(shù)據(jù)集和自制的煙火數(shù)據(jù)集上對GSSD算法進行實驗。結果表明,該算法具有更高的檢測精度和速度,以及更小的模型復雜度。
SSD算法主要由骨干網(wǎng)絡、特征映射網(wǎng)絡和檢測網(wǎng)絡組成,其算法流程如圖1所示。
圖1 SSD算法流程
SSD算法使用改進的VGG16網(wǎng)絡模型作為骨干網(wǎng)絡??紤]到全連接層會干擾模型對特征位置信息的提取,將VGG16網(wǎng)絡中的兩個全連接層FC6和FC7替換為3×3卷積和1×1卷積。為進一步提取特征,在FC7層后添加4組卷積層:Conv6、Conv7、Conv8和Conv9,每組卷積層首先使用1×1卷積核進行下采樣,然后使用3×3卷積核進行特征提取。
特征映射網(wǎng)絡選取若干尺寸不一的特征圖,為檢測提供更多的特征信息。SSD算法選用6個卷積得到的特征圖為:Conv4_3、FC7、Conv6_2、Conv7_2、Conv8_2、Conv9_2。
在檢測網(wǎng)絡中,使用2個大小為3×3的卷積核對特征提取網(wǎng)絡的6張?zhí)卣鲌D進行卷積運算,其中一個卷積核輸出類別置信度,另一個為回歸提供對象位置信息。所有運算結果被合并后,轉移給損失計算函數(shù),然后迭代訓練直到模型收斂。
由于SSD算法采用改進的VGG16網(wǎng)絡模型作為骨干網(wǎng)絡,其僅僅依靠多層卷積進行特征提取,網(wǎng)絡結構較為單一,網(wǎng)絡模型中含有較多冗余計算。針對SSD算法的不足,本文通過相對應的改進提出了對視頻煙火檢測效果更優(yōu)的GSSD算法。
GhostNet是一種通過少量計算表征更多特征的輕量化卷積神經網(wǎng)絡。相較于MobileNet系列和ShuffleNet系列等輕量級網(wǎng)絡模型,GhostNet具有更高的準確率。各輕量化模型在PASCAL VOC 2012數(shù)據(jù)集上的比較結果見表1所列。由表1可知,GhostNet雖然具有較大的模型參數(shù)量,但準確率得到了大幅度提升,可以認為GhostNet相比其他輕量化模型具有一定優(yōu)勢。
表1 在PASCAL VOC 2012數(shù)據(jù)集上各輕量化網(wǎng)絡比較
GhostNet的核心思想是使用一系列線性運算代替部分卷積,減少推理計算量。這種結合卷積運算和線性運算的模塊叫做GhostNet module,其結構如圖2所示。
圖2 Ghost module網(wǎng)絡結構
GhostNet module將傳統(tǒng)的卷積分為三步。首先使用較少的卷積核生成第一部分特征圖;其次對該部分特征圖采用深度卷積(Depthwise Convolution)運算得到第二部分特征圖;最后將兩組特征圖通過Concat方式拼接,得到GhostNet module的運算結果。
為對比GhostNet module和VGG16中普通卷積的運算成本,分別計算所需的浮點計算量和運算時的參數(shù)量。當輸入特征圖的尺寸為××,輸出特征圖的尺寸為××,普通卷積核大小為×,通道卷積核大小為*×*,Ghost module中標準卷積數(shù)為/時,使用VGG16普通卷積的浮點計算量為:
Ghost module的浮點計算量為:
VGG16普通卷積的參數(shù)量為:
Ghost module的參數(shù)量為:
由公式(1)~公式(4)可以看出,相較于標準卷積運算,Ghost module壓縮了大約倍的浮點計算量和參數(shù)量。
通過對Ghost module的堆疊,可以得到GhostNet的兩種殘差結構(Ghost BottleNeck),如圖3所示。stride=1的Ghost BottleNeck(G1-bneck)串聯(lián) 2個 Ghost module用于特征提取;stride=2的Ghost BottleNeck(G2-bneck)在2個Ghost module之間添加了步長為2的深度卷積,使G2-bneck可以用于下采樣。
圖3 Ghost BottleNeck網(wǎng)絡結構
深層卷積層中的小目標經過多次卷積和池化操作后,容易丟失大量的特征信息;在淺層卷積層中存在目標特征提取不足,冗余信息過多以至于干擾檢測效果等問題。本文通過將淺層特征與深層特征進行多尺度融合的方式來改善。綜合考慮檢測精度與模型計算量,對算法進行改進,如圖4所示。
圖4 特征融合示意圖
多尺度特征融合分為三步。首先對Conv5_1層的特征圖做卷積運算,將通道數(shù)擴張到112個;其次將Conv5_6層特征圖上采樣到19×19,并將特征通道數(shù)由160個降為112個;最后將Conv5_1層、Conv5_5層和Conv5_6層的特征圖做Concat拼接,拼接后特征圖的通道數(shù)為336個。
Conv5_1層位于網(wǎng)絡較淺層,特征圖通道數(shù)較少,擁有較多的特征信息,在與Conv5_5融合前需要對其做進一步的特征提取。為加強對Conv5_1層特征圖的信息提取,采用步長為1,膨脹率為2,卷積核為3的空洞卷積進行運算。空洞卷積是一種在不做pooling損失信息的前提下,可以擴大卷積時的感受野,提高特征提取能力的卷積運算,其示意如圖5所示。
圖5 空洞卷積示意圖
空洞卷積的輸入與輸出特征圖的大小關系為:
式中:為填充像素的大??;為膨脹率;為步長;為卷積核大??;為輸出特征圖的尺寸;為輸入特征圖的尺寸。
Conv5_6層位于網(wǎng)絡較深層,特征圖尺寸較小,在與Conv5_5融合前需要通過上采樣增大特征圖的尺寸。對Conv5_6層特征圖的上采樣操作選用雙線性插值法。相較于轉置卷積,雙線性插值法不需要訓練新參數(shù),運行速度更快且操作簡單,更適用于對檢測速度和模型計算量有較高要求的視頻煙火檢測。
通過對SSD算法的骨干網(wǎng)絡以及特征融合模塊的改進得到GSSD算法,該算法網(wǎng)絡結構見表2所列。
表2 GSSD網(wǎng)絡結構
在模型訓練過程中,將Conv5_1層、Conv5_5層、Conv5_6層的輸出進行特征融合,作為第一張?zhí)卣鲌D,再選取Conv6、Conv7_2、Conv8_2、Conv9_2、Conv10_2特征圖。使用2個大小為3×3的卷積核對檢測網(wǎng)絡中的每個特征圖進行卷積運算,分別得到類別置信度和回歸信息。最后將計算結果合并傳遞給損失計算函數(shù)。
本文使用的數(shù)據(jù)集為PASCAL VOC 2012公共數(shù)據(jù)集和自制的煙火數(shù)據(jù)集。PASCAL VOC 2012數(shù)據(jù)集包含20個類別,5 717張用以訓練的圖片,5 823張用以驗證的圖片。自制的煙火數(shù)據(jù)集包含fire和smoke兩個類別,8 199張圖片,按照7∶2∶1的比例分配為訓練集、驗證集和測試集。由于自制的煙火數(shù)據(jù)集圖片數(shù)量有限,為了讓模型更好地學習目標特征和提高魯棒性,需要對數(shù)據(jù)做數(shù)據(jù)增強。本文對圖像進行90°、180°、270°旋轉和水平翻轉,如圖6所示。
圖6 數(shù)據(jù)增強
本文將通過訓練后模型檢測的平均精度(mean Average Precision,mAP)、模型參數(shù)量(Params)和模型推理速度(FPS)做對比,其中mAP由式(6)~式(9)計算:
式中:TP為真正例;FP為假正例;FN為負正例;為種類數(shù)。
為驗證GSSD算法的檢測性能,將GSSD算法與目標檢測效果良好的SSD、YOLOv2、YOLOv3模型分別在PASCAL VOC 2012數(shù)據(jù)集與煙火數(shù)據(jù)集上進行實驗對比,4種算法的性能測試結果見表3所列。
表3 GSSD算法與其他目標檢測算法的比較
在PASCAL VOC 2012數(shù)據(jù)集上,相比SSD算法,GSSD算法的檢測效果有較大幅度提升,mAP提高了2.8%,Params減少了84.64%,F(xiàn)PS提升了1.9倍。GSSD算法在SSD的基礎上進行相應改進和拓展,提高目標檢測的效果,顯著降低了模型參數(shù)量,提升了檢測速度。
與YOLO系列算法相比,GSSD比YOLOv2的mAP提高了19.2%,Params減少了92.5%,F(xiàn)PS提升了59%。YOLOv2算法的網(wǎng)絡結構較為簡單,僅依靠卷積層和池化層對特征進行提取,檢測精度較低。GSSD算法比YOLOv3的mAP降低了0.5%,Params減少了93.8%,F(xiàn)PS提升了70%。YOLOv3算法使用融入殘差結構的Darknet-53作為骨干網(wǎng)絡,雖然具有比GSSD高的檢測精度,但模型參數(shù)量較大,檢測速度不能滿足視頻檢測的需求。
在煙火數(shù)據(jù)集上,GSSD算法的mAP比SSD、YOLOv2和YOLOv3分別提高了4.8%、6.8%和0.9%。在4種算法中,GSSD對煙火的檢測精度最高,在檢測速度和模型的參數(shù)量方面具有較大優(yōu)勢,實驗證明了GSSD算法在煙火檢測中的可行性。GSSD與SSD算法對煙火數(shù)據(jù)集可視化檢測對比如圖7所示。
圖7 對煙火檢測數(shù)據(jù)集可視化結果對比
本文針對視頻煙火難以高精度實時檢測和模型參數(shù)量較大的問題,提出了GSSD算法。GSSD算法主要對SSD進行了骨干網(wǎng)絡改進和多尺度特征融合改進。通過以上改進,GSSD算法對視頻煙火檢測的性能得到了提高。
在PASCAL VOC 2012數(shù)據(jù)集上GSSD算法達到了86.7%的mAP,參數(shù)量為14.6 M,F(xiàn)PS為59。與主流目標檢測算法相比,GSSD算法具有更好的檢測效果,在縮小模型尺寸的同時,檢測精度與速度也有良好的表現(xiàn)。在自行設計的煙火數(shù)據(jù)集上,GSSD算法比SSD算法的mAP提高了4.8%,達到80.2%,參數(shù)量減少了84.64%,降為14.6 M,檢測速度提升了1.9倍,F(xiàn)PS達到了59。下一步將在網(wǎng)絡模型改進的基礎上,針對類火類煙目標的檢測進行研究,以提高算法的魯棒性。