作者/圖片提供:影像打火隊
本案例為《2021 Intel DevCup x OpenVINO Toolkit》概念組入選作品,特別邀請該團隊撰文分享其開發歷程、技術架構及成果,讓更多開發者可以借鏡學習。
開發動機
閃燃是一種可怕的火場現象,原本我們選擇的主題是火災,但是深入研究討論後了解:火場中的「閃燃」現象號稱是消防員的天敵,最容易在一瞬間令消防員致命。若消防員無法及時判斷出閃燃前的徵兆並加以應變,將導致大量無法挽救的傷亡。
根據內政部對於一般火災的說明,將火災成長可分為四個階段,即:成長期(growth period)、閃燃(flashover)、燃燒最盛期(fully-developed period)、以及衰退期(decay period)。
在成長期,火災一般大致遵循的速率成長(為火災的潛伏期,可視為未發生明火的期間),也就是燃燒熱釋放率與「燃燒時間的平方」成正比。依據可燃物的種類及分布而有不同的火災成長係數(fire growth coefficient, [kW/s2]),舉例來說中等速度成長(medium)的值為0.01172 [kW/s2],而極快速(ultrafast)成長火災為0.1876[kW/s2]。火災成長速率及其常見情境如表一,其對應的火災成長的曲線如圖一。
(圖片來源:內政部消防署)目前,消防員在判斷閃燃的發生與否,仍然是依靠資深消防員的「火場經驗」,因此若能以影像辨識火場中閃燃發生的前兆,便能早一步提醒消防員積極應對閃躲,減少消防員的死亡率。此即為我們決定齊心協力完成此一作品的原因之一。
決定題目之後,接下來就是收集訓練資料,雖然網路上有很多的文字描述的資料,但是圖片資料卻異常的少,我們在YT上以關鍵字搜尋閃燃的相關影片後,進行截圖產生訓練資料集,當作是訓練的丹藥材拿到了,但在影像辨識時,這算初等素材必須煉化,於是把原始丹藥材(照片檔)放入Tensorflow進行訓練,經過7749天的煉化比賽想必都已經結束許久,快速有效率的工具這時候就派上用場,主辦單位派出使者送出三昧真火(Intel® Neural Compute Stick 2 and Open Source OpenVINO™ Toolkit),先把個加速器放進火爐內養著,終於在子時閘門關閉前送件,完成複賽!
模型訓練與部署
火災現場的狀況瞬息萬變,於是我們採用分類器的方法,希望能加快環境AI判斷的時效,此次訓練我們提供數千張照片,分成「閃燃發生」、「一般火災」、「無火災」這三大類,以Tensorflow建立CNN分類器進行訓練。
這次我們採用CNN的類神經網路模型,三層卷積及二層傳統類神經分類器,其架構如下:
- 第一層卷積是Conv2D 128個3×3卷積核,加上一層MaxPooling池化層
- 第二層卷積是64個3×3卷積核,加上一層MaxPooling池化層
- 第三層卷積是64個3×3卷積核,加上一層MaxPooling池化層
轉平面層後,接上傳統類神經分類器:
- 第一層是128個神經元
- 第二層是64個神經元
最後輸出層為3個神經元。
在傳統分類器的部份使用都有Dropout(0.2)避免過擬(OverFit)的狀況發生。
經過30個世代長時間訓練後,正確率接近99%了,而且可以看到訓練與驗證的曲線也相當完美匹配,並無過擬的狀況發生。
由於未來我們希望能使用在微型電腦上,例如樹莓派的自走車,可以讓機器人先進火場探路,無閃燃可能性後,消防員再進入火場,因此就必須把上面的模型檔佈署到樹莓派這種小型電腦上,此時我們發現一個非常大的問題。儘管我們僅使用了CNN分類器,而非運算更複雜的物件偵測器,但是辨識的FPS仍然都小於1,也就是代表自走車沒辦法快速的分辨現場狀況,這樣我們的研究對於火場的辨識就沒什麼幫助了。
這時我們採用OpenVINO架構加上Intel® Neural Compute Stick 2,發現辨識速度提升到20 fps以上,這樣就能符合我們的需求了。
預測的展望
最後感謝團隊裡的大家來自於不同的工作領域,除了上班時間不同外,部分人員晚上還有進修課程,更有人必需空出時間照顧小孩,因此,每次要安排大家都可以的開會時間,顯得格外困難,最後大家依著激昂的鬥志以及想要完成作品的心,選擇在半夜開會,曾經凌晨三點大家還在集思廣義,完全忘記隔天仍需早起上班工作,過程雖然辛苦卻又充實。
初次參加經驗略遜於其他隊伍,因此希望在人氣獎的部分做些加強,於是開始輸出街景圖、組裝消防車、以手機拍攝短片並加以後製,希望透過影音的方式,將作品內容簡單地呈現,以吸引更多的票。
決賽的發表會,我先是被滿滿的記者媒體的大排場嚇到,再看到很多厲害的教授、學生的作品琳琅滿目,滿滿的技術層面又富含創意,幾乎可以直接包裝成商品發售,含金量之高,真的是震懾住我了!深刻體會到這場比賽真是不簡單!
- 【OpenVINO開發案例】降低消防救災風險! 閃燃預警通知 - 2022/05/10