当前位置: 首页 > 科技观察

训练YOLOv7模型,开发AI火灾监测

时间:2023-03-18 23:28:48 科技观察

1。准备数据集数据集使用开源图片,共6k张火焰图片,分别用烟雾和火焰标注。FireandSmoke项目是用YOLO训练的。我把数据转成YOLO格式,分成训练集和验证集。查看数据集目录。2.训练训练过程可以参考YOLOv7官网的文档。修改data/coco.yaml文件,配置训练数据的路径和类别。下载预训练模型yolov7.pt,然后开始训练。3.火情监控训练完成后,在yolov7目录下的run目录下找到生成的模型文件——best.pt。我训练的模型放在源码的weights目录下,命名为fire.pt,大家可以直接使用。模型就位后,我们用它来开发监控程序。首先需要下载yolov7源码到当前项目中。然后,安装pytorch,用pytorch加载训练好的yolov7模型。fire_detector=torch.hub.load('./yolov7','custom','./weights/fire.pt',source='local')源码里有个火视频fire_video.mp4,可以通过opencv读取视频来测试检测效果。ret,frame=cap.read()results=self.fire_detector(img_cvt)pd=results.pandas().xyxy[0]#drawdetectionframeforobjinpd.to_numpy():box_l,box_t=int(obj[0]),int(obj[1])box_r,box_b=int(obj[2]),int(obj[3])obj_name=obj[6]如果obj_name=='smoke':box_color=(0,0,255)box_txt='检测到浓烟'else:box_color=(0,255,0)box_txt='检测到大火'frame=cv2.rectangle(frame,(box_l,box_t),(box_r,box_b),box_color,2)frame=cv2_add_chinese_text(frame,box_txt,(box_l,box_t-40),box_color,25)运行成功后,效果可以和文章开头的视频一致。该项目可以部署到嵌入式GPU,如jetsonnano,进行实时检测。开发云通讯服务,在发生火灾时报警。同时也可以开发APP,将直播视频流传回服务器。APP可以实时看到监控效果,帮助决策。4.难点事实上,利用目标检测来进行火灾检测,仍然存在一些困难。例如,如果干扰样本较多,则很容易造成误检。再比如,标签的不一致导致无法有效计算mAP。所以最好能自定义lossfunction和quasi-call的计算方式。以召回为例,我们可以检测到图片中发生火灾即为成功,但不一定要检测到多少火苗、多少烟。当然,这类任务不一定要通过目标检测来完成。有朋友向我提出任务分类和任务划分,我觉得可以试试。