1. 项目背景与核心需求火灾检测系统在工业安全、森林防护和城市安防等领域具有重大应用价值。传统基于传感器的检测方法存在响应延迟、误报率高的问题而基于计算机视觉的方案能够实现早期预警和精准识别。这个毕设项目选择卷积神经网络(CNN)作为核心技术主要解决三个核心问题实时性需要在视频流中达到每秒25帧以上的处理速度准确性在复杂背景下区分真实火焰与干扰源如红色灯光、夕阳等泛化能力适应不同场景室内、室外、夜间等的火灾检测2. 技术方案设计2.1 网络架构选型经过对比实验最终采用改进的YOLOv5s架构主要考虑以下因素速度与精度平衡YOLOv5s在COCO数据集上达到27.1mAP的同时保持7ms/帧的处理速度部署友好支持ONNX格式导出兼容TensorRT加速可扩展性便于后续添加注意力机制等改进模块网络结构调整要点# 模型配置文件yolov5s_fire.yaml backbone: # 减少深层卷积层数适应火焰特征 [[-1, 1, Conv, [32, 3, 2]], # 0-P1/2 [-1, 1, Conv, [64, 3, 2]], # 1-P2/4 [-1, 3, C3, [64]], [-1, 1, Conv, [128, 3, 2]], # 3-P3/8 [-1, 6, C3, [128]], [-1, 1, Conv, [256, 3, 2]], # 5-P4/16 [-1, 9, C3, [256]], [-1, 1, Conv, [512, 3, 2]], # 7-P5/32 [-1, 3, C3, [512]], [-1, 1, SPPF, [512, 5]], # 9 ]2.2 数据集构建自建FireDataset2024数据集包含三个关键步骤数据采集真实火灾场景从公开数据集(如FireNet、FD-Dataset)筛选2000样本模拟火灾使用烟雾机和红色灯光制造可控场景负样本包含夕阳、车灯、焊接火花等干扰源数据标注使用LabelImg标注火焰区域和烟雾区域采用YOLO格式标注包含火焰、烟雾两类标签数据增强策略色彩扰动调整HSV空间参数模拟不同光照条件运动模糊模拟摄像头抖动情况随机遮挡增强模型抗干扰能力3. 关键实现细节3.1 特征提取优化针对火焰的动态特性在Backbone中增加以下改进动态卷积层替换部分静态卷积公式如下y α·Conv1(x) (1-α)·Conv2(x)其中α由小型网络动态生成增强对火焰形态变化的适应能力多尺度特征融合在Neck部分引入BiFPN结构加强浅层纹理特征与深层语义特征的融合3.2 损失函数设计采用改进的CIoU Loss增加火焰区域权重class WeightedCIoULoss(nn.Module): def __init__(self, fire_weight1.5): super().__init__() self.fire_weight fire_weight def forward(self, pred, target): # 常规CIoU计算 ciou_loss 1 - calculate_ciou(pred, target) # 火焰区域权重调整 fire_mask (target[..., 4] 1) # 火焰类别标签 weighted_loss torch.where(fire_mask, ciou_loss * self.fire_weight, ciou_loss) return weighted_loss.mean()4. 训练与调优4.1 训练策略采用两阶段训练方案预训练阶段使用COCO预训练权重初始化冻结Backbone仅训练检测头学习率0.01batch_size32微调阶段解冻全部层采用余弦退火学习率调度加入CutMix数据增强关键超参数配置optimizer: SGD momentum: 0.937 weight_decay: 0.0005 lr0: 0.01 # 初始学习率 lrf: 0.2 # 最终学习率倍数 warmup_epochs: 34.2 性能优化技巧模型量化训练后动态量化PTDQ减少模型体积测试表明INT8量化后精度损失1%推理速度提升2.3倍TensorRT加速生成FP16精度的engine文件启用DLA核心加速NVIDIA平台5. 部署方案5.1 边缘计算部署硬件选型对比设备推理速度(FPS)功耗(W)成本(元)Jetson Nano12101500Raspberry PiIntel NCS21881200昇腾31035152500推荐方案室内场景树莓派NCS2组合工业场景昇腾310芯片方案5.2 系统集成报警逻辑设计class FireAlertSystem: def __init__(self, model_path): self.model load_model(model_path) self.buffer deque(maxlen10) # 10帧缓存 def process_frame(self, frame): # 推理 detections self.model(frame) # 连续检测逻辑 self.buffer.append(len(detections) 0) if sum(self.buffer) 6: # 10帧中6帧检测到火焰 trigger_alarm()6. 实测效果与优化方向在测试集上达到以下指标准确率98.2%误报率1.3%推理速度28FPS(1080p)典型误检案例分析焊接火花因光谱特征相似导致误报强烈反光金属表面反射形成类火焰区域优化方向加入红外通道信息引入时序建模3D CNN开发小样本增量学习方案