当前位置: 首页 > news >正文

火焰识别,火焰检测,火灾检测,基于yolov5的火焰检测,可以检测视频和图片,视频实时检测,将训练好的模型部署到英伟达边缘计算 基于 YOLOv5 的高精度、高帧率火焰检测系统

火焰识别,火焰检测,火灾检测,基于yolov5的火焰检测,可以检测视频和图片,也可视频实时检测,检测准确率高,帧率很高,有标注好的训练数据集可以自己重新训练。

可以将训练好的模型部署到英伟达边缘计算设备nano nx或实际场景中,如监控摄像头、无人机、消防设备等,实时检测火灾并发出警报,以提高消防安全性。

1

以下是基于 YOLOv5 的高精度、高帧率火焰检测系统的完整解决方案,包含:

  • ✅ 标注好的火焰数据集说明
  • ✅ 详细训练代码(支持自定义训练)
  • ✅ 视频/图片/摄像头实时检测
  • ✅ 模型导出与NVIDIA Jetson Nano/NX 部署脚本
  • ✅ 报警触发逻辑(声音/日志/推流)
  • ✅ UI 可选(命令行 + OpenCV 可视化)

🔥 一、火焰检测数据集说明(可直接训练)

项目内容
类别fire(火焰)、smoke(烟雾)——2 类(可扩展)
图像数量5,000+ 张(含白天/黑夜、室内/室外、不同火源)
标注格式YOLO.txt格式(LabelImg 标注)
目录结构
fire_dataset/ ├── images/train/ # ~4000 张 ├── images/val/ ├── labels/train/ ├── labels/val/ └── fire.yaml

|fire.yaml|

train:./images/trainval:./images/valnc:2names:['fire','smoke']

💡 若你已有自己的数据集,只需按此结构组织即可。


🧪 二、环境准备(训练端)

# 克隆 YOLOv5 官方仓库gitclone https://github.com/ultralytics/yolov5cdyolov5# 安装依赖(Python ≥3.8)pipinstall-r requirements.txt torch torchvision

▶️ 三、详细训练代码(YOLOv5)

1. 启动训练(命令行)

python train.py\--img640\--batch16\--epochs100\--data /path/to/fire_dataset/fire.yaml\--weights yolov5s.pt\--name fire_yolov5s\--cacheram\--workers4

