1. 准备数据集
数据集使用的是开源图片,共 6k 张火灾图片,分别标注出浓烟和火两类。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

火

浓烟
项目采用YOLO训练,我已经把数据转成YOLO格式,并分好了训练集和验证集,见dataset目录。

2. 训练
训练过程参考YOLOv7官网文档即可。
修改data/coco.yaml文件,配置好训练数据的路径和类别。
下载预训练模型yolov7.pt,然后就可以开始训练了

3. 火灾监测
训练完成后,在yolov7目录下的run目录中,找到生成的模型文件——best.pt。
我训练好的模型放在源码weights目录中,名为fire.pt,大家可以直接使用。
有了模型,我们用它开发一个监测程序了。
首先,需要自行下载 yolov7 源码到当前工程里。
魔乐社区
天翼云和华为联合打造的AI开发者社区,支持AI模型评测训练、全流程开发应用
102 查看详情

然后,安装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]# 绘制检测框for obj in pd.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]if 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 上,如:jetson nano,来做实时检测。开发一个云通信服务,一旦发生火灾进行电话报警。
同时,还可以开发一个 APP ,将现场的视频流回传到服务器,APP可以实时看到监控效果,帮助决策。
4. 难点
其实用目标检测做火灾检测还是有一些难点的。如,干扰样本多,容易造成误检。再比如,标注不统一导致无法有效的计算mAP。
所以,最好我们能自定义损失函数和准召的计算方式。以召回为例,我们能检测出图片中有火灾就算成功,而不一定非要检测出多少个火苗和多少个烟雾。
当然,这类任务并非一定要通过目标检测来做。有朋友跟我提出用分类任务、分割任务,我觉得都可以去尝试。
以上就是训练YOLOv7模型,开发AI火灾监测的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/833059.html
微信扫一扫
支付宝扫一扫