发明名称 一种改进的AdaBoost分类器构造方法
摘要 本发明提供一种改进的AdaBoost分类器构造方法,属于图像检测技术领域。本发明首先将样本的类Haar特征值与其类别标签结合起来生成候选分类位置集,从候选分类位置集中寻找使分类错误最小的位置,基于此位置构造弱分类器,并同时提供一种自适应的弱分类器阈值构造方法。本发明较好地解决了AdaBoost分类器训练准备时间过长以及性能的提升问题,将其结合类Haar特征用于车辆图像检测实验,与传统AdaBoost分类器方法相比,明显减少了分类器的训练所需时间,同时还提升了其识别性能。
申请公布号 CN101964063A 申请公布日期 2011.02.02
申请号 CN201010280835.9 申请日期 2010.09.14
申请人 南京信息工程大学 发明人 文学志;郑钰辉;方巍
分类号 G06K9/66(2006.01)I 主分类号 G06K9/66(2006.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 许方
主权项 一种改进的AdaBoost分类器构造方法,包括:步骤(1)、获取图像感兴趣区域;步骤(2)、计算积分图;步骤(3)、获得弱分类器;步骤(4)、将步骤(3)得到的弱分类器组合成强分类器;其特征在于:所述步骤(3)中获得弱分类器的步骤为:(3)‑Ⅰ、设所有类Haar特征在训练样本集S上得到的特征值集合为矩阵A: <mrow> <mi>A</mi> <mo>=</mo> <mfenced open='(' close=')'> <mtable> <mtr> <mtd> <msub> <mi>a</mi> <mn>11</mn> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mn>12</mn> </msub> </mtd> <mtd> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mn>1</mn> <mi>j</mi> </mrow> </msub> </mtd> <mtd> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mn>1</mn> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>a</mi> <mn>21</mn> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mn>21</mn> </msub> </mtd> <mtd> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mn>2</mn> <mi>j</mi> </mrow> </msub> </mtd> <mtd> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> </mtr> <mtr> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> </mtr> <mtr> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>a</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mi>i</mi> <mn>2</mn> </mrow> </msub> </mtd> <mtd> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> </mtd> <mtd> <msub> <mi>a</mi> <mi>ij</mi> </msub> </mtd> <mtd> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> </mtd> <mtd> <msub> <mi>a</mi> <mi>in</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> </mtr> <mtr> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> </mtr> <mtr> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&CenterDot;</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mn>2</mn> </mrow> </msub> </mtd> <mtd> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> </mtd> <mtd> <msub> <mi>a</mi> <mi>mj</mi> </msub> </mtd> <mtd> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> </mtd> <mtd> <msub> <mi>a</mi> <mi>mn</mi> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow>其中n表示训练样本集中样本的个数,m代表一张归一化为32×32的灰度图中构造的类Haar特征的个数,a11表示第1个类Haar特征在第1个样本上的值;aij表示第i个类Haar特征在第j个样本上的值,其中i∈{1,2,…,m},j∈{1,2,…,n},依此类推;(3)‑Ⅱ、进行迭代训练;Ⅱ‑1,采用基于计算积分图的方法求第i个类Haar特征在训练样本集S上的特征值,设对应的特征值构成的向量为Vec,样本xj的权值为wj,类型为yj,yj∈{‑1,+1},其中1表示车,‑1表示非车,Vec[j]的值为在样本xj上的特征值;Ⅱ‑2,生成候选分类位置集:Ⅱ‑2.1,对特征向量排序:将对应的特征值构成的向量Vec中的元素由小到大排序得到新的向量SortVec,设排完序后对应的类别标签向量变为Lab;Ⅱ‑2.2,构造候选分类位置集:从左向右察看所有类别标签出现变化的位置对,判断所述出现变化的位置对所对应的特征值是否相同;若特征值不同,将所述位置对的第一个位置放入候选分类位置集中;若特征值相同,首先向左查找与所述相同特征值不同的第一个特征值,判断该特征值对应的位置是否已包含在候选分类位置集中,若该特征值对应的位置没有包含在候选分类位置集中,则将该特征值对应的位置加入候选分类位置集中;然后再向右查找与所述相同特征值不同的第一个特征值,断该特征值对应的位置是否已包含在候选分类位置集中,若该特征值对应的位置没有包含在候选分类位置集中,则将该特征值对应的位置加入候选分类位置集中;记得到的候选分类位置集为L={l1,l2,…,lk′},其中k′为候选分类位置的个数,每一个候选分类位置用特征值对{SortVec(j‑1),SortVec(j)}来表示,记为li′,i′=1,2,…,k′;Ⅱ‑3,求最佳分类位置:从步骤Ⅱ‑2.2得到的候选分类位置集L中选取一个使得分类错误最小的分类位置作为最佳分类位置τ,τ∈L;Ⅱ‑4,设置分类阈值:Ⅱ‑4.1,设当特征值小于等于SortVec[τ‑1]时,类别输出为Label;设当特征值大于等于SortVec[τ]时,类别输出为‑Label,其中,Label∈{‑1,+1};当特征值小于等于SortVec[τ‑1]时,类别输出为Label的先验概率P1为: <mrow> <msub> <mi>P</mi> <mn>1</mn> </msub> <mrow> <mo>(</mo> <mi>Label</mi> <mo>|</mo> <mi>SortVec</mi> <mo>[</mo> <mi>j</mi> <mo>]</mo> <mo>&le;</mo> <mi>SortVec</mi> <mo>[</mo> <mi>&tau;</mi> <mo>-</mo> <mn>1</mn> <mo>]</mo> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <munder> <mi>&Sigma;</mi> <mrow> <msub> <mi>y</mi> <mi>j</mi> </msub> <mo>=</mo> <mi>Label</mi> </mrow> </munder> <msub> <mi>w</mi> <mi>j</mi> </msub> </mrow> <mrow> <munder> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>&le;</mo> <mi>&tau;</mi> <mo>-</mo> <mn>1</mn> </mrow> </munder> <msub> <mi>w</mi> <mi>j</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>当特征值大于等于SortVec[τ]时,类别输出为‑Label的先验概率P2为: <mrow> <msub> <mi>P</mi> <mn>2</mn> </msub> <mrow> <mo>(</mo> <mo>-</mo> <mi>Label</mi> <mo>|</mo> <mi>SortVec</mi> <mo>[</mo> <mi>j</mi> <mo>]</mo> <mo>&GreaterEqual;</mo> <mi>SortVec</mi> <mo>[</mo> <mi>&tau;</mi> <mo>]</mo> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <munder> <mi>&Sigma;</mi> <mrow> <msub> <mi>y</mi> <mi>j</mi> </msub> <mo>=</mo> <mo>-</mo> <mi>Label</mi> </mrow> </munder> <msub> <mi>w</mi> <mi>j</mi> </msub> </mrow> <mrow> <munder> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>&GreaterEqual;</mo> <mi>&tau;</mi> </mrow> </munder> <msub> <mi>w</mi> <mi>j</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>其中,wj为第j个训练样本的权值,yj为第j个训练样本的真实类别;Ⅱ‑4.2,当P1=0或P2=0,直接进入(3)‑Ⅲ步骤;Ⅱ‑4.3,当P1≠0并且P2≠0时,分类阈值θi,即第i个类Haar特征所对应的弱分类器分类阈值,设置方法如下: <mrow> <msub> <mi>&theta;</mi> <mi>i</mi> </msub> <mo>=</mo> <mi>SortVec</mi> <mo>[</mo> <mi>&tau;</mi> <mo>-</mo> <mn>1</mn> <mo>]</mo> <mo>+</mo> <mfrac> <mrow> <msub> <mi>P</mi> <mn>1</mn> </msub> <mo>*</mo> <mo>|</mo> <mi>SortVec</mi> <mo>[</mo> <mi>&tau;</mi> <mo>-</mo> <mn>1</mn> <mo>]</mo> <mo>-</mo> <mi>SortVec</mi> <mo>[</mo> <mi>&tau;</mi> <mo>]</mo> <mo>|</mo> </mrow> <mrow> <msub> <mi>P</mi> <mn>1</mn> </msub> <mo>+</mo> <msub> <mi>P</mi> <mn>2</mn> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>Ⅱ‑5,根据以上的阈值,在给定的样本权重分布下构造弱分类器如下: <mrow> <msub> <mi>f</mi> <mi>i</mi> </msub> <mo>=</mo> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>pSortVec</mi> <mi>j</mi> </msub> <mo>&lt;</mo> <mi>p</mi> <msub> <mi>&theta;</mi> <mi>i</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mo>-</mo> <mn>1</mn> </mtd> <mtd> <mi>otherwise</mi> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>其中SortVecj为第i个类Haar特征在第j个样本上相应的特征值,p∈{‑1,+1}表示分类方向;Ⅱ‑6,计算每个弱分类器对样本集的分类错误率: <mrow> <msub> <mi>e</mi> <mi>i</mi> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mtext>j=1</mtext> <mi>n</mi> </munderover> <msub> <mi>w</mi> <mi>j</mi> </msub> <mo>|</mo> <msub> <mi>f</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mi>y</mi> <mi>j</mi> </msub> <mo>|</mo> <mo>,</mo> </mrow>其中wj代表样本xj的权值,fi(xj)表示基于第i个类Haar特征构造的弱分类器fi对样本xj的分类结果;Ⅱ‑7,选取分类错误最小的弱分类器,并根据其分类效果对样本的权值进行更新:即分类错误的样本权值升高,而分类正确的样本权值降低;(3)‑Ⅲ、反复进行步骤(3)‑Ⅱ的迭代训练过程,直至分类错误趋近于零。
地址 210044 江苏省南京市宁六路219号