概要
上一章说到了通过识别目标的特征来设计相应的规则来提取识别目标的可疑区域,并通过火焰识别的列子进行了详细的说明,本章节主要说明如何通过机器学习与深度学习的方法进行可疑区域的提取。
机器学习的提取方法
火焰的颜色特征可以通过机器学习分类器如K-NN、朴素贝叶斯等通过训练相应的火焰颜色样本集构建火焰颜色模型,然后通过训练好的颜色模型提取出火焰候选区域。除此以外,机器学习的聚类算法也可以应用在构建火焰颜色模型上,通过火焰像素点在空间的分布得到该类的空间范围,通过判断像素点是否在该空间范围来判断是否为火焰像素点。但是火焰的颜色空间跨度很大,难免会与其他物体的颜色存在重合,比如夜晚的路灯、黄昏的太阳等,这些物体总有部分满足火焰的颜色模型
上图是火焰像素点的三维分布图,通过这些火焰像素样本训练高斯混合模型找到其高斯分量的中心,再将以该中心画圆,圆的半径为样本的标准差
神经网络的提取方法
神经网络检测火焰候选区域主要有两种方法:区域生成网络和语义分割。
(1) 区域生成网络
最具代表的区域生成网络便是Faster Region-CNN(Faster R-CNN)中的Region Proposal Network (RPN)模块。在Faster R-CNN中,原始图片通过公共的卷积神经网络会生成维度为(256,H,W)的特征图,该特征图的每个点都对应原始图像中的一块区域。RPN就是将这些区域设为锚点,每块区域预设9个不同尺度的预选框,然后剔除超过原图像边界以及重叠度较高的预选框。与此同时,将特征图经过一个(3,3)的卷积,再分别通过两个(1,1)的卷积,得到维度为(2k,H,W)与(4k,H,W)的特征图,这里k为每个锚点设置的预选框个数。第一个特征图用来判断预选框中是前景还是背景,是前景则保留预选框。第二个特征图是针对原图像上所生成的预选框坐标的偏移,使预选框尽可能包含整个物体,最后输出剩余所有的预选框,得到候选区域如图:
(2) 语义分割
语义分割是通过神经网络判断哪些是前景哪些是背景,然后输出判断后的图像,其中比较典型的便是U-Net。U-Net采用encode(编码)+decode(解码)的结构,如图:
该网络先对维度为(3,H,W)的图像进行4次下采样,再进行上采样,用之前的低层特征图,与上采样后的特征图进行融合,重复上采样和融合过程直到得到与输入图像尺寸相同的分割图,输出结果图的维度为(1,H,W),最后通过sigmoid()函数将数值化为(0,1)区间。 实验结果如图:
虽然效果不错,但是该方法很依赖训练集。如下图:
这两幅图的场景并不在训练集中,其检测出很多干扰项,这不利于后续网络的识别,严重影响程序的运行效率。具体代码可以参考U-Net语义分割