具体实施方式
请参阅图1,其为一实施例的图像识别方法的步骤流程图,包括如下步骤:
步骤S101,获取影像,并通过不同尺寸的扫描窗口对影像进行扫描,得到多个窗口图像。
步骤S102,提取各个窗口图像的HOG-LBP特征【Histograms of OrientedGradients(HOG)and Local Binary Pattern(LBP)】向量。
步骤S103,将所述多个HOG-LBP特征向量依次通过预设的HOG-LBP分类器进行识别,得到多个初步判定为目标的窗口图像。
步骤S104,通过预设的PHOW(Pyramid Histogram of Words,塔式关键词直方图)字典提取所述初步判定为目标的多个窗口图像的图像特征。
步骤S105,将所述多个窗口图像的图像特征通过预设的PHOW分类器进行识别,过滤掉非目标窗口图像,得到目标图像窗口图像。
步骤S106,对所述目标窗口图像进行聚类处理,得到目标图像。
本实施例中,使用带权值的MeanShift方法对目标窗口图像进行聚类处理。
一实施例中,上述步骤S101中假设选定扫描窗口大小为[Hn,Wn],即窗口图像大小也为[Hn,Wn],并将所有的训练图像转化为灰度图像。再确定扫描尺度,设输入图像的大小为[Hi,Wi],初始扫描尺度为Ss,最终扫描尺度为 Se=min{Hi/Hn,Wi/Wn},每级扫描放大倍数为Sr,那么扫描的放大倍数为 S={Ss,SsSr,SsSrSr,...,Sn},Sn<Se。
一实施例中,上述步骤S102可包括如下动作:
(1)使用一维梯度模板m=[-1,0,1]求取窗口图像的每个像素点的梯度方向与权重值。 表示卷积运算,方向 O(x,y)=atan(Iy(x,y)/Ix(x,y)),O(x,y)∈[0,π],模值
(2)将窗口图像[Hn,Wn]分割成sBin×sBin大小的小单元,如图2所示,统计每个小单元201在oBin个方向上的梯度投影统计直方图,这些方向为统计直方图时,累计像素点的梯度权值。为了防止小单元201的边界影响,累计时在位置与方向上都进行线性插值。
(3)将相邻的四个小单元201组成一个块202,如图2所示,将一个块202 内的统计直方图连接起来,并除以标准方差进行归一化处理。这些块之间有交叠区域203。如果窗口图像分割成nrow×nvol个小单元,共有(nrow-1)×(nvol-1) 个块,每个块的特征向量长度为4×oBin,那么窗口图像的HOG特征长度为 N1=(nrow-1)×(nvol-1)×4×oBin。
(4)计算窗口图像的局部二进模式值,其中N表示比较像素个数,R 表示距离,u表示均匀模式的阈值(uniformity measure)。LBPN,R的计算如下:
(5)将窗口图像分割成方形块,块的边长为2×sBin个像素,统计每个块的LBP直方图,每个块得到一个59维的向量。
(6)统计直方图时,块之间不交叠,如果窗口图像分割成Nrow×Nvol个块,窗口图像可以获得长度为N2=Nrow×Nvol×59的向量。
(7)将窗口图像的HOG特征向量与LBP特征向量组合在一起,形成一个长度为N1+N2的特征向量,即为窗口图像的HOG-LBP特征。
一实施例中,上述步骤S103中的预设的HOG-LBP分类器可通过以下动作得到:
1.计算每个归一化的目标样本的特征向量作为正样本。
2.在多个尺度S中扫描负样本计算其特征向量,与正样本的特征向量一起用SVM训练初步线性分类器。
3.保留正样本的特征向量与负样本的支持向量,其余的负样本特征向量丢弃。
4.使用训练好的线性分类器继续扫描负样本,将分类结果大于0的特征向量替换丢弃掉的特征向量。直至所有的负样本都被扫描,得到的分类器作为最终的分类器。所述特征向量大于0的负样本不能用目前的分类器正确分类,通常称他们是对目前的分类器较为困难的负样本(Hard Negative Example)。全部替换后,重新使用SVM训练线性分类器。
一实施例中,上述步骤S105中的预设的PHOW分类器可通过以下动作得到:
1)计算每个归一化的行人样本的特征向量作为正样本。
2)在多个尺度S中扫描负样本计算其特征向量,与正样本的特征向量一起用SVM训练初步线性分类器。
3)保留正样本的特征向量与负样本的支持向量,其余的负样本特征向量丢弃。
4)使用训练好的线性分类器继续扫描负样本,将分类结果大于0的特征向量替换丢弃掉的特征向量,这些负样本对目前的分类器是较为困难的(难以正确分类的负样本,Hard Negative Example)。全部替换后,重新使用SVM训练线性分类器。直至所有的负样本都被扫描,得到的分类器作为最终的分类器。
一实施例中,上述步骤S104中的预设的PHOW字典可通过以下动作得到:
按照8x8的步长将每张规格化的目标图片依次切割成16x16小块,24x24 小块及32x32小块,记所有的图片小块的集合为Sub={P1,P2,...,Pn}。对每个图像小块Pi提取SIFT特征(长度128维),zi=(zi1,zi2,...,zi128),即梯度直方图特征,记所有的图片小块的特征集合为Z=(z1,z2,...,zn)。
设定字典长度为K=1024,利用聚类算法如K-means,将数据集Z聚成K 类,所有的类的中心即为学习得到的字典。我们称每个中心点ci为一个字,字的长度为128维,将字典表示为C={c1,c2,...,cK}。
一实施例中,上述步骤S104中通过预设的PHOW字典提取各个窗口图像的图像特征主要包括两个步骤,首先对窗口图像进行金字塔SIFT特征提取,然后利用预设的PHOW字典对窗口图像进行金字塔直方图投票,具体包括:
金字塔SIFT特征提取。设输入图片I,按照8x8的步长将图片依次切割成 16x16小块,24x24小块,及32x32小块,记所有图片小块的集合为Sub={P1,P2,...,Pn},同时记所有图片小块的中心在原图片中的位置F={f1,f2,...,fn},其中fi=(x,y)i,对每个图像小块Pi,提取SIFT特征(长度128维),zi=(zi1,zi2,...,zi128),即梯度直方图特征,记所有的图片小块的特征集合为Z=(z1,z2,...,zn )。
金字塔特征表达。金字塔特征表达共包括三层,每层提取类似的直方图特征,计算方式如下所示:
a)KDTree构造
对字典C={c1,c2,...,cK}构造KDtree,记为KD。对给定一个特征z,这里的KD 能够快速地计算与z最邻近的字的索引i,此过程表示为i=KD(z)。
b)第三层特征提取
将图片lI等分的割成16块子图像,分别记为I3,1,I3,2,I3,3,...,I3,16,同时记录16个子块的左上角和右下角坐标在原图中的位置,分别表示为Q3,1,Q3,2,Q3,3,...,Q3,16,其中Q3,i=(xmin3,i,ymin3,i,xmax3,i,ymax3,i),左上角顶点坐标为(xmin3,i,ymin3,i),右下角顶点坐标为(xmax3,i,ymax3,i)。在图片每个子块的图像大小均相同(注意当图像宽和高均为偶数时,否则子图像宽和高之间会有1个像素的差别)。对子图像 I3,1,I3,2,I3,3,...,I3,16分别计算特征H3,1,H3,2,H3,3,...,H3,16。对每块子图像执行如下相同的操作:
考虑子图像I3,i,i∈{1,2,3,...,16},初始化特征H3,i=(h3,1,h3,2,...,h3,k)=(0,0,...,0),长度为K(字典学习中指定的长度)。
根据位置F={f1,f2,...,fn}和Q3,i=(xmin3,i,ymin3,i,xmax3,i,ymax3,i),查找所有属于 I3i子块的所有图像子块索引号,即
M={i|(xmin3,i,ymin3,i)≤fi≤(xmax3,i,ymax3,i)}。
对每个特征z∈M以投票的方式进行直方图统计,即对所有z∈M,执行操作 h3,KD(Z)=h3,KD(Z)+1,H3,1,H3,2,H3,3,...,H3,16为最后计算的特征。
c)第二层特征提取
将图片I等分的割成4块子图像,分别记为I2,1,I2,2,I2,3,I2,4。对子图像 I2,1,I2,2,I2,3,I2,4分别计算特征H2,1,H2,2,H2,3,H2,4。事实上,I2,1,I2,2,I2,3,I2,4分别是由第三层中的I3,1,I3,2,I3,5,I3,6、I3,3,I3,4,I3,7,I3,8、I3,9,I3,10,I3,13,I3,14和I3,11,I3,12,I3,15,I3,16组成,因此计算第二层特征按如下方式计算:
H2,1=(H3,1+H3,2+H3,5+H3,6)/22;
H2,2=(H3,3+H3,4+H3,7+H3,8)/22;
H2,3=(H3,9+H3,10+H3,13+H3,14)/22;
H2,4=(H3,11+H3,12+H3,15+H3,16)/22;
其中等式右边为相应元素进行加法运算。H2,1,H2,2,H2,3,H2,4为第二层输出的特征。
d)第一层特征提取
图片的原图我们记为I1,1,对图I1,1计算特征H1,1=(h1,1,h1,2,...,h1,K),长度为K(字典学习中指定的长度)。事实上I1,1为第一层的特征,I1,1由I2,1,I2,2,I2,3,I2,4组成,因此第一层的特征计算方式为:
H1,1=(H2,1+H2,2+H2,3+H2,4)/22;
e)金字塔特征表达
将图片I的特征H按一定顺序连接起来,即:
H=(H1,1,H2,1,H2,2,H2,3,H2,4,H3,1,H3,2,H3,3,...,H3,16)
上述步骤S103和步骤S105形成级联方式对窗口图像进行识别过滤,首先每个窗口图像都依次通过HOG-LBP分类器,得到的判定为目标的窗口图像再将判定为目标的窗口图像通过PHOW分类器,再一次过滤掉其中非目标的窗口图像。本实施例中,HOG-LBP分类器的阈值采用FPPI(False Positive per Image)=1 对应的阈值。
上述图像识别方法把多类特征分散到两级分类器中。一方面没有一次性将多种特征组合成高维特征,避免了在全图像、多尺度上同时扫描计算多种窗口特征的大计算量问题。另一方面第二级采用了形态特征描述子PHOW,并且 PHOW分类器的训练独立于第一级分类器(HOG-LBP分类器),这样第二级分类器就能过滤掉第一级分类器(边缘描述特征)无法去除的非目标的检测窗口,降低误判率。
一实施例中,上述步骤S106的聚类处理可包括如下动作:
设Xi=[xi,yi]与S′i分别为检测窗口的位置与尺度,为了保证在三维空间中是线性的,对尺度稍作处理,Si=log(S′i),那么检测得到的三维空间为y=[xi,yi,Si],我们对此三维空间中的检测结果进行聚类。每个检测结果权值t(y)为线性分类器的结果值函数,这里我们采用HOG-LBP的线性分类器,f(y)为特征向量为y的线性分类结果值,我们采用双S形函数(double sigmoid function)将其归一化到 [0,1],归一化函数为
其中r1和r2是线性范围的大小,该双S形函数在[-r1,r2]范围内基本上是线性的。
聚类算法:
1)为每个点计算协方差矩阵其中
σx,σy及σS分别为各个空间尺度上的平滑因子。
2)选择y∈{yi|i=1,..,n}进行迭代聚类,如果所有的样本均已聚类,则结束,返回7)。
6)如果迭代次数大于TIte或者||ynew-y||<Td,迭代结束,y的聚类结果为ynew,返回2);否则,y=ynew,返回3),继续计算。
7)将欧氏距离小于TS的迭代点重新聚类成一个新的点:设迭代点集合Si重新聚类成新的点即Si满足条件: 满足 为Si中迭代点的平均值其中为集合Si中元素的个数,的权值(置信度)为Si中迭代点的最大权值
如图4所示,其为一实施例的图像识别系统40的功能模块图,包括:
扫描模块401,用于获取影像,并通过不同尺寸的扫描窗口对影像进行扫描,得到多个窗口图像。
HOG-LBP特征提取模块402,用于提取各个窗口图像的HOG-LBP特征向量。
HOG-LBP识别模块403,用于将所述多个HOG-LBP特征向量依次通过预设的HOG-LBP分类器进行识别,得到多个初步判定为目标的窗口图像。
PHOW特征提取模块404,用于通过预设的PHOW字典提取所述初步判定为目标的多个窗口图像的图像特征。
PHOW识别模块405,用于将所述多个窗口图像的图像特征通过预设的 PHOW分类器进行识别,过滤掉非目标窗口图像,得到目标图像窗口图像。
聚类模块406,用于对所述目标窗口图像进行聚类处理,得到目标图像。
所述聚类模块406是使用带权值的MeanShift方法对目标窗口图像进行聚类处理。所述预设的HOG-LBP分类器,预设的PHOW字典,预设的PHOW分类器的得到方式与前述内容相同,不再赘述。
上述HOG-LBP识别模块403和PHOW识别模块405形成级联方式对窗口图像进行识别过滤,首先每个窗口图像都依次通过HOG-LBP分类器,得到的判定为目标的窗口图像再将判定为目标的窗口图像通过PHOW分类器,再一次过滤掉其中非目标的窗口图像。
上述图像识别系统40把多类特征分散到两级分类器中。一方面没有一次性将多种特征组合成高维特征,避免了在全图像、多尺度上同时扫描计算多种窗口特征的大计算量问题。另一方面第二级采用了形态特征描述子PHOW,并且 PHOW分类器的训练独立于第一级分类器(HOG-LBP分类器),这样第二级分类器就能过滤掉第一级分类器(边缘描述特征)无法去除的非目标的检测窗口,降低误判率。
下面是以在INRIA行人数据库上进行训练与测试为例进行实验及其结果。
选择合适的行人扫描窗口大小[Hn,Wn]=[128,64],并将训练的行人样本规格化到该大小,将所有的训练图像转化为灰度图像。
确定扫描尺度,设输入图像的大小为[Hi,Wi],初始扫描尺度为Ss=0.5,最终扫描尺度为Se=min{Hi/Hn,Wi/Wn},每级扫描放大倍数为Sr=1.05,那么扫描的放大倍数为S={Ss,SsSr,SsSrSr,...,Sn},Sn<Se
计算窗口图像HOG-LBP特征向量的步骤
将窗口图像[128,64]分割成8×8(oBin=8)大小的小单元,统计每个小单元在oBin=9个方向上的梯度投影统计直方图,这些方向为统计直方图时,累计是像素点的梯度模值。为了防止单元的边界影响,累计时在位置与方向上都进行线性插值。
将相邻的四个小单元组成一个块,将一个块内的统计直方图连接起来,并除以标准方差进行归一化处理。这些块之间有交叠,窗口图像分割成16×8 (nrow=128/8,nvol=64/8)个小单元,每个块的特征向量长度为4×9=36,窗口图像的HOG特征长度为N1=(nrow-1)×(nvol-1)×4×oBin=3780。
计算灰度图像的局部二进模式值,其中N表示比较像素个数,R表示距离,u表示均匀模式的阈值(uniformity measure)。LBPN,R为一般的LBP值,即
将窗口图像分割成方形块,块的边长为16个像素,统计每个块的LBP直方图,每个块得到一个59维的向量。
统计直方图时,块之间不交叠,窗口图像分割成8×4=32(Nrow=128/16, Nvol=64/16)个块,窗口图像可以获得长度为N2=Nrow×Nvol×59=1888的向量。
将窗口图像的HOG特征向量与LBP特征向量组合在一起,形成一个长度为N1+N2=5668的特征向量。
训练HOG-LBP线性分类器,这里训练使用的线性SVM均采用序优化方法(Sequential Minimal Optimization,SMO),迭代次数为3000000。
每个窗口图像都依次通过HOG-LBP分类器,得到的检测窗口再通过PHOW 分类器。分类器HOG-LBP的阈值T1要综合考虑丢失率与误判率(这里我们采用 FPPI(FalsePositive per Image)),在实际的过程中我们选择FPPI=1对应的阈值 T1=-0.686;而PHOW分类器的阈值T2的选择主要是用于过滤掉非行人检测窗口而保留行人检测窗口,T2的值一般比较低,选取T2=-1。在图片上进行扫描时,移动步长[dx,dy]一般设为dx=8,dy=8。检测时在多个尺度S上进行扫描,得到不同尺度上的行人检测窗口。
使用带权值MeanShift方法对最终的窗口图像进行聚类
设Xi=[xi,yi]与S′i分别为检测窗口的位置与尺度,为了保证在三维空间中是线性的,对尺度稍作处理,Si=log(S′i),那么检测得到的三维空间为y=[xi,yi,Si],我们对此三维空间中的检测结果进行聚类。每个检测结果权值t(y)为线性分类器的结果值函数,这里我们采用HOG-LBP的线性分类器,f(y)为特征向量为y的线性分类结果值,我们采用双S形函数(double sigmoid function)将其归一化到 [0,1],归一化函数为
其中r1=3和r2=3是线性范围的大小,该双S形函数在[-3,3]范围内基本上是线性的。
聚类算法:
为每个点计算协方差矩阵其中σx=8,σy=4及σS=log(1.3)分别为各个空间尺度上的平滑因子。
选择y∈{yi|i=1,..,n}进行迭代聚类,如果所有的样本均已聚类,则结束,返回7)。
计算平均协方差矩阵Hh,定义为
迭代计算,
设TIte=100,Td=0.001,如果迭代次数大于TIte=100或者||ynew-y||<Td,迭代结束,y的聚类结果为ynew,返回2);否则,y=ynew,返回3),继续计算。
将欧氏距离小于TS的迭代点重新聚类成一个新的点:设迭代点集合Si重新聚类成新的点即Si满足条件: 满足 为Si中迭代点的平均值其中为集合Si中元素的个数,的权值(置信度)为Si中迭代点的最大权值
如图5所示,其为上述INRIA数据库上的行人检测测试结果曲线图,横轴为误判率,纵轴为丢失率。PHOW的过滤功能可以去除掉一些HOG-LBP分类值较大(对HOG-LBP来说难于检测)的非行人窗口,提高系统的检测性能,将FPPI=1时对应的丢失率从HOG-LBP的0.2降低到了0.15。这主要是因为PHOW 可以在不同的特征空间中去除掉一些HOG-LBP特征难于正确分类的非行人窗口。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。