使用opencv SVM训练火灾探测

时间:2016-02-04 10:42:28

标签: c++ opencv svm

我使用SVM因为我需要ML来训练我的分类器,我在几篇关于火灾检测的论文中看到他们使用了SVM和逻辑回归,但是由于2.4.9中没有逻辑回归。我计划使用SVM。我使用的是opencv 2.4.9,因为人们说opencv 3是错误的。

我是新手,所以如果我们从基本的

开始会很有帮助

我已经准备好了几张可以提取到帧中的火和非火视频。我是opencv的新手,也是关于分类器的一切。我的问题是什么是专门训练分类器SVM的基础知识,我需要什么格式的图像以及如何训练它们?教程有什么好的链接吗?我在opencv文档中找到了一个,但它没有教授使用图像进行培训。在确定参数和参数是什么时需要什么?提前致谢

2 个答案:

答案 0 :(得分:8)

这是一个概念性的问题,需要大量的论文和教程来解释。但是,正如我在评论中所解释的那样,我试着详细说明特征提取。特征描述符应该对缩放,平移和旋转具有鲁棒性。这种稳健性实际上被称为不变特征。例如,时刻及其衍生物是最着名的旋转,缩放和平移不变类型之一。您可以按照paper中的说明找到Hu时刻的用法。 火焰或火焰探测是不同的。对应于火焰的特征可以从火的动态纹理中提取。例如,fire具有特殊的颜色纹理,可将其与背景隔离。传统的火焰探测器利用红外传感器来探测火焰。在图像处理或RGB世界中,我们可以通过考虑火焰本身的性质来做同样的事情。火焰通过热和红外线发射出大部分能量。因此,可以预期红色通道的主要部分将用于火焰。例如,请参见下图。enter image description here enter image description here

在处理后的图像中,通过施加阈值将红色通道转换为BW图像。为了更清楚,我将3个频道分开如下 R:red channel G:green channel B:blue channel
很明显红色通道对火焰有更多的说法。因此,可以得出结论,火焰是R通道的一部分信息,然后是G,最后是B通道。见this
然后,您的特征向量将是一个三维向量,例如,关于三个RGB通道中的火焰轮廓。现在可以使用SVM分类器了。有时,视频可能包含应该避免的易受影响的片段,否则会导致误报。 SVM,协助您接受或拒绝候选火焰。要训​​练你的支持向量机,收集一些真正的火焰和一些可能被你的特征提取器误判的图像。然后,用正面和负面特征标记它们。最后,让opencv做魔术并训练它。有关SVM的更多信息,请通过youtube上的麻省理工学院Patrick Winston观看此视频。

更新---- 由于您对创建特征向量感到好奇,我给您带来了以下示例。假设R,G,B通道被精细地隔离,以便可以将它们称为统计独立的,如下所示;在实际图像中不是这样,其中R,G,B平面在统计上不是独立的。 enter image description here
因此,RGB图像中的点将在RGB通道中具有3个表示。例如,火焰将在所有R,G,B平面上形成3个点。例如,每个地点的区域都在这里被追踪。将RGB图像中的火焰点标记为" A"。 enter image description here
上面在R,G,B图像中描绘了区域A的表示。 A_r,A_g,A_b分别表示R,G,B平面上区域A的对应区域。

enter image description here 因此,点A将由xyz平面中的三重态(Ar,Ag,Ab)表示。 SVM现在接受这个向量作为输入,并决定它是否表示真正的火焰 标准化格式的区域是您可以参与决策制定过程的众多几何特征之一。这种其他有用的功能是宽高比,瞬间等。

简而言之,您必须执行以下操作:
1 - 找到火焰般的区域 2 - 跟踪所有R,G,B平面中的候选点 3 - 在每个平面中提取特征(我建议的时刻) 4 - 形成特征向量
5 - 使用此向量提供SVM

我希望你觉得这很有用。

答案 1 :(得分:2)

是的,所以你现在的工作就是制作一个.txt文件,其中包含你要处理的每张图片的数据。 真实的将用跟随特征集的+1表示,并以-1结束 那些是火灾的假图像将以-1开始,然后是特征集,并在开始下一个图像的特征集之前再次以-1结束 这将是一项繁琐的工作,但我确信无法管理 最后保存扩展名为.train而不是.txt的文件 所以你的训练档案名称将是filename.train