# 火灾烟雾检测
## 内容
* [项目说明](#项目说明)
* [安装说明](#安装说明)
* [数据准备](#数据准备)
* [模型选择](#模型选择)
* [模型训练](#模型训练)
* [模型评估](#模型评估)
* [模型预测](#模型预测)
* [模型导出](#模型导出)
* [模型推理](#模型推理)
* [模型优化](#模型优化)
* [模型部署](#模型部署)
<a name="项目说明"></a>
## 1 项目说明
针对住宅、加油站、公路、森林等火灾高发场景,应用飞桨[PaddleX](https://github.com/PaddlePaddle/PaddleX/tree/develop)的目标检测技术,可以自动检测监控区域内的烟雾和火灾,帮助相关人员及时应对,最大程度降低人员伤亡及财物损失,模型效果如图1所示。希望通过梳理优化模型精度和性能的思路能帮助用户更高效地解决实际火灾和烟雾检测应用中的问题。开放烟雾和火灾数据和预训练模型,并提供服务器Serving和Jetson NX边缘侧芯片的部署指南。
![demo](docs/images/demo.png)
**方案难点**:
- **推理速度要求高:** 在烟雾和火灾检测场景,希望模型能在火情发生的第一时间即做出响应,对模型推理速度有较高的要求;
- **干扰样本多,容易造成误检:** 生活中有很多物体和烟火是非常接近的,很难区分(比如:云朵、红色的灯光等),容易造成模型误检。
注:AI Studio在线运行代码请参考[【产业级应用案例】火灾/烟雾检测](https://aistudio.baidu.com/aistudio/projectdetail/2503301?contributionType=1)(配备Tesla V100高级算力资源)。
<a name="安装说明"></a>
## 2 安装说明
#### 环境要求
* PaddlePaddle >= 2.1.0
* Python >= 3.5
* PaddleX >= 2.0.0
安装的相关问题参考[PaddleX安装](https://paddlex.readthedocs.io/zh_CN/release-1.3/install.html#pip)
#### 下载PaddleX源码
```
git clone https://github.com/PaddlePaddle/PaddleX -b develop
cd PaddleX
git checkout develop
```
<a name="数据准备"></a>
## 3 数据准备
---
本案例使用数据集包含[MIT协议互联网下载图片](https://github.com/gengyanlei/fire-smoke-detect-yolov4 )和[MIT协议公开数据集](https://aistudio.baidu.com/aistudio/datasetdetail/90352/0),共有6675张图片,分别检测烟雾和火灾,示例图片如下图所示:
![dataset](docs/images/dataset.png)
数据集图片格式是VOC数据格式,VOC数据是每个图像文件对应一个同名的xml文件,xml文件内包含对应图片的基本信息,比如文件名、来源、图像尺寸以及图像中包含的物体区域信息和类别信息等。
xml文件中包含以下字段:
- filename,表示图像名称。
- size,表示图像尺寸。包括:图像宽度、图像高度、图像深度。
```
<size>
<width>500</width>
<height>375</height>
<depth>3</depth>
</size>
```
- object字段,表示每个物体。包括:
| 标签 | 说明 |
| :----------: | :----------------------------------------------------------: |
| name | 物体类别名称 |
| pose | 关于目标物体姿态描述(非必须字段) |
| truncated | 如果物体的遮挡超过15-20%并且位于边界框之外,请标记为`truncated`(非必须字段) |
| difficult | 难以识别的物体标记为`difficult`(非必须字段) |
| bndbox子标签 | (xmin,ymin) 左上角坐标,(xmax,ymax) 右下角坐标, |
将这6675张图片按9:1比例随机切分,切分后包含6008张图片的训练集和667张图片的验证集,提供处理好的数据集,[下载地址](https://aistudio.baidu.com/aistudio/datasetdetail/107770)。包含以下文件夹和文件:`images`,`annotations`,`labels.txt`, `train_list.txt`和 `val_list.txt`,分别图片、xml标注文件、存储类别信息、训练样本列表、验证样本列表。训练样本列表和验证样本列表的每一行格式为:`图片路径 对应的xml路径`,例如`images/fire_00348.jpg annotations/fire_00348.xml`。
最终数据集文件组织结构为:
```
├── dataset
├── annotations
│ ├── fire_000001.xml
│ ├── fire_000002.xml
│ ├── fire_000003.xml
│ | ...
├── images
│ ├── fire_000001.jpg
│ ├── fire_000003.jpg
│ ├── fire_000003.jpg
│ | ...
├── label_list.txt
├── train.txt
└── valid.txt
```
<a name="模型选择"></a>
## 模型选择
PaddleX提供了5种目标检测模型:FasterRCNN、YOLOv3、PP-YOLO、PP-YOLOv2和PP-YOLO-tiny。
* [Faster RCNN](https://arxiv.org/pdf/1506.01497.pdf):Ross B. Girshick在2016年提出了新的FasterRCNN,需要先产生候选区域,再对RoI做分类和位置坐标的预测,这类算法被称为两阶段目标检测算法。在结构上,Faster RCNN已经将特征抽取(feature extraction),proposal提取,bounding box regression(rect refine),classification都整合在了一个网络中,使得综合性能有较大提高,在检测速度方面尤为明显。
* [YOLOv3](https://pjreddie.com/media/files/papers/YOLOv3.pdf):Joseph Redmon等人在2015年提出YOLO(You Only Look Once,YOLO)算法,通常也被称为YOLOv1;2016年,他们对算法进行改进,又提出YOLOv2版本;2018年发展出YOLOv3版本。YOLOv3使用单个网络结构,在产生候选区域的同时即可预测出物体类别和位置,这类算法被称为单阶段目标检测算法。另外,YOLOv3算法产生的预测框数目比Faster R-CNN少很多。Faster R-CNN中每个真实框可能对应多个标签为正的候选区域,而YOLOv3里面每个真实框只对应一个正的候选区域。这些特性使得YOLOv3算法具有更快的速度,能到达实时响应的水平。
* [PP-YOLO](https://arxiv.org/abs/2007.12099):PP-YOLO是[PaddleDetection]()优化和改进的YOLOv3的模型,在[COCO](http://cocodataset.org/) test-dev2017数据集上精度达到45.9%,在单卡V100上FP32推理速度为72.9 FPS,V100上开启TensorRT下FP16推理速度为155.6 FPS。PP-YOLO从如下方面优化:
- 更优的骨干网络: ResNet50vd-DCN
- 更大的训练batch size: 8 GPUs,每GPU batch_size=24,对应调整学习率和迭代轮数
- [Drop Block](https://arxiv.org/abs/1810.12890)
- [Exponential Moving Average](https://www.investopedia.com/terms/e/ema.asp)
- [IoU Loss](https://arxiv.org/pdf/1902.09630.pdf)
- [Grid Sensitive](https://arxiv.org/abs/2004.10934)
- [Matrix NMS](https://arxiv.org/pdf/2003.10152.pdf)
- [CoordConv](https://arxiv.org/abs/1807.03247)
- [Spatial Pyramid Pooling](https://arxiv.org/abs/1406.4729)
- 更优的预训练模型
* [PP-YOLOv2](https://arxiv.org/abs/2104.10419):相较20年发布的PP-YOLO,PP-YOLOv2版本在COCO 2017 test-dev上的精度提升了3.6个百分点,由45.9%提升到了49.5%;在640*640的输入尺寸下,FPS达到68.9FPS。 主要改进点:
* Path Aggregation Network
* Mish Activation Function
* Larger Input Size
* IoU Aware Branch
* PP-YOLO-tiny:在当前移动互联网、物联网、车联网等行业迅猛发展的背景下,边缘设备上直接部署目标检测的需求越来越旺盛。生产线上往往需要在极低硬件成本的硬件例如树莓派、FPGA、K210 等芯片上部署目标检测算法。而我们常用的手机 App,也很难直接在终端采用超过 6M 的深度学习算法。如何在尽量不损失精度的前提下,获得体积更小、运算速度更快的算法呢?得益于 PaddleSlim 飞桨模型压缩工具的能力,体积仅为 1.3M 的 PP-YOLO-tiny 诞生了!PP-YOLO-tiny 沿用了 PP-YOLO 系列模型的 spp,iou loss, drop block, mixup, sync bn 等优化方法,并进一步采用了针对移动端的优化策略�
没有合适的资源?快使用搜索试试~ 我知道了~
人工智能工具.zip ai
共1655个文件
py:865个
png:227个
md:214个
需积分: 1 3 下载量 84 浏览量
2023-08-26
19:07:58
上传
评论
收藏 70.76MB ZIP 举报
温馨提示
人工智能工具.zip
资源推荐
资源详情
资源评论
收起资源包目录
人工智能工具.zip ai (1655个子文件)
gradlew.bat 2KB
make.bat 795B
build.bat 678B
build_clean.bat 282B
predict.bmp 14.34MB
rbox_iou_op.cc 3KB
.clang-format 839B
yaml-cpp.cmake 991B
yaml-cpp.cmake 964B
yaml-cpp.cmake 957B
yaml-cpp.cmake 926B
paddlex.cpp 31KB
transforms.cpp 13KB
meter_reader.cpp 13KB
paddlex.cpp 12KB
transforms.cpp 11KB
tensorrt_engine.cpp 11KB
transforms.cpp 10KB
seg_postprocess.cpp 9KB
paddlex.cpp 9KB
paddle_model_decrypt.cpp 9KB
det_postprocess.cpp 9KB
model_infer.cpp 8KB
reader_postprocess.cpp 8KB
transforms.cpp 8KB
paddle_model_encrypt.cpp 8KB
det_preprocess.cpp 7KB
triton_engine.cpp 7KB
postprocess.cpp 7KB
human_segmenter.cpp 7KB
base64.cpp 7KB
video_classifier.cpp 6KB
ppinference_engine.cpp 6KB
detector.cpp 6KB
openvino_engine.cpp 6KB
base_preprocess.cpp 6KB
io_utils.cpp 5KB
visualize.cpp 5KB
visualize.cpp 5KB
visualize.cpp 5KB
aes_gcm.cpp 5KB
video_detector.cpp 5KB
video_segmenter.cpp 5KB
system_utils.cpp 5KB
visualize.cpp 4KB
segmenter.cpp 4KB
classifier.cpp 4KB
detector.cpp 4KB
detector.cpp 4KB
det_model.cpp 4KB
x_model.cpp 4KB
model_infer.cpp 3KB
paddle_stream_decrypt.cpp 3KB
multi_gpu_model_infer.cpp 3KB
model_infer.cpp 3KB
segmenter.cpp 3KB
segmenter.cpp 3KB
batch_infer.cpp 3KB
tensorrt_infer.cpp 3KB
seg_model.cpp 3KB
meter_reader.cpp 3KB
clas_postprocess.cpp 3KB
classifier.cpp 3KB
classifier.cpp 3KB
clas_preprocess.cpp 3KB
sha256_utils.cpp 3KB
seg_preprocess.cpp 2KB
paddle_encrypt_tool.cpp 2KB
bbox_utils.cpp 2KB
basic.cpp 2KB
x_postprocess.cpp 2KB
x_preprocess.cpp 2KB
model_infer.cpp 2KB
model_infer.cpp 2KB
clas_model.cpp 2KB
paddle_safe_stream_test.cpp 1KB
global.cpp 1KB
model_factory.cpp 1KB
meter_config.cpp 1KB
paddle_deploy.cpp 839B
Form1.cs 95KB
Form1.Designer.cs 16KB
Program.cs 791B
WinFormsApp_final.csproj 1KB
rbox_iou_op.cu 4KB
.gitignore 203B
.gitignore 10B
.gitignore 7B
.gitignore 7B
.gitmodules 306B
build.gradle 6KB
build.gradle 4KB
build.gradle 558B
settings.gradle 14B
gradlew 5KB
tensorrt_buffers.h 12KB
transforms.h 10KB
rbox_iou_op.h 10KB
paddlex.h 9KB
transforms.h 8KB
共 1655 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17
资源评论
wzxue1984
- 粉丝: 18
- 资源: 913
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功