一种基于重叠标注训练的烟火检测方法与流程
未命名
10-26
阅读:170
评论:0
1.本发明属于计算机视觉、人工智能领域,尤其涉及一种基于重叠标注训练的烟火检测方法。
背景技术:
2.随着人工智能和计算机视觉领域技术的不断进步和发展,越来越多的人工智能算法被应用到智能安防、监控预警等领域。通过计算机视觉技术,可以对视频图像信息进行自动化的智能分析,实现对各种安全事件的快速响应和处理。而在工业园区、施工现场、油气井场站、林业工程等场景,火灾是一大隐患,一旦发生火灾,不及时灭火会造成极大的人员伤亡和财产损失,因此对明烟明火进行自动实时监测和报警是一项非常重要的工作。
3.对于上述需求,流行的解决方案有三种,一种是当成一个分类问题,对每一帧视频画面进行是否具有明烟明火的二分类,这种方案的优点是标注简单,缺点是不能显示明烟明火的位置,不利于可视化展示;第二种方案是当成一个普通的目标检测问题,定义目标为明烟和明火两种,进行目标框的框取标注,优点是可以展示目标位置,缺点是目标框的标注方式不唯一容易造成训练困难,且由于烟火形态的不规则,容易额外框选很多背景信息;第三种方案是当成语义分割的问题,即对画面中明烟明火的位置进行像素级的分割,优点是精度较高,缺点是标注成本高,模型推理速度较慢,不利于边缘部署。
4.如何在保证能够可视化位置展示的前提下,制定合适的方案,使用较为简单的标注方式、消耗较低的算力资源来最大化检测精度,是一个很有价值的问题。
技术实现要素:
5.为了解决上述技术问题,本发明揭示了一种基于重叠标注训练的烟火检测方法,所述方法包括如下步骤:
6.s100:采集训练数据;
7.s200:对采集到的训练数据进行数据清洗获得清理后的标准数据;
8.s300:使用重叠标注法对所获得的清理后的标准数据进行标注得到标注数据;
9.s400:构建目标检测模型,使用标注数据对所述目标检测模型进行训练;
10.s500:通过图片级f1指标if1选择最佳模型;
11.其中,选择最佳模型的原则为:判断图片是否有明烟、明火,以及判断训练过程中没有误报;
12.s600:将所述最佳模型进行部署,完成烟火检测;
13.s700:对所有检测得到的烟火目标框进行后处理,输出是否存在烟火及其目标框的坐标值。
14.优选的,所述步骤s500中进一步包括:
15.s501:目标检测模型训练时采用图片级f1指标if1;
16.s502:对烟、火两类的if1值求平均,得到最终的评价指标mif1:,其
中n=2;
17.s503:训练完成后选择mif1值最高的模型作为最佳模型。
18.优选的,所述if1具体的计算方式为:
[0019][0020][0021][0022]
其中,ip代表图片级的查准率,ir代表图片级的召回率,itp代表检测图片上含有某类目标,且标签也含有该目标;ifp代表预测图片上含有某类目标,但是标签不含有该目标;ifn代表预测图片上不含有某类目标,但是标签含有该目标。
[0023]
优选的,所述训练数据包括:开源的烟火检测数据集,爬取到的包括失火、火灾关键词的图片和现场采集的数据。
[0024]
优选的,所述的数据清洗指的是:只保留开源数据集的图片数据,或者只用剔除一些不相关的图片,或者把视频转为图片。
[0025]
优选的,所述重叠标注法是用多个可重叠的密集小框来标注烟火。
[0026]
优选的,所述步骤s700中的后处理包括对于得到的烟火目标框进行非极大值抑制后处理以及置信度阈值过滤。
[0027]
通过上述技术方案,本发明通过重叠标注方法进行数据标注进行后续训练,大大提高了正样本的数量,缓解了目标检测中正负样本不平衡的问题,同时减少了背景信息的误标注,有效提升模型精度,最后通过图片级的f1指标mif1值选择最佳模型以替代传统的map指标,使选择出的模型最大程度的符合实际部署需求的同时更加适用于烟火这类形态不固定、标注方式不固定的目标。本发明整体方案开发效率高、数据标注成本低、精度提升较大,同时减少了边缘设备计算资源需求。
附图说明
[0028]
图1是本发明一个实施例中所提供的一种基于重叠标注训练的烟火检测方法流程图;
[0029]
图2是本发明一个实施例中所提供的标注方式对比图;
[0030]
图3是本发明一个实施例中所提供的本发明的检测模型计算流程示意图。
具体实施方式
[0031]
为了使本领域技术人员理解本发明所披露的技术方案,下面将结合实施例及有关附图1至图3,对各个实施例的技术方案进行描述,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。
[0032]
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其他实施例互斥的独立的或备选的实施例。本领域技术人员可以理解的是,本文所描述的实施例可以与其他实施例相结合。
[0033]
参见图1,在一个实施例中,本发明揭示了一种基于重叠标注训练的烟火检测方
法,所述方法包括如下步骤:
[0034]
s100:采集训练数据;
[0035]
s200:对采集到的训练数据进行数据清洗获得清理后的数据;
[0036]
s300:使用重叠标注法对所获得的清理后的数据进行标注;
[0037]
s400:构建目标检测模型,使用标注后的数据对所述目标检测模型进行训练;
[0038]
s500:通过图片级f1指标if1选择最佳模型;
[0039]
其中,选择最佳模型的原则为:判断图片是否有明烟、明火,以及判断训练过程中没有误报;
[0040]
也就是说,本发明只需要判断图片是否有明烟、明火,同时训练过程中没有误报,而不考虑模型预测的目标框和标注的框重叠度是否较小这个因素,以替换传统的map指标为图片级f1指标;
[0041]
s600:将所述最佳模型进行部署,完成烟火检测;
[0042]
s700:对所有检测得到的烟火目标框进行后处理,输出是否存在烟火及其目标框的坐标值。
[0043]
就该实施例而言,该方法更加适用于烟火这类形态不固定、标注方式不固定的目标:首先使用重叠标注法对训练数据进行标注,然后运用目标检测算法使用采集的图像数据进行训练,训练过程中使用图片级的f1指标来进行最佳模型选择,最后使用所得模型进行部署。部署时,对输入图像进行模型推理计算,再对所有检测得到的烟火目标框进行后处理,最后输出是否存在明烟明火及其目标框的坐标值。
[0044]
本发明通过重叠标注法进行原始数据标注,相比主流的直接一个大框的标注方式,可以有效提升正样本数量,同时大大降低背景信息的干扰,让模型更关注目标的纹理信息,从而降低模型训练难度、提升模型精度。然后通过图片级的f1指标,相比主流的map指标,可以选出实际效果更好的最佳模型更加适用于烟火这类形态不固定、标注方式不固定的目标。整个方案简单、有效,可以大大提升明烟明火的检测精度,减少误报,并尤其适用于部署于计算资源有限的边缘设备。
[0045]
在另一个实施例中,所述训练数据包括:开源的烟火检测数据集,爬取到的包括失火、火灾关键词的图片和现场采集的数据。
[0046]
就该实施例而言,首先采集训练数据,主要分为三类,第一类是开源的烟火检测数据集,直接进行搜索下载即可,第二类是通过爬虫进行自定义的图片爬取,主要爬取失火、火灾等关键词;第三类是现场采集,即先在现场部署多个不同角度、距离的摄像头,然后在保证安全的前提下,点燃不同材料(如纸张、塑料、布匹等),进行视频录制,这里尽可能模拟不同时间段(如清晨、正午、晚上)、不同光照强度(自然光、灯光强光照射)。
[0047]
在另一个实施例中,所述的数据清洗指的是:只保留开源数据集的图片数据即可,或者只用剔除一些不相关的图片即可,或者把视频转为图片即可。
[0048]
就该实施例而言,数据采集完成之后,需要对数据进行初步清洗和相关预处理。因为提出了新的标注方案,因此开源数据集提供的标注不适用,所以对于第一类数据只需要保留开源数据集的图片数据即可,第二类数据则只用剔除一些不相关的图片,第三类数据则需要把视频转为图片,具体的,因为视频连续相邻帧相似度极高,因此每隔10帧保存一张即可。
[0049]
在另一个实施例中,所述重叠标注法是用多个可重叠的密集小框来标注烟火。
[0050]
就该实施例而言,数据清洗和预处理完成之后,则需要对数据进行标注。这里使用新提出的重叠标注法,一般的目标检测模型,会把一团火焰或者一团烟标为一个大框,这样容易有几个问题:1.烟火不像一个具体的目标比如人体、汽车,有固定的形态,因此对于大量混合在一起的烟火,很难明确给每个框如何标注,若简单标为几个框,不同人有不同的标注方法,会提升模型的收敛难度,且容易漏标,若整体标为一个框,就会有更多的歧义,使得模型无法很好的区分烟火这两类目标;2.即使只有一团烟火,因为形态往往不会是标准的矩形,直接用一个矩形框标注,会额外包含大量的背景区域,而和其它目标检测不一样的是,烟火检测主要就是学习纹理信息,直接一个大框标注很容易包含到无关的背景信息,提升模型训练难度,更严重的使在通过平移、拼接等常规数据增强操作后,可能出现只有背景区域但是又标注了烟火框的情况,对模型精度的负面影响更大。
[0051]
本发明提出的重叠标注法,即用多个可重叠的密集小框来标注烟火,重叠标注既可以提高正样本数量,又可以减少被框选到的背景信息,同时还可以让模型更关注纹理信息而不是轮廓形态,而在部署预测的时候,由于后处理中会进行非极大值抑制处理,又可以对预测出的大量重叠框进行去重合并,保持可视化的简洁和直观。具体的标注方式对比可以参考图2。图2左边的图是一般标注方式,图2右边的图是重叠标注方式。
[0052]
可重叠的密集小框没有特殊的限定条件,主要是在不包含背景的前提下用小框把烟火目标完全覆盖。由于框的标注都是水平、垂直方向的,而烟火目标不是标注的矩形,因此每一个框在不框到背景的前提下在水平、垂直方向可以尽可能拉大。被包含进去的背景会影响模型训练,因为对于人体、车辆、动物等目标有形状、语义特征,包含背景影响不大,而烟火这种只有纹理特征,包含背景后训练就会有干扰,尤其是在经过平移、马赛克等数据增强后,可能出现在图片范围内只有一个背景区域框的情况。因此总结来说,主要有两个特征:1.重叠,主要是为了增加更多的目标正样本数量,同时同一张图有不同的标注可能,通过重叠可以一定程度上缓解这种区别;2.密集小框,就是为了在不包含背景的情况下尽可能把所有烟火目标区域覆盖全。
[0053]
在另一个实施例中,所述检测模型选择一阶段目标检测模型。
[0054]
就该实施例而言,数据标注完成之后,即可开始构建检测模型。为了兼顾速度和精度,模型可选择目前常用的一阶段目标检测模型比如yolo系列的yolov3、yolov4、yolov5、yolov6、yolov7等。
[0055]
在另一个实施例中,所述步骤s500中进一步包括:
[0056]
s501:目标检测模型训练时采用图片级f1指标if1;
[0057]
s502:对烟火两类的if1值求平均,得到最终的评价指标mif1:,其中n=2;
[0058]
s503:训练完成后选择mif1值最高的模型作为最佳模型。
[0059]
就该实施例而言,构建好模型并使用前述数据训练,然后根据本发明提出的图片级f1指标选择最佳模型。
[0060]
主流的目标检测模型训练时都采用的是map指标,但是对于烟火这类形态不固定、标注方式不固定的目标不适用,比如模型预测的目标框和标注的框刚好重叠度较小,但是都属于烟火,这种情况map是不得分的,但是实际场景是可以接受这种情况的,即只需要判
断图片是否有明烟明火就可以了,而不考虑模型预测的目标框和标注的框重叠度是否小于预设范围这个因素。因此,替换map为图片级f1指标,这里称为if1。能够理解,训练的过程中必须确保框出的目标框没有误报。
[0061]
因为本发明是检测明烟明火两类目标,因此需要对每一类的if1值求平均,即得到最终的评价指标mif1:
[0062][0063]
本例中n=2,训练过程中保留每一次迭代的模型及其对应的mif1值,训练完成后选择mif1值最高的模型作为最终使用的模型。
[0064]
在另一个实施例中,所述if1具体的计算方式为:
[0065][0066][0067][0068]
其中,ip代表图片级的查准率(image precision),ir代表图片级的召回率(image recall),所述itp代表检测图片上含有某类目标,且标签也含有该目标;所述ifp代表预测图片上含有某类目标,但是标签不含有该目标;所述ifn代表预测图片上不含有某类目标,但是标签含有该目标。
[0069]
就该实施例而言,传统的目标检测中的tp的计算,是通过两个框的重叠度来计算的,而图片级的tp,则是比较图片是否含有烟火即可。这几个指标都是对普通的f1、p、r、tp、fp、fn这几个指标的修改,改为图片级的而不是单个框的。
[0070]
举例如下:
[0071]
假如验证图片有4张,编号分别是0到3.他们的标注分别为:
[0072]
0:有明烟,无明火;
[0073]
1:有明烟,无明火;
[0074]
2:无明烟,有明火;
[0075]
3:有明烟,有明火;
[0076]
而他们的模型预测结果为:
[0077]
0:有明烟,有明火;
[0078]
1:无明烟,无明火;
[0079]
2:无明烟,无明火;
[0080]
3:有明烟,有明火;
[0081]
则根据定义有:
[0082]
itp明烟=2(有2张图片即0、3预测有明烟且对应标签也有明烟);
[0083]
ifp明烟=0(不存在检测含有明烟但是标签不含明烟的图片);
[0084]
ifn明烟=1(有1张图片即编号1预测无明烟但标签有明烟);
[0085]
然后根据上述公式即可求得,ip明烟=2/(2+0)=1,ir明烟= 2/(2+1)=0.67.则if1明烟=2*1*0.67/(1+0.67)=0.80。
[0086]
同样的对于明火类目标有:
[0087]
itp明火=1(有1张图片即编号3预测有明火且对应标签也有明火);
[0088]
ifp明火=1(有1张图片即编号0预测有明火但是标签不含明火);
[0089]
ifn明火=1(有1张图片即编号2预测无明火但标签有明火);
[0090]
然后根据上述公式即可求得,ip明火=1/(1+1)=0.5,ir明火= 1/(1+1)=0.5.则if1明火=2*0.5*0.5/(0.5+0.5)=0.5;
[0091]
最后求mif1 = (if1明烟+if1明火)/2=(0.8+0.5)/2=0.65。
[0092]
在另一个实施例中,所述步骤s700中的后处理包括对于得到的烟火目标框进行非极大值抑制后处理以及置信度阈值过滤。
[0093]
就该实施例而言,部署时对于待检测视频帧,检测模型进行目标检测推理,然后对于得到的检测框进行非极大值抑制后处理以及置信度阈值过滤,若后处理后的结果为空,则不输出预警信息,若后处理含有目标框,则进行相应的烟火类别预警。
[0094]
在另一个实施例中,采用deepstream流媒体框架,所述目标检测算法为yolov5-6.1版本的s模型。
[0095]
采用的是yolov5的6.1版本,选择s小模型便于边缘部署。对于任意一张待检测数据(或者视频帧),首先按最长边等比缩放到640尺寸,然后对短边填充114像素到640。且自然图像有rgb共3个通道,所以输入模型的维度为3x640x640。
[0096]
图片数据输入模型,先经过一个骨干网络进行特征提取,然后经过sppf结构进行特征图的拼接,最后经过几个2d卷积输出头输出最后的目标特征向量。整体模型流程如图3所示,如下所述:
[0097]
对于一张输入图片,首先经过模型第0层为一个conv模块,其由一个2维卷积层、一个batchnorm层和一个silu激活函数层构成,2维卷积层卷积核大小维6x6,卷积和数量为32,步长为2x2,填充为2.经过conv模块后输出维度变为32x320x320。卷积操作为对输入数据在每个卷积核大小的窗口内进行矩阵相乘然后求和的运算,同时每个卷积核权值复用,即对同一个输入数据不同坐标位置都会进行计算;
[0098]
所述卷积层的卷积操作其实就是每次取一个特定大小的矩阵(卷积核),然后将其对输入特征图依次遍历扫描同样尺寸大小的区域并进行内积的运算过程。
[0099]
所述batchnorm的计算步骤如下:
[0100]
1)先求出一条数据x此次批量数据所有xi的数学期望即均值:,以及对应的方差;
[0101]
3)接下来就是对x做归一化:。
[0102]
4)最重要的一步,引入缩放和平移变量和,计算归一化后的值:,其中b为一个batch批次的输入数据,m为一个批次的数据数量。为一个小数(可取0.000001)防止分母为0,为归一化后的数据,平移变量和为要训练的参数,为该批次最终的输出数据。
[0103]
所述silu激活函数的计算公式为:
[0104][0105]
[0106]
其中e为自然对数。
[0107]
然后再经过模型第1层,也是一个conv模块,同样由一个2维卷积层、一个batchnorm层和一个silu激活函数层构成,2维卷积层卷积核大小为3x3,卷积核数量为64,步长为2x2,填充为1.经过conv模块后输出维度变为64x160x160。
[0108]
然后再经过模型第2层,一个c3模块,c3模块由3个conv模块和一个bottleneck模块组成,bottleneck模块为两个conv模块组成的残差结构,即对于输入特征x,先经过第一个conv模块得到x1,再由x1经过第二个conv模块得到x2,然后把x和x2相加作为最终输出,bottleneck的第一个conv模块卷积核数量为32,卷积核大小为1x1,步长也为1x1,激活函数为silu,bottleneck的第二个conv模块卷积核数量也为32,卷积核大小为3x3,步长也为1x1,填充为1,激活函数为silu。 而对于这里的c3模块来说,第一个、第二个conv模块结构一样,即卷积核数量为32,卷积核大小为1x1,步长为1x1,激活函数为silu,第三个conv模块卷积核数量为64,卷积核大小核步长都为1x1,激活函数还是silu。c3模块的计算流程为对于输入的特征向量64x160x160,先经过第一个conv模块输出为32x160x160,然后把这个输出经过bottleneck模块输出得到32x160x160,然后再把原始输入经过第二个conv模块得到输出为32x160x160,接着把这两个输出在通道维度进行拼接得到64x160x160的输出,再经过第三个conv模块得到最后输出还是64x160x160。
[0109]
再经过一个模型第3层,一个conv模块,由一个2维卷积层和一个silu激活函数层构成,2维卷积层卷积核大小维3x3,卷积核数量为128,步长为2x2,填充为1.经过conv模块后输出维度变为128x80x80。
[0110]
再经过模型第4层,一个c3模块,由3个conv模块和两个bottleneck模块构成,第一个bottleneck模块为两个conv模块组成的残差结构,其第一个conv模块卷积核数量为128,卷积核大小为1x1,步长也为1x1,激活函数为silu,第二个conv模块卷积核数量为128,卷积核大小为1x1,步长也为1x1,激活函数为silu,bottleneck的第二个conv模块卷积核数量也为64,卷积核大小为3x3,步长也为1x1,填充为1,激活函数为silu。 第二个bottleneck模块结构核第一个一样。对于这里的c3模块来说,第一个、第二个conv模块结构一样,即卷积核数量为128,卷积核大小为1x1,步长为1x1,激活函数为silu,第三个conv模块卷积核数量为256,卷积核大小核步长都为1x1,激活函数还是silu。c3模块的计算流程为对于输入的特征向量128x80x80,先经过第一个conv模块输出为64x80x80,然后把这个输出经过两个bottleneck模块输出得到64x80x80,然后再把原始输入经过第二个conv模块得到输出为64x80x80,接着把这两个输出在通道维度进行拼接得到128x80x80的输出,再经过第三个conv模块得到最后输出还是128x80x80。
[0111]
再经过模型第5层,一个conv模块,由一个2维卷积层和一个silu激活函数层构成,2维卷积层卷积核大小维3x3,卷积核数量为256,步长为2x2,填充为1.经过conv模块后输出维度变为256x40x40。
[0112]
再经过模型第6层,一个c3模块,由3个conv模块、3个bottleneck模块构成,第一个bottleneck模块为两个conv模块组成的残差结构,其第一个conv模块卷积核数量为128,卷积核大小为1x1,步长也为1x1,激活函数为silu,第二和第三个bottleneck模块结构都和第一个一样。对于这里的c3模块来说,第一个、第二个conv模块结构一样,即卷积核数量为128,卷积核大小为1x1,步长为1x1,激活函数为silu,第三个conv模块卷积核数量为256,卷
积核大小核步长都为1x1,激活函数还是silu。c3模块的计算流程为对于输入的特征向量256x40x40,先经过第一个conv模块输出为128x40x40,然后把这个输出经过两个bottleneck模块输出得到128x40x40,然后再把原始输入经过第二个conv模块得到输出为128x40x40,接着把这两个输出在通道维度进行拼接得到256x40x40的输出,再经过第三个conv模块得到最后输出还是256x40x40。
[0113]
再经过模型第7层,一个conv模块,由一个2维卷积层和一个silu激活函数层构成,2维卷积层卷积核大小维3x3,卷积核数量为512,步长为2x2,填充为1.经过conv模块后输出维度变为512x20x20。
[0114]
再经过模型第8层,一个c3模块,由3个conv模块、1个bottleneck模块构成,bottleneck模块为两个conv模块组成的残差结构,其第一个conv模块卷积核数量为256,卷积核大小为1x1,步长也为1x1,激活函数为silu,bottleneck的第二个conv模块卷积核数量也为256,卷积核大小为3x3,步长也为1x1,填充为1,激活函数为silu。 对于这里的c3模块来说,第一个、第二个conv模块结构一样,即卷积核数量为256,卷积核大小为1x1,步长为1x1,激活函数为silu,第三个conv模块卷积核数量为512,卷积核大小核步长都为1x1,激活函数还是silu。c3模块的计算流程为对于输入的特征向量512x20x20,先经过第一个conv模块输出为256x20x20,然后把这个输出经过两个bottleneck模块输出得到256x20x20,然后再把原始输入经过第二个conv模块得到输出为256x20x20,接着把这两个输出在通道维度进行拼接得到512x20x20的输出,再经过第三个conv模块得到最后输出还是512x20x20。
[0115]
再经过一个模型第9层,sppf模块,由两个conv模块和一个最大池化层组成。其第一个conv模块卷积核数量为256,卷积核大小为1x1,步长也为1x1,激活函数为silu,bottleneck的第二个conv模块卷积核数量为512,卷积核大小为3x3,步长也为1x1,填充为1,激活函数为silu。 最大池化层的池化大小为5,步长为1,填充为2.对于输入512x20x20的特征向量,先经过第一个conv模块输出为256x20x20得到x1,然后x1经过最大池化输出为256x20x20得到y1,y1再经过一次最大池化输出为256x20x20得到y2,y2再经过一次最大池化输出为256x20x20得到y3,然后把x1、y1、y2、y3再通道维度进行拼接输出为1024x20x20,再经过第二个conv模块得到最后输出为512x20x20的特征图。
[0116]
再经过一个模型第10层,conv模块,由一个2维卷积层和一个silu激活函数层构成,2维卷积层卷积核大小维1x1,卷积核数量为256,步长为1x1.经过conv模块后输出维度变为256x20x20。
[0117]
再经过模型第11层,一个上采样层,使用nearest插值的方式进行2倍上采样,输出变为256x40x40。
[0118]
再经过模型第12层,一个concat拼接层,把前面的第6层输出特征256x40x40和这里的256x40x40在通道维度拼接得到512x40x40的输出。
[0119]
再经过模型第13层,一个c3模块,由3个conv模块、1个bottleneck模块构成,bottleneck模块为两个conv模块组成的残差结构,其第一个conv模块卷积核数量为128,卷积核大小为1x1,步长也为1x1,激活函数为silu,bottleneck的第二个conv模块卷积核数量也为128,卷积核大小为3x3,步长也为1x1,填充为1,激活函数为silu。 对于这里的c3模块来说,第一个、第二个conv模块结构一样,即卷积核数量为128,卷积核大小为1x1,步长为1x1,激活函数为silu,第三个conv模块卷积核数量为256,卷积核大小核步长都为1x1,激活
函数还是silu。c3模块的计算流程为对于输入的特征向量512x40x40,先经过第一个conv模块输出为128x40x40,然后把这个输出经过两个bottleneck模块输出得到128x40x40,然后再把原始输入经过第二个conv模块得到输出为128x40x40,接着把这两个输出在通道维度进行拼接得到256x40x40的输出,再经过第三个conv模块得到最后输出256x40x40。
[0120]
再经过模型第14层,一个conv模块,由一个2维卷积层和一个silu激活函数层构成,2维卷积层卷积核大小维1x1,卷积核数量为128,步长为1x1.经过conv模块后输出维度变为128x40x40。
[0121]
再经过模型第15层,一个上采样层,使用nearest插值的方式进行2倍上采样,输出变为128x80x80。
[0122]
再经过模型第16层,一个concat拼接层,把前面的第4层输出特征128x80x80和这里的128x80x80在通道维度拼接得256x80x80的输出。
[0123]
再经过模型第17层,一个c3模块,由3个conv模块、1个bottleneck模块构成,bottleneck模块为两个conv模块组成的残差结构,其第一个conv模块卷积核数量为64,卷积核大小为1x1,步长也为1x1,激活函数为silu,bottleneck的第二个conv模块卷积核数量也为64,卷积核大小为3x3,步长也为1x1,填充为1,激活函数为silu。 对于这里的c3模块来说,第一个、第二个conv模块结构一样,即卷积核数量为64,卷积核大小为1x1,步长为1x1,激活函数为silu,第三个conv模块卷积核数量为128,卷积核大小核步长都为1x1,激活函数还是silu。c3模块的计算流程为对于输入的特征向量256x80x80,先经过第一个conv模块输出为64x80x80,然后把这个输出经过两个bottleneck模块输出得到64x80x80,然后再把原始输入经过第二个conv模块得到输出为64x80x80,接着把这两个输出在通道维度进行拼接得到128x80x80的输出,再经过第三个conv模块得到最后输出128x80x80。
[0124]
再经过模型第18层,一个conv模块,由一个2维卷积层、一个batchnorm层和一个silu激活函数层构成,2维卷积层卷积核大小维1x1,卷积核数量为128,步长为1x1.经过conv模块后输出维度变为128x40x40。
[0125]
再经过模型第19层,一个concat拼接层,把前面的第14层输出特征128x40x40和这里的128x40x40在通道维度拼接得256x40x40的输出。
[0126]
再经过模型第20层一个c3模块,由3个conv模块、1个bottleneck模块构成,bottleneck模块为两个conv模块组成的残差结构,其第一个conv模块卷积核数量为64,卷积核大小为1x1,步长也为1x1,激活函数为silu,bottleneck的第二个conv模块卷积核数量也为64,卷积核大小为3x3,步长也为1x1,填充为1,激活函数为silu。 对于这里的c3模块来说,第一个、第二个conv模块结构一样,即卷积核数量为64,卷积核大小为1x1,步长为1x1,激活函数为silu,第三个conv模块卷积核数量为128,卷积核大小核步长都为1x1,激活函数还是silu。c3模块的计算流程为对于输入的特征向量256x40x40,先经过第一个conv模块输出为64x40x40,然后把这个输出经过两个bottleneck模块输出得到64x40x40,然后再把原始输入经过第二个conv模块得到输出为64x40x40,接着把这两个输出在通道维度进行拼接得到128x40x40的输出,再经过第三个conv模块得到最后输出256x40x40。
[0127]
再经过模型第21层,一个conv模块,由一个2维卷积层、一个batchnorm层和一个silu激活函数层构成,2维卷积层卷积核大小维1x1,卷积核数量为256,步长为1x1.经过conv模块后输出维度变为256x20x20。
[0128]
再经过模型第22层,一个concat拼接层,把前面的第10层输出特征256x20x20和这里的256x20x20在通道维度拼接得512x20x20的输出。
[0129]
再经过模型第23层一个c3模块,由3个conv模块、1个bottleneck模块构成,bottleneck模块为两个conv模块组成的残差结构,其第一个conv模块卷积核数量为256,卷积核大小为1x1,步长也为1x1,激活函数为silu,bottleneck的第二个conv模块卷积核数量也为256,卷积核大小为3x3,步长也为1x1,填充为1,激活函数为silu。 对于这里的c3模块来说,第一个、第二个conv模块结构一样,即卷积核数量为256,卷积核大小为1x1,步长为1x1,激活函数为silu,第三个conv模块卷积核数量为512,卷积核大小核步长都为1x1,激活函数还是silu。c3模块的计算流程为对于输入的特征向量512x20x20,先经过第一个conv模块输出为256x20x20,然后把这个输出经过两个bottleneck模块输出得到256x20x20,然后再把原始输入经过第二个conv模块得到输出为256x20x20,接着把这两个输出在通道维度进行拼接得到512x20x20的输出,再经过第三个conv模块得到最后输出512x20x20。
[0130]
最后把第17层的输出128x80x80、第20的输出256x40x40和第23层的输出512x20x20一起输入到detect模块中,针对这三个特征图都会有一组预先通过kmeans聚类方法设置好的锚框anchor box,每一组为3个,同时网络要预测的输出维度为1个明烟类别+1个明火类别+1个目标二分类+四个坐标值一共7个维度。则对这四组输出特征图分别经过一个3x7=21个卷积核的2维卷积层,卷积核大小为1x1,步长为1.然后再交换下维度顺序,分别得到[3, 80, 80, 7],[3, 40, 40, 7], [ 3, 20, 20, 7]。
[0131]
所述锚框聚类kmeans算法流程为:1)遍历训练数据集读取所有的标注框的宽高,每组宽高作为一组坐标;2)随机选择k个标注框坐标作为每个聚类集合的中心点(这里k取9);3)计算标注框到k个集合中心的距离,把每个框划分到欧式距离最近的中心所属的集合;4)若每个集合中的框不发生变化,则终止,输出簇中心点代表的宽高作为结果;否则更新簇中心,更新方式为取每一个集合中所有框宽高坐标的中心点为新的中心。
[0132]
在训练的时候,对这四组卷积层输出的特征图直接拿去和标签求损失即可,其中框的类别损失使用bceloss计算,坐标宽高使用ciouloss计算。
[0133]
所述bceloss损失计算公式为:
[0134][0135]
其中代表模型预测值,target代表标签值。
[0136]
所述ciouloss计算公式为:
[0137][0138][0139][0140][0141]
其中,
[0142]
a和b为待计算的两个目标框,
[0143]
、代表标注框的宽高,
[0144]
w、h代表预测框的宽高,
[0145]
代表计算欧式距离,b代表预测框的中心点,c代表标注框的中心点,b
gt
代表标注框的中心点,
[0146]
α、γ为影响因子。
[0147]
而在预测的时候,对这四组输出拼接然后reshape成[25200, 7]维度的数据,这里的7维数字含义分别为框中心点坐标x、框中心点坐标y、框的宽度w、框的高度h、前景目标置信度、类别1的置信度、类别2的置信度。25200代表所有特征层的所有位置的锚框数量之和。
[0148]
然后需要对结果进行后处理,首先直接过滤前景目标置信度小于0.1的,会过滤大量无效框,然后把剩余的框送入nms算法进行去重。
[0149]
所述nms计算方式为:1)对候选框集合a取出置信度score最大的一个框;2)把取出的框和所有集合a中剩余的框计算交并比iou,删掉所有iou大于阈值(这里设为0.5)的框,同时把取出的框加入新集合b中;3)重复1、2直到候选框集合a为空,输出集合b即为nms处理后的结果。到这里我们得到了检测模型最终的检测结果。
[0150]
总结如下:在训练阶段,通过对采集的训练数据进行重叠标注,然后通过前向推理计算和反向传播算法更新模型参数,最后用图片级mif1指标选择最佳模型;在部署阶段,通过模型前向推理计算,然后通过nms算法进行后处理对框进行过滤和合并。模型的24层结构,在训练和推理预测的时候都会用到,只是在训练的时候,模型24层计算完后是用来更新模型参数,而在推理预测的时候,模型24层计算完后的结果,再经过nms后处理,得到最终的检测框。
[0151]
最后,需要说明的是,本领域的普通技术人员在本说明书的启示下和在不脱离本发明权利要求所保护的范围的情况下,还可以做出很多种的形式变化,这些均属于本发明保护之列。
技术特征:
1.一种基于重叠标注训练的烟火检测方法,其特征在于,所述方法包括如下步骤:s100:采集训练数据;s200:对采集到的训练数据进行数据清洗获得清理后的标准数据;s300:使用重叠标注法对所获得的清理后的标准数据进行标注得到标注数据;s400:构建目标检测模型,使用标注数据对所述目标检测模型进行训练;s500:通过图片级f1指标if1选择最佳模型;其中,选择最佳模型的原则为:判断图片是否有明烟、明火,以及判断训练过程中没有误报;s600:将所述最佳模型进行部署,完成烟火检测;s700:对所有检测得到的烟火目标框进行后处理,输出是否存在烟火及其目标框的坐标值。2.如权利要求1所述的方法,其特征在于,所述步骤s500中进一步包括:s501:目标检测模型训练时采用图片级f1指标if1;s502:对烟、火两类的if1值求平均,得到最终的评价指标mif1:,其中n=2;s503:训练完成后选择mif1值最高的模型作为最佳模型。3.如权利要求2所述的方法,其特征在于,所述if1具体的计算方式为:3.如权利要求2所述的方法,其特征在于,所述if1具体的计算方式为:3.如权利要求2所述的方法,其特征在于,所述if1具体的计算方式为:其中,ip代表图片级的查准率,ir代表图片级的召回率,itp代表检测图片上含有某类目标,且标签也含有该目标;ifp代表预测图片上含有某类目标,但是标签不含有该目标;ifn代表预测图片上不含有某类目标,但是标签含有该目标。4.如权利要求1所述的方法,其特征在于,所述训练数据包括:开源的烟火检测数据集,爬取到的包括失火、火灾关键词的图片和现场采集的数据。5.如权利要求1所述的方法,其特征在于,所述的数据清洗指的是:只保留开源数据集的图片数据,或者只用剔除一些不相关的图片,或者把视频转为图片。6.如权利要求1所述的方法,其特征在于,所述重叠标注法是用多个可重叠的密集小框来标注烟火。7.如权利要求1所述的方法,其特征在于,所述步骤s700中的后处理包括对于得到的烟火目标框进行非极大值抑制后处理以及置信度阈值过滤。
技术总结
本发明公开了一种基于重叠标注训练的烟火检测方法,主要包括如下步骤:使用重叠标注法对所获得的清理后的标准数据进行标注得到标注数据;构建目标检测模型,使用标注数据对所述目标检测模型进行训练;通过图片级F1指标IF1选择最佳模型以替代传统的mAP指标;将所述最佳模型进行部署,完成烟火检测;对所有检测得到的烟火目标框进行后处理,输出是否存在烟火及其目标框的坐标值。本发明通过图片级的F1指标mIF1值选择最佳模型以替代传统的mAP指标,使选择出的模型最大程度的符合实际部署需求的同时更加适用于烟火这类形态不固定、标注方式不固定的目标,可以在边缘设备进行部署。可以在边缘设备进行部署。可以在边缘设备进行部署。
技术研发人员:刘云川 贺亮 岑亮 易炜 吴雷
受保护的技术使用者:重庆泓宝科技股份有限公司
技术研发日:2023.09.14
技术公布日:2023/10/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种色浆搅拌设备的制作方法 下一篇:激光切割装置和加工设备的制作方法