基于InteloneAPI的油锅爆燃预警系统
- 前言
- 一、方案介绍
- 1.系统概述
- 2.设计思路
- 二、方案实现
- 1.ResNet-18模型
- 2.Intel OneAPI AI Kit 使用
- 1.Intel® Neural Compressor:
- 2.Intel® Optimization for PyTorch*
- 三、方案价值
- 总结
前言
家居场景下,最容易起火的原因不是私拉电线、卧床吸烟也不是发热电器,而是厨房,厨房里的油锅最容易起火。大部分油锅起火、爆燃。如果不及时处理,火势会迅速蔓延。
本系统计划使用oneAPI AI开发工具,设计一套家政离人预警系统。针对无人看管、油面偏高、锅具位置摆放不当等原因引起的油锅起火进行预警。
通过AI识别爆燃火焰、配合物联网设备网关,进行关闸、消防报警等动作。实现油锅爆燃下的紧急干预处理,为用户减少财产损失。
一、方案介绍
1.系统概述
油锅爆燃预警系统是一款基于人工智能技术的安全预警设备,用于监测油锅状态,及时预警油锅爆燃事故的发生。该系统采用深度学习算法,利用摄像头+传感器采集油锅温度、烟雾、气体等多种数据以及实时图像,通过模型推理实现爆燃预警。
本系统由物联设备、摄像头、物联网网关、AI分析模块、预警系统等软硬件模块组成。主要以Intel OneAPI 实现AI 图像分析模块进行介绍。
2.设计思路
Intel OneAPI是一种用于高性能计算和人工智能的跨平台、跨架构的软件开发框架,它支持多种编程语言,如C++、Python等,以及多种硬件平台,如Intel Xe、GPU、FPGA等。使用Intel OneAPI可以轻松实现跨平台的高性能计算和人工智能应用。
针对油锅爆燃预警系统的设计,本次我们使用Intel OneAPI AI工具来构建解决方案。以下是方案的基本步骤:
-
收集数据:首先需要收集油锅爆燃的相关数据,包括温度、烟雾、气体等多种传感器数据。本次介绍的是图像分析模块,通过收集大量的爆燃火焰和非火焰图像来训练我们的模型。我们使用了开源的FIRESENSE数据集去挑选数据。
-
数据预处理:对于收集到的数据进行预处理,包括清洗、归一化、特征提取等操作。
input_image = cv2.resize(frame, (224, 224))
input_tensor = torch.tensor(input_image).permute(2, 0, 1).unsqueeze(0).float()
input_tensor /= 255
input_tensor -= torch.tensor([0.485, 0.456, 0.406]).reshape((1, 3, 1, 1))
input_tensor /= torch.tensor([0.229, 0.224, 0.225]).reshape((1, 3, 1, 1))
- 模型训练:使用收集到的数据来训练机器学习模型,我们使用Intel PyTorch等来训练模型。在训练模型时,需要考虑模型的参数、超参数、损失函数等因素。
- 模型评估:使用测试数据集来评估模型的性能,评估模型的准确性、稳定性等指标。
- 预警系统:将机器学习模型集成到预警系统中,使用传感器数据来实时监测油锅的状态,并使用模型预测结果来进行预警。
二、方案实现
1.ResNet-18模型
ResNet-18是深度残差网络(ResNet)的一种变体,由18个残差块(residual block)组成。这个模型可以用于图像识别任务。
首先从PyTorchvision库中加载预训练的ResNet-18模型。然后,我们定义了火焰识别的类别,并加载了一个测试图像。接着,我们使用transforms对图像进行预处理,将其转化为张量并输入ResNet-18模型进行推理。
...简单示意
model = torchvision.models.resnet18(pretrained=True)
2.Intel OneAPI AI Kit 使用
1.Intel® Neural Compressor:
Intel® Neural Compressor 旨在为TensorFlow、PyTorch、ONNX Runtime和MXNet等主流框架以及 Intel 扩展(如Intel® Extension for TensorFlow* 和 Intel® Extension for PyTorch*)提供流行的模型压缩技术,例如量化、剪枝(稀疏性)、蒸馏和神经架构搜索。
# 应用Intel® Neural Compressor压缩并保存压缩模型
compression_config = {
'algorithm': 'Quantization',
'params': {
'precision': 8,
'preserve_sparsity': False,
'mode': 'ASYMMETRIC',
'per_tensor_compression_ratio': 0.5
}
}
compressed_model = apply_compression(model, compression_config)
torch.save(compressed_model, 'fire_quantized.pth')
quantized_model = torch.load('fire_quantized.pth')
2.Intel® Optimization for PyTorch*
PyTorch 是一个基于主流 Torch 库的机器学习开源框架。英特尔® PyTorch*扩展为 PyTorch 提供了额外的优化,
-
安装PyTorch:首先,您需要安装PyTorch。您可以从PyTorch官方网站上下载并安装最新版本的PyTorch。确保您的PyTorch版本支持Intel Optimization for PyTorch。
-
安装Intel Optimization for PyTorch:从Intel官方网站上下载并安装最新版本的Intel Optimization for PyTorch、可以使用pip或者conda下载Intel Optimization for PyTorch。
-
导入PyTorch和优化器:在您的Python代码中,导入PyTorch和Intel Optimization for PyTorch优化器。
-
创建模型和优化器:创建一个PyTorch模型和一个Intel Optimization for PyTorch优化器。在创建优化器时,您需要指定要使用的优化器类型(例如AdamW)和超参数。
#使用optimize函数进行优化
quantized_model = ipex.optimize(quantized_model)
# 在最后一层输出之前添加一个全连接层
num_ftrs = quantized_model.fc.in_features
quantized_model.fc = torch.nn.Linear(num_ftrs, 2)
# 将模型转换为推理模式
quantized_model.eval()
- 训练模型:使用优化器来训练您的模型。可以使用PyTorch的内置函数train()或使用自己的训练循环。
# 使用量化模型进行推理
with torch.no_grad():
output = quantized_model(input_tensor)
predictions = torch.softmax(output, dim=1)
_, predicted_class = torch.max(predictions, dim=1)
# 在图像上绘制结果
cv2.putText(frame, classes[predicted_class.item()], (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
cv2.imshow('Fire Detection', frame)
- 测试模型:使用测试数据集来测试您的模型。
三、方案价值
- 实用价值
该系统应用场景广泛、可以在家居、家政行业进行广泛使用,由于厨房一般不安装烟雾报警,所以炒锅爆燃检测具有一定的实用价值。用户群体包含个人家庭用户,房屋租赁公司、长期家政服务公司。 - 抗风险性
对于合租房和家政公司,该系统可以为第三方减少不必要的消防安全风险,并对于已发生的爆燃事故,进行图像、视频的留证。为后续事故责任的认定提供数据支撑,所以该系统具备一定的经济价值和抗风险能力。 - 创新性
通过Intel工具使用,将物联网关与AI算法相结合,落地在厨房场景、与民生息息相关。该方案与传统的单一视频算法、或者物联网报警器不同,采用了软硬结合的方案。在保证物联设备识别准确度的情况下,提供了灵活性和可扩展性。
总结
该demo通过 intel-aikit-pytorch 使用预训练的ResNet-18模型 实现了炒锅爆燃的检测。
并通过使用ipex、apply_compression等工具提高了整体模型的效率。
经过本次大赛,学习使用了intel的开发套件,收获很多。
后续增加物联功能和、人脸抓拍功能可以完善该系统应用