基于AdaBoost框架和头部颜色的实时人体检测方法转让专利

申请号 : CN201110104892.6

文献号 : CN102163281B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李智慧邵春艳李香

申请人 : 哈尔滨工程大学

摘要 :

本发明提供的是一种基于AdaBoost框架和头部颜色的实时人体检测方法,包括训练及检测两个步骤;(1)根据模板提取多尺度HOG特征;(2)采用AdaBoost-Boosting方法训练人体检测模型;(3)提取头部颜色直方图特征;(4)采用AdaBoost方法训练头部判别模型;(5)基于滑动窗口方法的人体检测;(6)对于每个检测窗口,先提取HOG特征,根据人体检测模型判别是否是人体;(7)对于判别为人体的窗口,提取头部直方图特征,判断是否包含头部;包含头部的窗口确定为包含人体的窗口,在图像中相应位置画出矩形。本发明采用的特征单元是原HOG特征的Block,而且是多尺度的Block,并结合了特征模板,提高了检测效果;增加了头部特征判别以提高检测率。

权利要求 :

1.一种基于AdaBoost框架和头部颜色的实时人体检测方法,包括训练及检测两个步骤;其特征是:训练阶段的步骤如下:

(1)根据模板提取多尺度HOG特征;

(2)采用AdaBoost-Boosting方法训练人体检测模型;

(3)提取头部颜色直方图特征;

(4)采用AdaBoost方法训练头部判别模型;

检测步骤如下:

(5)基于滑动窗口方法的人体检测;

(6)对于每个检测窗口,先提取HOG特征,根据人体检测模型判别是否是人体;

(7)对于判别为人体的窗口,提取头部直方图特征,判断是否包含头部;包含头部的窗口确定为包含人体的窗口,在图像中相应位置画出矩形;

所述根据模板提取多尺度HOG特征中,特征提取流程为:

(1)制作特征模板,并保存;

(2)载入特征模板,并按特征模板生成特征映射表;

(3)按特征映射表提取特征;

对于每个训练样本图像,特征提取分以下步骤:(1)将图像缩放为64×128大小;

(2)用[-101]的掩模计算其梯度幅值图像和方向角图像;

(3)将图像分别划分为基本单元为2、4和8的cell;计算多尺度cell特征;

(4)形成特征向量。

说明书 :

基于AdaBoost框架和头部颜色的实时人体检测方法

技术领域

[0001] 本发明涉及的是一种人体检测方法,具体涉及一种基于AdaBoost框架和头部颜色特征的实时人体检测方法。

背景技术

[0002] 人体检测在监控系统、驾驶员辅助系统以及灾难现场搜救等领域中有着广泛的应用。混乱背景下的人体检测是一项极具挑战性的任务。很多研究者致力于人体检测,并取得了一些成果。较成功的检测方法为HOG(Histograms of Oriented Gradients,方向梯度直方图)结合支持向量机(SVM)的方法,但这种方法检测速度慢。
[0003] Begard研究了不同类型的AdaBoost算法实现行人检测(J.Begard,N.Allezard,P.Sayd.Real-time human detection in urban scenes:Local descriptors and classifiers selection with adaboost-like algorithms.In Proceeding of CVPR Workshops,2008.),采用的是HOG-M特征,Begard采用的是HOG特征中的Cell作为提取特征的单元(而原HOG特征是将4个Cell合在一起的Block作为特征),特征维数只是原特征的四分之一。由于特征数较少,而且采用的是AdaBoost-Boosting分类方法,因此检测速度快,但是检测效果稍差。
[0004] 徐堃结合fisher判别分析对选出的弱分类方法进行训练(徐堃,徐佩霞.一种基于改进Adaboost的人体检测算法.电子技术(上海),2009(11):69-71.),学习得到一个新的线性判别方程,最大化不同类别数据之问的可分离性。

发明内容

[0005] 本发明的目的在于提供一种能提高检测的准确性的基于AdaBoost框架和头部颜色的实时人体检测方法。
[0006] 本发明的目的是这样实现的:
[0007] 包括训练及检测两个步骤;
[0008] 训练阶段的步骤如下:
[0009] (1)根据模板提取多尺度HOG特征;
[0010] (2)采用AdaBoost-Boosting方法训练人体检测模型;
[0011] (3)提取头部颜色直方图特征;
[0012] (4)采用AdaBoost方法训练头部判别模型;
[0013] 检测步骤如下:
[0014] (5)基于滑动窗口方法的人体检测;
[0015] (6)对于每个检测窗口,先提取HOG特征,根据人体检测模型判别是否是人体;
[0016] (7)对于判别为人体的窗口,提取头部直方图特征,判断是否包含头部;包含头部的窗口确定为包含人体的窗口,在图像中相应位置画出矩形。
[0017] 本发明与已有技术的不同之处是采用的特征单元是原HOG特征的Block,而且是多尺度的Block,并结合了特征模板,提高了检测效果。此外,本发明增加了头部特征判别以提高检测率,降低假报警率。
[0018] 本发明在INRIA数据库上的实验结果证明了该方法的有效性,同时检测时间也达到了实时性。