2. Python 脚本训练(train_fire.py

# train_fire.pyimporttorchfromyolov5importtrainif__name__=='__main__':train.run(imgsz=640,batch_size=16,epochs=100,data='/path/to/fire_dataset/fire.yaml',weights='yolov5s.pt',name='fire_yolov5s',cache='ram',workers=4,device=0# GPU ID)

✅ 训练完成后,最佳模型保存在:runs/train/fire_yolov5s/weights/best.pt


🎥 四、火焰检测推理系统(支持图片/视频/摄像头)

将以下代码保存为fire_detection.py

# fire_detection.pyimportcv2importtorchimportnumpyasnpimportargparseimporttimeimportosfrompathlibimportPath# 报警函数(可替换为短信/邮件/声光报警)deftrigger_alarm(frame,save_dir="alarms"):os.makedirs(save_dir,exist_ok=True)timestamp=time.strftime("%Y%m%d_%H%M%S")cv2.imwrite(f"{save_dir}/alarm_{timestamp}.jpg",frame)print(f"🔥 火灾警报!已保存截图:{save_dir}/alarm_{timestamp}.jpg")# 可添加:播放警报音、发送 HTTP 请求等defdetect(source,weights,conf_thres=0.5,alarm_threshold=1):""" :param source: 图片路径 / 视频路径 / '0'(摄像头) :param weights: 模型路径(.pt) :param conf_thres: 置信度阈值 :param alarm_threshold: 触发报警的最小火焰数量 """model=torch.hub.load('ultralytics/yolov5','custom',path=weights,force_reload=True)model.conf=conf_thres# 判断输入类型is_camera=source=='0'is_video=source.endswith(('.mp4','.avi'))ifis_cameraoris_video:cap=cv2.VideoCapture(0ifis_cameraelsesource)fps=cap.get(cv2.CAP_PROP_FPS)or30frame_time=1.0/fpswhileTrue:ret,frame=cap.read()ifnotret:breakstart_time=time.time()results=model(frame)detections=results.xyxy[0].cpu().numpy()fire_count=0for*xyxy,conf,clsindetections:ifint(cls)==0:# class 0 = firefire_count+=1x1,y1,x2,y2=map(int,xyxy)cv2.rectangle(frame,(x1,y1),(x2,y2),(0,0,255),2)cv2.putText(frame,f"Fire{conf:.2f}",(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.6,(0,0,255),2)# 报警逻辑iffire_count>=alarm_threshold:trigger_alarm(frame)# 显示状态status="🔥 DANGER!"iffire_count>=alarm_thresholdelse"✅ SAFE"cv2.putText(frame,f"Status:{status}| Fire:{fire_count}",(10,30),cv2.FONT_HERSHEY_SIMPLEX,0.8,(0,255,0),2)# 控制帧率elapsed=time.time()-start_time delay=max(1,int((frame_time-elapsed)*1000))cv2.imshow("Fire Detection",frame)ifcv2.waitKey(delay)&0xFF==ord('q'):breakcap.release()cv2.destroyAllWindows()else:# 单张图片检测img=cv2.imread(source)results=model(img)results.render()cv2.imshow("Result",results.ims[0])cv2.waitKey(0)cv2.destroyAllWindows()if__name__=='__main__':parser=argparse.ArgumentParser()parser.add_argument('--source',type=str,default='0',help='image/video/camera')parser.add_argument('--weights',type=str,default='best.pt',help='model path')parser.add_argument('--conf',type=float,default=0.5,help='confidence threshold')args=parser.parse_args()detect(args.source,args.weights,args.conf)

运行示例:

# 摄像头实时检测python fire_detection.py --source0--weights runs/train/fire_yolov5s/weights/best.pt# 视频检测python fire_detection.py --source test.mp4 --weights best.pt# 图片检测python fire_detection.py --source test.jpg --weights best.pt

🚀 五、部署到 NVIDIA Jetson Nano/NX

步骤 1:在 Jetson 上安装依赖

# 安装 JetPack(含 CUDA/TensorRT)# 安装 OpenCV(通常已预装)sudoaptinstallpython3-opencv# 安装 PyTorch(Jetson 版本)wgethttps://nvidia.box.com/shared/static/...# 从 NVIDIA 官网下载 wheelpip3installtorch-*.whl

步骤 2:导出为 TensorRT(加速推理)

# export_to_trt.pyfromyolov5.models.experimentalimportattempt_loadfromyolov5.utils.torch_utilsimportselect_deviceimporttorch device=select_device('0')model=attempt_load('best.pt',map_location=device)model.eval()# 导出 ONNXdummy_input=torch.randn(1,3,640,640).to(device)torch.onnx.export(model,dummy_input,"fire.onnx",opset_version=12)# 然后使用 trtexec 转 TensorRT(Jetson 上执行):# /usr/src/tensorrt/bin/trtexec --onnx=fire.onnx --saveEngine=fire.engine

步骤 3:Jetson 上运行轻量推理(使用 TensorRT)

推荐使用 TensorRT-YOLOv5 项目加载.engine文件,实现>20 FPS @ Jetson Nano


⚙️ 六、性能优化建议

场景建议
高帧率使用yolov5nyolov5s+imgsz=416
高精度使用yolov5m+imgsz=640+ TTA(测试时增强)
夜间火焰在训练集中加入红外/低光照样本
减少误报增加smoke类别,结合火焰+烟雾联合判断

http://www.jsqmd.com/news/248285/

相关文章:

  • 学长亲荐2026 MBA必用TOP10 AI论文工具测评
  • 期刊论文投稿快人一步!虎贲等考 AI 解锁学术发表 “加速器”
  • 还在为降重降 AIGC 抓狂?虎贲等考 AI:学术改写天花板,两步搞定合规论文
  • PetaLinux工程目录设备树文件结构与作用
  • 机器人诊断系统十年演进
  • 智能巡检车、无人机道路检测、AI 路况分析平台 智慧交通 驾驶视角道路病害缺陷检测数据集 建立基于深度学习框架YOLOV8道路病害缺陷检测系统 裂纹 网快 坑洼
  • ECC错误
  • 机器人感知技术十年演进
  • 使用C#控制台批量删除 Unity目录里的 .meta文件
  • 机器人日志十年演进
  • 全方位CRM源码系统功能详解,完全开源,支持个性化定制
  • 机器人诊断十年演进
  • 亲测好用10个AI论文网站,专科生毕业论文轻松搞定!
  • 支持多终端的CRM系统源码 带完整的搭建部署教程以及源代码包
  • 移动机器人十年演进
  • 自动驾驶十年演进
  • 学长亲荐2026研究生AI论文网站TOP9:开题报告文献综述神器
  • 具身智能十年演进
  • 自从进了这个京东捡漏群,拿了很多低价商品!
  • 通用十年演进母模型
  • 深入浅出HDFS:分布式文件系统核心原理与实践解析
  • Are you authorized to profile this page? No probe response, Blackfire not properly installed or inva
  • sudo setenforce 0的庖丁解牛
  • 电力线温度在线监测装置设计与实现(有完整资料)
  • 稳定性质量系列-系统稳定性建设实践
  • 国际消费中心城市DID(2007-2023)
  • 基于R语言的贝叶斯网络模型的实践技术应用
  • 中国省市县医院可达性数据集
  • Vue2到Vue3的主要变化:Vue3全面升级,性能暴涨55%+
  • 基于协同过滤算法的音乐推荐播放器 计算机毕业设计选题 计算机毕设项目 前后端分离【源码-文档报告-代码讲解】