10年后再看Robust Real-Time Face Detection(二) 之学习分类函数

给定我们一个特征集合, 一个训练样本集(也就是一幅幅样本图像。 图像可能是有人脸的图像(称为positive images), 图像也可能不含人脸的图像(negative images))。 那么我们的任务就是采用机器学习的算法学习一个分类函数。一旦学习到了这个函数, 我们就可以利用这个函数对一幅未知的图像进行分类了。 在机器学习领域中称为监督学习。

然而, 问题是, 对于每一个图像子窗口(each image sub-window), 我们都能够计算出与之相关的160,000个矩形特征,数目远远超过了窗口内像素的个数。 也就是这个窗口对应的特征向量的维数是相当大的。 尽管我们利用积分图能够很快地计算出矩形特征, 然而要计算如此大数目的矩形特征显然代价也是很昂贵的, 同时也是没必要的, 吃力不讨好。

这里, 我们利用实验上的一个假设, 就是我们可以从160,000个特征中只选择其中少量数目的特征, 用这些少量的, 高效的特征组建很有效的分类器。 这个主意很不错, 然而接下来, 我们就面对一个主要的挑战, 那就是如何从这么多的特征中, 选择出这些少量的, 具有点石成金作用的特征呢??

这并没有难倒大牛Viola Jones。 他解决这个问题的办法就是采用了Adaboost算法的一个变体(variant), 具体原理如下:

Adaboost学习算法的主要思想就是采用一组弱分类器组合成一个强的分类器, 从而提高分类的性能。 弱分类器的优点就是简单, 容易实现。 缺点就是“弱”, 也就是说弱分类器无法对我们的训练数据做出准确的分类(例如, 一个弱分类器可能在51%的时间内能够对一个训练样本做出准确的分类, 剩下的时间内可能对这个样本误分)。当第一个弱分类器实现对所有的训练样本分类后, 我们从这一级类器产生误分的样本选择出来, 然后增大这些误分样本的权重(或者说提高其被下一级弱分类器选中的概率), 重点关照。 然后重新分类。依次进行下去,。。, 最终, 我们将所有的弱分类器组合起来, 加权平均, 设定一个阈值, 作为新的强分类器的Perceptron,  这样我们就得到了一个强的分类器。

传统的Adaboost 如何能够帮助我们从如此大数量的矩形特征中选择出最佳特征呢? 不难类比得到, 其实Adaboost很容易被我们看成是贪婪的选择最佳特征的过程(a greedy feature selection process)。试想, 传统的Adaboost 其实就是通过采用一种贪婪的机制给好的分类函数更大的权重, 差的分类函数更小的权重, 然后组合起来, 最终我们得到了一个好的分流函数。在选择最佳的特征时候, 原理也是这样的。 我们所需要做的就是将我们的弱分类器的分类函数限制为为只依赖于一个特征的单变量函数。为了实现这个目标, 我们的弱学习算法只选择一个能够最佳的分类出我们训练样本的矩形特征(the single rectangle feature)。 对于每一个矩形特征,  找到一个阈值, 从而使得我们的弱分类器能够对我们的样本实现最小的误分率。 分类Perceptron函数如下:


其中, x 是图像的24 x 24像素子窗口(或者是检测子)。f是我们选择的一个的矩形特征,θ是我们找到的最佳阈值, p 代表记性(polarity), 表面不等式的方向。

事实上, 单单采用一个矩形特征对这个子窗口分类的误差是很大的。 能够达到0.1 ——0.3.。 当然这是第一轮的情况。 第二轮的时候, 误差达到了0.4——0.5。该算法的伪代码如下:





实时系统是指在严格的时间限制下,对输入数据进行处理并及时产生输出响应的系统。在实时系统中,一个重要的因素是系统的架构设计,而对于实时系统的架构设计来说,一个关键的考虑因素是其鲁棒性和可扩展性。 所谓鲁棒性,是指系统能够应对各种异常情况和外部干扰而保持正常工作的能力。在实时系统中,鲁棒的架构可以通过多种方式实现,例如使用冗余设计和错误处理机制。冗余设计可以通过多个处理器或模块的冗余部署来提高系统的容错能力,以便在一个处理器或模块发生故障时,系统依然能够正常工作。而错误处理机制可以包括错误检测和错误恢复两个方面,以保证系统对错误的及时发现和恢复能力。 可扩展性是指系统能够根据实际需求进行灵活的扩展和升级的能力。对于实时系统来说,可扩展的架构可以基于不同的需求进行模块的添加或替换,以满足不同规模和性能要求的系统。例如,当实时系统的负载增加时,可以通过增加处理器数量或增加存储容量来扩展系统的性能。 对于实时系统的架构设计,一个常用的方法是采用分布式架构。在分布式架构中,系统的不同功能模块可以分布在不同的节点上,通过通信和协作来完成任务。这种设计能够充分利用分布式计算和通信的特点,提高系统的并行度和可靠性。 综上所述,Robust scalable architecture for real-time systems(实时系统的强韧可扩展架构)PDF提供了一种鲁棒性和可扩展性的实时系统架构设计方案。该架构通过冗余设计和错误处理机制实现系统的鲁棒性,同时采用分布式架构实现系统的可扩展性。这样的架构设计能够有效应对实时系统中的异常情况和外部干扰,并能够根据实际需求灵活扩展系统的性能和规模。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值