数据 + 代码,基于 Keras 的烟火检测
计算机视觉中的烟火检测是在监控视频或者图像中进行烟火图像分类或者烟火定位,在消防安全领域具有独特的意义。
我们常见的在大厦内部安装的烟雾传感器,靠检测物质燃烧后空气中浓度升高的二氧化锡等来报警。视频监控中基于视觉的烟火检测可以覆盖较为广阔的区域,而且适合室外的环境,比如无人机森林防火巡查。
昨天 PyImageSearch 网站博主 Adrian Rosebrock 发布了一篇基于Keras的烟火检测博文,将数据和代码公布了,其使用的数据量有限,从效果看并不是可实际部署的烟火检测程序,但对于了解该领域还是很有帮助的。
整体思路
作者将烟火检测看作为图像分类问题,即图像中含有烟火和不含烟火。直接使用CNN网络+SoftMax分类。
数据集
作者使用了两个数据集,含有烟火数据集来自Google搜索“fire”“smoke”返回的图片,并经过手动挑选,共有1315幅图像。
不含烟火的数据集来自8-scenes数据集,其类目包括
Coast
Mountain
Forest
Open country
Street
Inside city
Tall buildings
Highways
可见主要是室外开放场景,总计2688幅图像。
网络结构
作者使用了4个卷积层、2个全连接层 + SoftMax分类。
由于烟火检测经常部署于物联网终端等边缘设备,故作者选择使用深度可分离卷积,因为其计算和存储开销小,而且相比标准卷积效果也往往更好一些。
作者的程序和数据组织目录如下:
在训练时,为找到更好的初始学习率,使用Learning Rate Finder 方法,
实验结果
经训练的烟火检测网络FireDetectionNet在该数据集上可以达到92%的分类精度:
下图为一些正确预测的结果展示:
虽然精度看起来挺高了,不过还是有一些明显的错误:
作者指出想要取得更好的效果,收集更大和更适合应用场景的数据集是关键。
另外,使用视频进行烟火检测应该可以提高检测的精度,因为燃烧过程明显动态发展的。
总体来说,该文实现了简单的烟火检测Demo,数据和代码完备,对于想要了解体验该方向的朋友是有帮助的。
原博文地址:
https://www.pyimagesearch.com/2019/11/18/fire-and-smoke-detection-with-keras-and-deep-learning/
详细训练和测试过程可参考原博文。