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