使用opencv SVM训练火灾探测

Red*_*per 6 c++ opencv svm

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

我是新手,所以如果我们从基础开始会有所帮助

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

Dav*_*ati 8

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

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

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

在此输入图像描述 因此,点A将由xyz平面中的三重态(Ar,Ag,Ab)表示.SVM现在接受此向量作为输入并确定它是否表示真正的火焰.
标准化格式的区域是您可以参与决策制定过程的众多几何特征之一.这种其他有用的特征是纵横比,矩等.

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

希望这个对你有帮助.