附图说明

[0019] 图1cell特征计算流程;
[0020] 图2(a)-(b)梯度平均图像与特征模板,其中图2(a)梯度平均图像、图2(b)特征模板;
[0021] 图3AdaBoost分类方法的结构;
[0022] 图4层类器结;
[0023] 图5基于组特征的AdaBoost算法;
[0024] 图6组特征分类方法训练算法;
[0025] 图7检测流程图;
[0026] 图8HOG特征检测算法;
[0027] 图9头部检测算法;
[0028] 图10头部颜色的bin数与假报警率关系;
[0029] 图11本发明方法的检测性能。

具体实施方式

[0030] 下面举例对本发明做更详细的描述:
[0031] 1训练----HOG特征提取
[0032] 1.1特征提取流程
[0033] 特征提取流程如下。
[0034] (1)制作特征模板(具体方法见1.3节),并保存;
[0035] (2)载入特征模板,并按特征模板生成特征映射表(具体方法见1.3节);
[0036] (3)按特征映射表提取特征;
[0037] 对于每个训练样本图像,特征提取分以下步骤完成。
[0038] (1)将图像缩放为64×128大小;
[0039] (2)用[-1 0 1]的掩模计算其梯度幅值图像和方向角图像;
[0040] (3)将图像分别划分为基本单元为2、4和8的cell;计算多尺度cell特征;
[0041] (4)形成特征向量(见1.3节)。
[0042] 1.2多尺度cell特征的计算
[0043] HOG特征采用64×128像素的训练样本图像及检测窗口,将该窗口划分成以若干个cell,对每个cell按图1计算出9维特征。然后再将每相邻的4个cell(田字形结构的4个cell)划分为1组(block),将每个block中的4个cell的梯度直方图的数据串联起来每个Block便是一个36维的向量。最后将所有的block依次串联起来,便形成了对每个训练图像的。
[0044] 本发明采用多尺度HOG特征,采用的cell尺度包括为2、4和8,相应的block大小即为4、8和16。不同大小的cell都具有9维特征,构成的block也都有36维特征,在64×128的图像上一共有2280个block。cell特征的计算如错误!未找到引用源。所示。
[0045] 1.3制作特征模板的方法
[0046] (1)特征模板的生成
[0047] 采用AdaBoost分类方法训练模型时,训练实例的选择会影响训练效果,本发明采用INRIA数据集中的训练正例,大部分正例的背景较简单,因此分类方法在选择特征时经常会选择到背景部分,遇到背景复杂的检测窗口则检测效果不好。HOG特征为形状特征,为强制分类方法选择人体边缘部分的块进行判断,我们根据训练实例的梯度图像制作了特征选取模板。特征模板制作的方法如下。
[0048] 第一步计算每个训练实例的梯度图像,然后计算所有训练实例梯度图像的平均值,得到平均梯度图像。
[0049] 第二步,在平均图像画出8×8的网格,选择计算特征所用到的块。梯度图像和特征模板如图1所示。错误!未找到引用源。标记的cell所在的block都被选作模板中的block(除第2行和第15行以外),一共58个16×16的block。
[0050] 4×4和2×2的cell可以根据8×8的cell计算出来,一共1218个block。把所有block按生成顺序给出特征号,把特征号对应的block尺度和左上角坐标存入特征映射表。
[0051] 选择特征模板后,分类方法特征的选择都在人体边缘附近,提高了分类方法的分类效果。
[0052] (2)模板特征的计算
[0053] A.从特征映射表取出每个block的信息;
[0054] B.1.2节中block和cell的关系转换为4个cell的信息,按图1计算每个cell的特征向量;
[0055] C.按计算顺序形成36维向量。
[0056] 2训练----AdaBoost--Boosting分类方法
[0057] AdaBoost分类方法是一种由弱分类方法组合构成强分类方法算法,该分类方法的突出优点是可以根据训练样本筛选特征,并且检测速度快,因而得到了广泛的应用,本发明采用AdaBoost分类方法实现人体检测。AdaBoost分类方法中弱分类方法一般是一维阈值分类方法,但本发明采用HOG特征,一个Block的特征为36维。采用SVM作为弱分类方法则使训练时间太长,模型较大,而且不容易调整样本权值。所以本发明采用Boosting分类方法作为弱分类方法(本发明称为组分类方法),对应HOG特征一个Block的36维向量。Boosting分类方法下的每一维特征采用阈值分类方法。
[0058] (1)将正例、反例和补充反例图像按第1节方法计算好特征;
[0059] (2)输入到分类算法中,具体方法见2.2节;
[0060] (3)保存人体检测模型;
[0061] 2.1分类方法结构
[0062] AdaBoost分类方法采用基于层的否绝机制,每层是一个强分类方法。如错误!未找到引用源。所示,其中C1,C2,...为层分类方法。其分类性能由高到低排列,只有当前层判断为正例的样本才能进入到下一层。本发明中,每一层的强分类方法由若干组分类方法构成,组分类方法由若干单特征的阈值分类方法构成。其结构如错误!未找到引用源。所示。
[0063] 2.2分类算法
[0064] AdaBoost算法通过调整样本权值使不同弱分类方法侧重于不同的样本,这样使多个分类性能不强的弱分类方法,组合成一个强分类方法。本发明的阈值分类方法通过这种方式构成组分类方法,同样,组分类方法也通过这种方式构成层分类方法。层分类方法通过否绝的方式淘汰反例样本。
[0065] 2.2.1层分类方法训练算法
[0066] 对于给定正例样本和反例样本(X1,Y1),……,(Xn,Yn),其中Yi=1,0分别表示正例样本和反例样本。Xi={xi11,xi12,……,xi1p,……,xiq1,xiq2,……,xiqp},每个样本包括q组特征,每组特征具有某种相同属性。每组特征包括p维特征,所以每个样本的特征维数为p×q。假设正例样本和反例样本数分别为m和n-m。分类方法训练算法如图5所示。
[0067] 权值初始化公式如式(1)所示。
[0068]
[0069] 当样本权值调整后,根据下式将其归一化。
[0070]
[0071] 层分类方法判别如下所示,层分类方法是选择出的所有组分类方法投票结果。
[0072]
[0073] Gt(x)为组分类方法判断结果,αt为组分类方法的置信度或权值,计算方法见式(5)。
[0074] 当前层错误样本数εt的计算见式(4)。层分类方法判断方法为式(3),组分类方法的判断方法类似于式(3)。
[0075]
[0076] 其中
[0077]
[0078] 每个组分类方法具有一个置信度或权值αt,其计算公式如下所示。
[0079]
[0080]
[0081] 从上式可以看出,错误率越高的分类方法其置信度越小。
[0082] 每次选出一个组分类方法后,样本的权值w都需要更新,更新公式为式(6)。
[0083]
[0084] 当样本分类错误时,其权值不变;当样本分类正确时,权值乘一个小于1的数,使权值变小。
[0085] 当每一层的错误率达到目标错误率或选择的组特征数达到上限时,该层训练结束。将层分类方法模型保存起来,层分类方法模型为该分类方法中所包括的组分类器编号(对应特征编号)和组分类方法模型。
[0086] 2.2.2组分类方法和单特征分类方法的训练算法
[0087] (1)单特征分类方法
[0088] 单特征阈值分类方法包括两个参数,一是正例符号s,s只取{-1,1},当s取1时特征值大于阈值T时为正例,当s取-1时,特征值小于阈值T时为正例。判断表达式如式(1)所示。
[0089]
[0090] 其中fjk(x)为第j组中第k特征值,Tjk为该特征值的阈值,sjk为正例符号,hjk(x)为判断结果。
[0091] 其训练方法是将该特征值范围划分为若干个bin,分别计算阈值取每个bin的边界值,及sjk取{-1,1}时的分类错误率,取错误最小的边界值和sjk作为分类方法模型参数。
[0092] (2)组分类方法训练算法
[0093] 组特征分类方法确定一组p维特征的判别模型,它是一个p×4的矩阵,每行对应一个特征,每个特征的分类方法参数分别是该特征值的阈值Tjk,正例符号sjk,该分类方法的权重αhjk,根据式(5)计算。算法如错误!未找到引用源。所示
[0094] 组分类方法输入了层分类方法的样本权值作为其初始权值,在此基础上,计算每个阈值分类方法的错误率,根据样本划分情况调整权值,但是调整后的权值并不带到层分类方法中,层分类方法根据该组分类方法对样本划分情况重新调整权值。
[0095] 3训练----头部直方图特征的提取与训练
[0096] 人体较有特点的地方主要是头部。头部主要是肤色和头发,其颜色和纹理虽然有变化,但变化较少,容易区分。所以本发明通过头部的颜色信息对HOG特征的判断结果进行进一步的判别。
[0097] (1)特征提取
[0098] 由于检测窗口大小固定,所以头部也有一个固定的范围。根据梯度模板,本发明选择窗口中上部头部位置的一个16×16大小的区域,计算其直方图作为判别特征。实验表明,肤色适合用HSI模型来判断,头发(黑色)较适合用RGB模型来判断。我们计算了上述区域中的RGB和HSI模型6个分量的直方图作为特征。由于训练图像的分辨率较低,所以直方图的bin数不需要太多。本发明经验验证(见错误!未找到引用源。),选择bin数为100,这样一共得到600维特征。该特征的训练样本与HOG特征的训练样本完全一样。
[0099] (2)基于AdaBoost算法的训练
[0100] AdaBoost算法框架与第2节的方法是一样的,只要把图5中的“训练第j组特征分类方法”换成式(7)描述的单特征分类方法,算法其余的部分按图5算法执行即可。
[0101] 2.2.3检测算法
[0102] 检测时采用窗口扫描算法,对于每个窗口,根据分类方法模型,从第一层开始,依次计算当前层所有选择出的所有组特征,计算出组分类方法判断结果,然后根据式(3)计算出层分类方法判断结果,如果该窗口通过当前层的判断,即当前层判断为正例,则进入下一层的判断。否则,该窗口被判为反例。只有所有层都判断为正例的窗口才被判断为正例。
[0103] 4检测算法
[0104] 检测时采用窗口扫描算法,用64×128的检测窗口,在图像中以步长8滑动。对于每个窗口按下述流程实现检测。如果最后的验证通过,则bIsHuman=1,即表明该检测窗口经验证包含人体;否则bIsHuman=0,该窗口非人体,具体见错误!未找到引用源。。
[0105] (1)HOG+AdaBoost人体检测
[0106] 检测前需要载入分类模型和特征映射表,对每个检测窗口按下述算法进行检测。
[0107] bPassDetect=1时表示该检测窗口包含人体。
[0108] (2)头部验证
[0109] 头部模型不需要特征映射表,只载入分类模型,分类模型中没有组分类器。bPassDetect=1时表示该检测窗口包含人体,算法如图9所示。
[0110] 5实验结果与分析
[0111] 本发明方法在INRIA测试集进行了测试,该测试集背景复杂,难度较高。每层的最大错误率为第1-3层为0.1,以后为0.2。训练得到一个5层的分类方法,第一层和第二层的块数分别为5和9,后面的块数都为30。
[0112] 我们也采用DET曲线来评价性能,相关定义见文献。相关实验在Pentium43.0GHZ,1GB内存计算机上完成。
[0113] (1)头部颜色特征参数选择
[0114] 头部区域的位置通过梯度平均图像确定。主要的参数是颜色直方图的bin数确定。引入颜色特征主要为了减少假报警率,所以我们通过确定检测率(90%)情况下,假报警率指标(FPPW)来确定合适的bin数。
[0115] 从错误!未找到引用源。中看出,bin数太多和太少,都会使假正例率升高。100-120的bin数是比较合适的,所以我们选择bin数为100。
[0116] (2)检测性能
[0117] 结合了特征模板和头部颜色特征的检测方法的性能如错误!未找到引用源。所示。
[0118] 从错误!未找到引用源。可知,AdaBoost-Boosting算法和结合模板的算法都低于HOG方法的检测率,只有结合了头部颜色特征的检测算法超过了HOG的性能,在FPPW为10-4情况下,检测率达到了92%。
[0119] 本发明算法采用的都是Cascade框架的算法,检测速度较快,时间为每窗口0.07ms,是检测率与检测时间的较好折衷。
[0120] 6结论
[0121] 本发明提出一种基于AdaBoost框架及头部颜色特征的人体检测算法,采用AdaBoost-Boosting算法结合HOG特征实现快速的人体检测,通过定义特征模板限制AdaBoost算法特征特征选择的位置,并选择模板头部位置区域计算其直方图。以直方图作为特征对检测为正例的窗口进行进一步的筛选,筛选的算法为传统的单特征AdaBoost算法,通过验证的窗口才判断为正例。上述两种处理不同程度地降低了假报警率,提高了检测算法的性能。经实验验证,本发明算法是检测效果与检测时间的较好折衷。