« Bag of Word闲谈opencv 中SVM + PCA 人脸识别 »

AdaBoosting----小分类器累积的力量

粗略的来说,在模式识别中,通常目标是用现有的样本信息,通过数学建模的手段,得到一个数学模型,然后利用该数学模型对未知的新样本进行匹配。其实这里面也牵涉到了一些从未知到已知的一个科学空间里面(即泛化能力)。


    精确分类的方法(称精确并非结果就一定要优于其他方法,只是实在想不到一个好的名字了,暂时就这样吧):     
    这类方法在已知的空间里面,通过一系列的手段对整个样本集做出最优的划分。像Fisher[2]线性判据就是希望能够使得同类收缩,而异类能够分离。还有SVM[1]在二维分类器中找出能够使得两类样本有最大准确率的分类面。这些方法的共同特点就是一个确定性(也可以说是确定性的分类)即判断符合判断准则即为是,相反为否(这里的确定性跟准确度无关)。

    AdaBoost:
    Boosting的框架可以算作一个革命性的东西,它不在是一味的利用所有的训练样本来进行一个确定性的学习,而是通过一系列弱的分类器,各自在自己的领域里面做出判断,最终得到一个结果。这样的思想就好像一些选秀节目,评委都不会只有一个。不同的评委就可以从不同的角度来审视一位选手(形象、声音、气质...)。最终通过一系列的投票决定这位选手是晋级还是淘汰。这倒是跟人类的学习行为有点相似。人类的学习行为大多数都会是有一个模糊的过程。譬如在很远的一个地方你看到了一个人,虽然可能因为近视眼或者别的什么看不太清楚,但却是可以通过身形、走路的姿势...一些“弱”的分类器来判断,这个人是不是自己的朋友。当然,这样的框架要想很好的利用,也是必须需要大量的样本。     


    浅解AdaBoost in Face detection的过程:(这里牵涉到积分图像。一笔带过,即:该点之前所有点的灰度之和定义为这点的积分图像。)

    利用haar矩形特征,在积分图像中进行简单查表运算,模版24*24的图像有160,000+个矩形特征(针对传统的5个矩形特征[1])。虽然一个模版的矩形特征看上去不是很庞大,但利用统计学来训练分类器的时候一般会有几千个这样的(+,-)样本出现,所以最终的haar-like是非常巨大,而AdaBoost则是很好的解决了这一问题,很好的选择出了有利的矩形特征(其是haar矩形特征结合boosting的框架之后更多的都是利用这样一个优秀的弱分类其框架来进行特征的选择)。

    具体过程如[1]:
    1  每一个矩形特征单独训练(不同尺度、位置不同其实算作不同的矩形特征)
    2  得到每一个矩形特征的正负样本特征后,进行分类。(如160,000个特征就有160,000个分类器)
    3  选择最低错误率的分类器。(注意:错误率不能大于50%)
    4  权值改变,其目标是使得正确分类样本作用变小,错误分类样本作用变大,方便再次选择最佳弱分类器。
    5  迭代。

    最终通过一系列的小分类器可以得到一个performance well的分类器。
    当然,从这个过程中可以看出,其训练过程非常的慢。

参考文献:
[1] Viola P.,Jones M. J.、Rapid Object Detection using a Boosted Cascade of Simple Features、Computer Vision and Pattern Recognition, 2001、Volume 1, 8-14 
[2] Burges, Christopher J. C., A Tutorial on Support Vector Machines for Pattern Recognition、Data Mining and Knowledge Discocovery 2:121–167, 1998
[3] http://en.wikipedia.org/wiki/Linear_discriminant_analysis

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。