徐小強, 張瑞琦, 冒 燕, 陳 旭
(武漢理工大學 自動化學院, 湖北 武漢 430070)
為保證水面上的安全,快速消滅水面火災已經(jīng)成為人們研究的重點.目前的消防艇主要采用人工滅火裝置,當遇到嚴重火情時需要同時出動多艘消防艇進行滅火,可能會對消防人員的人身安全產(chǎn)生威脅.與傳統(tǒng)的消防艇中由消防人員負責尋找火焰位置進行滅火不同,在無人消防艇中需要由無人艇自動尋找火焰區(qū)域進行滅火.如何檢測倒影、防止水面倒影影響火焰檢測,已成為無人消防艇應用中亟待解決的問題.
近幾年,國內(nèi)外研究者針對火焰顏色特征、形態(tài)特征及運動特征等提出了多種火焰識別方法[1-3].文獻[4]建立了在RGB色彩模式(即紅、綠、黃色彩模式)與HSV空間下的火焰識別模型,但是提取出來的火焰區(qū)域比較寬泛,火焰在水中的倒影區(qū)域也會被認為是火焰區(qū)域.文獻[5]提出了YCbCr空間的火焰識別模型,有效地利用火焰色彩信息提取了火焰區(qū)域,但是對于亮度高的火焰區(qū)域以及火焰倒影和火光區(qū)域識別效率低.文獻[6]提出了在HSI空間下的火焰分割模型,該方法對干擾魯棒性差,檢測出的火焰區(qū)域?qū)挿?
針對以上模型對水面上火焰識別的不足,筆者將卷積神經(jīng)網(wǎng)絡(luò)應用于目標識別中[7],判斷圖片中是否含有火焰圖像,然后結(jié)合YCbCr空間下的火焰識別方法,根據(jù)折射和反射后水中火焰倒影與火焰的亮度差,提出一種濾除掉水面上火焰倒影的火焰識別方法—基于YCbCr水面火焰識別方法.
為了分割出圖片中較為精確的火焰區(qū)域,利用卷積神經(jīng)網(wǎng)絡(luò)對圖片中是否含有火焰進行判斷.
使用卷積神經(jīng)網(wǎng)絡(luò)tensorflow框架[11-13]進行設(shè)計,對輸入圖片中是否含有火焰進行判斷.進行深度學習的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖1所示.
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
1) 為了獲得更多的樣本,采用對圖片矩陣重新調(diào)整像素為32×32×3,再將圖片隨機裁剪出5張像素為28×28×3的圖片,對圖片進行隨機水平翻轉(zhuǎn),將像素為28×28×3的圖片送入網(wǎng)絡(luò).
2) 卷積神經(jīng)網(wǎng)絡(luò)包括3個卷積層、3個池化層、一個全連接層和一個輸出層.① 第1個卷積層C1使用32個大小為2×2×3的卷積核,提取出32張像素為28×28的特征圖,每個卷積層之后采用relu激活函數(shù).② 第1個池化層P1是將第1個卷積層提取到的特征圖作為輸入的2×2最大池化層.③ 第2個卷積層C2使用64個大小為3×3×32的卷積核,提取出64張像素為14×14的特征圖,每個卷積層之后采用relu激活函數(shù).④ 第2個池化層P2是將第2個卷積層提取到的特征圖作為輸入的2×2最大池化層.⑤ 第3個卷積層C3使用128個大小為5×5×64的卷積核,提取出128張像素為7×7的特征圖,每個卷積層之后采用relu激活函數(shù).⑥ 第3個池化層P3是將將第3個卷積層提取到的特征圖作為輸入的2×2最大池化層.⑦ 全連接層(F1層)將第3個池化層得到的特征圖作為輸入.為了防止過擬合,全連接層在與輸出層相連之前,需要先進行隨機丟棄(保留率keep-prob=0.5).⑧ 輸出層采用softmax分類[14].
3) 損失函數(shù)如下所示:
Loss=-[ylabellg(yconv[0][1])+ (1-ylabel)lg(yconv[0][0])],
(1)
式中:Loss為損失值;ylabel為標簽輸出值;yconv[0][1]和yconv[0][0]分別為輸出是火和不是火的概率.
由于并沒有火焰識別的標準圖庫,筆者從網(wǎng)絡(luò)中收集了320張含有火焰和320張不含有火焰的圖片,對其大小進行重新調(diào)整[15],并從中進行隨機裁剪、翻轉(zhuǎn)后獲得1 600張含有火焰的圖片和1 600張不含有火焰的圖片.對最終獲得圖片中的70%作為訓練集,30%作為測試集.經(jīng)過測試,該網(wǎng)絡(luò)識別精度可以達到94.2%.
對于一張輸入圖片,通過卷積神經(jīng)網(wǎng)絡(luò)對圖片中是否含有火焰圖像進行判斷.若卷積神經(jīng)網(wǎng)絡(luò)識別結(jié)果為不含火焰,則直接輸出不含有火焰;若卷積神經(jīng)網(wǎng)絡(luò)識別結(jié)果為含有火焰,則對圖片進行進一步處理,分割出較為精準的火焰區(qū)域.
到了山西,不吃碗正宗的刀削面,那絕對算空走一趟。山西刀削面一講刀工,二講澆頭,小小一碗面,里面有很多門道。削面功夫全憑手的勁頭掌控,削出的面似空中飛舞的柳葉,又似水中暢游的銀魚,中厚邊薄,均勻有致,長短六寸,方為上品。
在YCbCr空間提取火焰圖像,是利用圖像的亮度、紅色信息以及藍色信息來提取火焰圖像.但是由于火焰燃燒劇烈的地方在圖像上一般呈現(xiàn)白色,此時利用亮度、紅色信息以及藍色信息來提取火焰圖像,就會導致火焰燃燒劇烈的地方并不會被識別為火焰區(qū)域,從而導致有較多的火焰區(qū)域被識別為非火焰區(qū)域.圖2-4分別為為火焰原圖、YCbCr空間火焰圖片及YCbCr空間火焰提取結(jié)果.對圖2中火焰進行提取,其轉(zhuǎn)換至YCbCr空間圖像如圖3所示,在YCbCr空間提取結(jié)果如圖4所示.
圖2 火焰原圖
圖3 YCbCr空間火焰圖片
圖4 YCbCr空間火焰提取結(jié)果
筆者采用一種自定義的火焰判斷方式.當YCbCr空間提取出火焰區(qū)域較為準確時,采用在YCbCr空間下利用圖像的顏色信息來提取火焰圖像;當YCbCr空間提取出火焰區(qū)域較為不準確時,則利用火焰的灰度值遠大于圖像中其他區(qū)域灰度值[16]的特征將火焰提取出來.圖5為火焰灰度圖.對圖2中火焰進行提取,采用水面火焰識別方法提取結(jié)果如圖6所示.
圖5 火焰灰度圖
圖6 水面火焰識別方法提取結(jié)果
在識別火焰時,火焰倒影區(qū)域與火焰區(qū)域存在顏色上較高的相似性,在YCbCr空間提取火焰圖像時會被誤判為火焰區(qū)域.人眼看到水中火焰的倒影是水面反射火焰的光進入人眼成像,但是火焰的光經(jīng)過水面反射時還會發(fā)生折射.由于火焰的光在經(jīng)過水面時,一部分發(fā)生反射,形成人眼中的火焰在水面上的倒影,一部分發(fā)生折射,沒有進入到人眼中,這樣就形成了水中火焰倒影亮度與火焰的區(qū)別.利用這一特點,在原YCbCr空間模型的基礎(chǔ)上更加強調(diào)對灰度值的要求,過濾掉灰度值低于閾值的像素點,進而濾除火焰在水面的倒影.
對于含有火焰的圖像,筆者利用以下5個步驟將圖像中火焰區(qū)域分割出來.
1) 將RGB火焰圖像轉(zhuǎn)換成灰度圖像.灰度圖像與彩色圖像相比能夠很好地體現(xiàn)出圖像的亮度信息.為了更好地看出圖像各個區(qū)域的亮度變化以及數(shù)據(jù)的處理,首先將RGB圖像轉(zhuǎn)換成灰度圖像,轉(zhuǎn)換公式如下:
Gray=0.299R+0.587G+0.114B,
(2)
式中:Gray為灰度值;R為紅色通道的信息值;G為綠色通道的信息值;B為藍色通道的信息值.
2) 將RGB火焰圖像轉(zhuǎn)換到Y(jié)CbCr顏色空間.YCbCr顏色空間可以與RGB空間進行線性變換.其變換公式[17]如下:
(3)
式中:Y為亮度信息;Cb為藍色信息;Cr為紅色信息.
3) 利用火焰顏色特征粗略提取火焰區(qū)域.在YCbCr顏色空間提取火焰,公式如下:
(4)
式中:Ymean、Crmean和Cbmean分別為亮度均值、紅色色差分量均值和藍色色差分量均值[18-19];x和y為像素點坐標.
4) 計算灰度平均值.鑒于當火焰亮度高時,在YCbCr空間提取火焰區(qū)域較為不準確;而當火焰較為暗淡時,在YCbCr空間提取火焰區(qū)域較為準確.筆者計算出整個圖像的灰度平均值和粗提取的火焰區(qū)域灰度平均值.
當出現(xiàn)如式(5)所示情況,認為在YCbCr空間提取出的火焰區(qū)域較為不準確,反之,則認為在YCbCr空間提取出火焰區(qū)域較為準確.
(5)
式中:fire_gray_mean為整圖像的灰度平均值;gray_mean為粗提取的火焰區(qū)域灰度平均值;a和b為選定閾值.
5) 提取火焰區(qū)域.圖7為灰度圖.由圖7可知,火焰區(qū)域的灰度值遠大于其他區(qū)域,當在YCbCr空間提取出火焰區(qū)域不準確時,則利用火焰區(qū)域的灰度值遠大于其他區(qū)域的特性提取火焰區(qū)域,即利用火焰的亮度遠大于其他區(qū)域的特性,將火焰區(qū)域提取出來.
圖7 灰度圖
當在YCbCr空間提取出火焰區(qū)域準確時,則直接利用在YCbCr空間提取出火焰區(qū)域,但這次提取火焰區(qū)域?qū)鹧娴牧炼忍匦砸筝^粗提取火焰區(qū)域時做了進一步改進,濾除火光和火焰倒影部分,即
(6)
為了驗證上述方法,進行了多次試驗(其中圖片均來源于網(wǎng)絡(luò)和視頻),選擇其中4張較為有代表性的圖片進行說明.圖8為待提取火焰區(qū)域圖片.對圖8圖片中圖像進行火焰區(qū)域提取.直接采用原始YCbCr空間模型進行火焰提取,提取出火焰區(qū)域如圖9所示.采用本研究中改進后水面火焰識別算法所提取出的火焰區(qū)域如圖10所示.
由圖9a和c可知:在原YCbCr空間顏色模型中提取圖片中火焰區(qū)域時,可能會將火焰亮度高的區(qū)域誤判為非火焰區(qū)域,從而只提取出火焰倒影和火光區(qū)域,未能將火焰的真實燃燒區(qū)域提取出來.從圖10a和c可以看出,改進之后的水面火焰識別算法完整地提取了火焰燃燒區(qū)域,對圖片中火光和倒影實現(xiàn)了較好的濾除效果,僅將倒影中亮度過高的一小部分識別為火焰區(qū)域.
圖8 待提取火焰區(qū)域圖片
圖9 原YCbCr空間顏色模型提取結(jié)果
圖10 改進的水面火焰識別算法提取結(jié)果
針對火焰在水面上燃燒時,在提取火焰區(qū)域時火焰與倒影之間特征相似的問題,筆者提出了一種水面火焰識別方法.這種改進的水面火焰識別方法可以準確地判斷出圖像中是否含有火焰圖像,有效過濾火焰倒影、火光等區(qū)域,提取出較為精準的火焰區(qū)域.改進的水面火焰識別方法還解決了當火焰亮度較高時,利用YCbCr空間模型識別出來的火焰區(qū)域有較大空洞的問題,因此該方法極具實用價值.后續(xù)的研究可針對不同風速時倒影濾除問題進行深入探討.