火灾识别项目是基于昇腾Vision SDK,将火灾识别DenseNet模型部署到Atlas 200I DK A2上,实现对图像中是否有火灾进行识别的功能。
项目中用于火灾识别的是DenseNet模型,DenseNet 是一种灵活的架构,适用于各种计算机视觉应用,包括图片分类、对象识别和语义分割。
本项目能够能够针对火灾场景进行识别,并输出是否为火灾的结果。对于大多数火灾场景都能达到较好的识别效果,如在大型火灾、汽车失火、房屋失火以及较多烟雾的火灾场景都能够达到预期效果。对于较高分辨率的图像识别时,解码插件对图像处理会有较多耗时,最终整体能够满足25fps的性能需求。
以下为可能存在错误识别的情况: 1.当图像只拍摄到小部分火苗和少量烟雾时,会误将火灾场景错误地识别为没有火灾的场景。 2.当图像场景与火灾和烟雾相似时会被错误地识别为火灾场景。例如部分夕阳场景。
总的来说,该项目在大多数火灾场景下识别的准确度较高,但受限于原始模型的功能和性能,对于一些场景会出现识别错误。
火灾识别SDK流程图如图1-3所示:
本项目架构主要流程为:图片进入流中,将图片解码之后放缩到特定尺寸,再利用densenet模型对图像中是否为火灾场景进行推理,最后输出结果。
表2.1 项目方案架构中各模块功能:
序号 | 子系统 | 功能描述 |
---|---|---|
1 | 图像输入 | 调用Vision SDK的appsrc输入图片 |
2 | 图像解码 | 调用Vision SDK的mxpi_imagedecoder用于图像解码,当前只支持JPG/JPEG/BMP格式 |
3 | 图像放缩 | 调用Vision SDK的mxpi_imageresize,放缩到224*224大小 |
4 | 火灾识别 | 调用Vision SDK的mxpi_tensorinfer,选取torch框架下densenet模型对图像进行火灾预测 |
5 | 结果输出 | 调用Vision SDK的appsink,提供端口从流中获取数据,用于输出结果 |
本工程名称为fire_detection,工程目录如下所示:
.
|-- README.md
|-- data
| |-- other
| `-- test
|-- envs
| `-- atc_env.txt
|-- figures
| `-- 火灾检测SDK流程图.png
|-- main.py
|-- models
| `-- pth2onnx_310.py
|-- pipeline
| `-- fire.pipeline
|-- run.sh
`-- test.py
其中,
data
目录用于存放测试数据集envs
目录为环境变量配置说明文件models
目录用于存放模型文件main.py
为实现代码pipeline
目录存放Vision SDK的流程编排文件fire.pipelinerun.sh
为推理启动脚本test.py
为测试脚本步骤1 按照表1下载并安装配套版本的CANN软件包和Vision SDK软件包,并source对应的环境变量(安装成功后会打印设置环境变量的命令)。
依赖软件 | 版本 | 说明 |
---|---|---|
CANN | 8.0.RC2.alpha003 社区版 | 用于提供模型转换ATC工具 |
Vision SDK | 6.0.RC1 社区版 | 用于提供pipeline插件等工具 |
Python(推荐) | 3.9.2 | 用于运行*.py文件 |
步骤2 安装python依赖
pip install -r requirements.txt
步骤3 登录开发者套件,创建工作空间文件夹;登录开发者套件后,执行下面命令:
cd /home/HwHiAiUser/samples
mkdir gitee && cd gitee
步骤4 拉取Gitee昇腾社区样例代码仓
git clone https://gitee.com/ascend/ascend_community_projects.git
步骤5 进入火灾识别样例目录,并切换代码分支
cd ascend_community_projects/fire_detection
git checkout 310B
步骤6 下载模型文件和测试数据集 下载模型文件:
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Atlas%20200I%20DK%20A2/DevKit/models/24.0.RC1/models.zip --no-check-certificate
解压模型文件夹压缩包,得到模型文件:
unzip models.zip
下载测试数据集:
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Atlas%20200I%20DK%20A2/DevKit/models/24.0.RC1/data.zip --no-check-certificate
解压测试数据集夹压缩包,得到测试数据:
unzip data.zip
数据集举例,有火灾的图片如下:
没有火灾的图片:
步骤6 运行模型推理脚本,查看推理过程,得到火灾识别数据集上模型检测精度结果
python main.py
结果如下:
耗时时间: 8.572492999519454 ms
-----------------Destroy All Streams-----------------
精度: 94.15041782729804 %
总耗时: 3293.4406139929706 ms 总图片数: 359
平均单张耗时: 9.173929286888498 ms
一共测试了359张图片,耗时3.29秒,平均单张图片耗时9.17毫秒,火灾识别精度94.15%。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。