基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】

基于机器学习的交通标志检测

基于机器学习的交通标志检测流程图

基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】

1.1 预处理

将图片进行尺度归一化。常见尺寸变换方法可以参考最邻近插值、双线性插值和三次插值。最邻近插值速度快,单失真较严重,在尺度变换较大时会产生冥想的锯齿和马赛克。三次插值比较复杂且计算量大。双线性插值变换后图片质量较高,且计算复杂度较低,综合考虑,使用双线性插值比较合适。

1.2特征提取

1.2.1 梯度方向直方图特征(HOG,Histogram of Oriented Gradients)
(1)HOG基本思想
通过统计图像局部光强梯度的边缘方向的分布来描述该图像的特征。首先将图像分割成大小相等且不重叠的连通区域,称为细胞单元;然后统计每个细胞的梯度方向直方图;最后,通过一定的规则对得到的直方图进行组合,即可得到描述该图像的目标特征。

(2)HOG特征提取算法流程

基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】
1)图像预处理(灰度化+归一化)
由于HOG关心图像梯度和边缘信息,因此图像中的颜色信息作用不大,可以忽略以减少计算的复杂度。先进行灰度化处理,再进行归一化,可减少光照因素的影响。可参考Gamma归一化校正法,计算公式如下:Gamma取1/2 。

基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】

2)计算图像梯度
图像梯度的计算包括横坐标的梯度、纵坐标的梯度以及每个像素位置的梯度方向值。可参考以下公式:
基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】
其中G_x (x,y),G_y (x,y),H(x,y)分别表示输入图像点(x,y)处水平方向上梯度、垂直方向上梯度和该点的像素值。G(x,y),α(x,y)分别表示梯度的幅度和梯度的方向。

3)为每个细胞构建梯度直方图
计算出每个像素点的值后,将图像分为若干个不重复且大小为N*N 的细胞单元。每个像素点的梯度范围为[0, 360°],将该范围划分为n个通道(常见为9)。并如果当前像素的梯度方向在第一通道,则在该直方图的第一通道的计数上加上对应的梯度大小。每个细胞得到一个直方图。

4)细胞组合成块及梯度方向直方图归一化
将各个细胞单元合成大的、空间上连通互有重叠的快,每个块內所有细胞的特征作为该块的特征。之后对梯度大小进行归一化,这样可以进一度对光照、阴影和边缘进行压缩。

5)收集HOG特征·
收集图像中所有重叠块的HOG特征,并将它们组合成最终的多维特征向量f=[x_1,x_2,…,x_d],即该图像d维的HOG特征向量。

1.3分类器选取

1.3.1 支持向量机
(1)线性可分时
针对交通标志检测的二分类情况,在二维空间中将黑色点和白色点用一条直线分开。
在实际二分类情况中,假设给定数量为n的训练样本集用S表示,x_i为训练样本的特征向量,y_i为对应样本的标记值,y_i∈{1,-1}。则S的表达式可以写成
基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】
分界面的线性函数表达式为
基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】
对于线性可分的情况,存在分类平面H让两类点完全分开,如图所示。假设位于两个类中且平行于分类平面H最近的两个面分别为H_1和H_2,它们之间的距离为m.能决定H_1、H_2平面并且位于两平面上的样本向量,并能够使得m最大,则这些样本向量被称为支持向量。此时H为最优分类超平面。

两个平面的间距为
基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】
最大化m可以转换为求J
基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】

(2)线性不可分时
当不能用线性函数将两类分开时,有两种解决办法。第一:仍用直线分开,但是不能保证完全分开;第二:用曲线分开。

如果继续用直线分开,要包容错分的情况,并且对错分的样本点增加惩罚,惩罚函数就是这个点到其正确位置的距离。在原函数上加上惩罚函数就变为
基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】
ε用于改变最小分类间隔,C表示对错分点惩罚的大小,当C很大时,错分的点会更少,但是容易出现过拟合。C的选用会影响到分类效果,一般通过经验获得,此时得到的支持向量机被记为C-SVM。

如果用曲线分开,则需要使用非线性映射,将原本线性不可分的空间转换到更高维的空间,然后在新的特征空间使用线性分类器。设映射后的内积为ϕ(x_k )ϕ(x_j),映射后的内积用一个函数表达,并称此函数为核函数,
基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】
最后得出在高维空间分界面表达式是:
基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】
常用核函数有以下几个:
基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】
对于二分类问题选择简单的线性函数即可。

1.3.2 随机森林算法
(1)随机森林基本思想
随机森林是采用分类回归树(CART)作为元分类器而成的组合分类器。使用Bagging方法抽取有差异的训练样本集分别对CART进行训练。CART算法采用递归划分自变量空间和用验证数据剪枝的思想,生成CART数,该树称为二叉树。在建立二叉树时,可以选择基尼指标作为每个内部节点处的分裂属性。

(2)随机森林算法流程
随机森林是以K各决策树{h(x,θ_k ),k=1,2,…,K}为基本分类器,在集成学习后进行组合而得到的组合分类器。
1)使用Bagging方法形成各有区别的训练集分别对决策树进行训练:假设数据库中用来训练的样本数量为N,从中有放回的随机抽取N个样本形成一个新的训练集,用新的训练样本训练生成一棵新的树分类器。
2)用每个训练集分别训练生成一棵分类回归树。假设共有M个原始特征,设定一个正整数m+M;从M个特征中随机选取m个特征作为每个内部节点的候选特征,然后再从m个特征最好的分裂方式对节点进行分裂。m的值在森林的整个生长过程中保持不变。每棵树生长自由,不进行剪枝。
3)本文中对输入的测试样本进行分类时,其预测结果由组成随机森林的决策树投票决定。投票公式如所示:
基于机器学习的交通标志检测【梯度方向直方图(HOG)、支持向量机(SVM),随机森林(random forests)】
参考文献:
[1]许庆志. (2018). 基于深度学习的交通标志识别及实现. (Doctoral dissertation).
[2]刘冬琴. (2016). 自然场景下交通标志检测算法研究. (Doctoral dissertation).