基于EfficientNet的烟火识别算法.
EfficientNet是19年提出的一种复合缩放模型,在较低复杂度上可以获得很好的分类性能.详情见EfficientNet(https://arxiv.org/abs/1905.11946)
EfficientNet-Pytorch(https://github.com/lukemelas/EfficientNet-PyTorch)
本文工作主要参考以上两点,具体实现可以参考我的github(https://github.com/midasklr/FireSmokeDetectionByEfficientNet)
1. EfficientNet
很不错的模型,创新性一般,工程指导比较有意义.后面我会给出我的EfficientDet实现.论文细节不赘述.
2. 烟火识别
2.1 idea
做目标检测对数据集要求太高,没有烟火的检测数据集,所以我在网上爬取了大量烟火的图片作为EfficientNet的分类数据.
使用EfficientNet作为特征提取层,输出全连接层修改为3个节点进行烟火预测.
烟火检测主要是通过将图片分块预测,更精细的结果可以使用不同大小滑动窗进行预测,对结果进行NMS.
2.2 网络可视化
这里可视化部分特征图
可以看出来,有些卷积核可以很好发现火的区域,对应特征图中白色激活区域.有的特征图擅长发现其他特征.
3. EfficientNet训练自数据集
这里提供了脚本train.py可以使用EfficientNet训练自己的数据集.通过下面命令制定你的数据位置,使用网络和目标类别数.
python train.py --data [ur dataset path] --arch [efficientnet model:efficientnet-b0-7] --num_cls [ur task class num]
预测时记得相应的修改你的标签映射文件.
数据集:链接: https://pan.baidu.com/s/1RkX76xJuop1Q6XB-f22WTg 提取码: 65mv