訓練YOLOv7模型,開發AI火災監測
1. 準備數據集
數據集使用的是開源圖片,共 6k 張火災圖片,分別標注出??濃煙?
??和??火?
?兩類。
火
濃煙
項目采用??YOLO?
??訓練,我已經把數據轉成??YOLO?
??格式,并分好了訓練集和驗證集,見??dataset?
?目錄。
2. 訓練
訓練過程參考YOLOv7官網文檔即可。
修改data/coco.yaml文件,配置好訓練數據的路徑和類別。
下載預訓練模型yolov7.pt,然后就可以開始訓練了
3. 火災監測
訓練完成后,在yolov7目錄下的run目錄中,找到生成的模型文件——best.pt。
我訓練好的模型放在源碼weights目錄中,名為fire.pt,大家可以直接使用。
有了模型,我們用它開發一個監測程序了。
首先,需要自行下載 yolov7 源碼到當前工程里。
然后,安裝pytorch,并用pytorch加載訓練好的yolov7模型。
源碼中有一個火災視頻fire_video.mp4,可以用opencv讀取該視頻,用來測試檢測效果。
運行成功后,可以效果與文章開頭中的視頻一致。
可以把項目部署到嵌入式 GPU 上,如:jetson nano,來做實時檢測。開發一個云通信服務,一旦發生火災進行電話報警。
同時,還可以開發一個 APP ,將現場的視頻流回傳到服務器,APP可以實時看到監控效果,幫助決策。
4. 難點
其實用目標檢測做火災檢測還是有一些難點的。如,干擾樣本多,容易造成誤檢。再比如,標注不統一導致無法有效的計算mAP。
所以,最好我們能自定義損失函數和準召的計算方式。以召回為例,我們能檢測出圖片中有火災就算成功,而不一定非要檢測出多少個火苗和多少個煙霧。
當然,這類任務并非一定要通過目標檢測來做。有朋友跟我提出用分類任務、分割任務,我覺得都可以去嘗試。