基于C#的机器学习--面部和动态检测-图像过滤器 (2)

Boosting从其他弱学习算法中获取输出,并将其与weighted sum(加权和)结合,加权和是boost分类器的最终输出。AdaBoost的自适应部分来自于这样一个事实,即后续的学习者被调整,以支持那些被以前的分类器错误分类的实例。

       与其他算法相比,该算法更倾向于对数据进行过拟合,所以AdaBoost对噪声数据和异常值很敏感。因此我们在准备数据的时候,需要格外注意这一点。

       现在,让我们来看看示例中的程序到底是如何工作的。对于这个示例,我们将再次使用Accord框架。

       首先创建一个FaceHaarCascade对象。该对象包含一系列 Haarlike 的特征的弱分类阶段的集合。每个阶段都包含一组分类器树, 这些分类器树将在决策过程中使用。FaceHaarCascade自动为我们创建了所有这些阶段和树,而不需要我们去关心具体实现的细节。

       首先,需要在底层构建一个决策树,它将为每个阶段提供节点,并为每个特性提供数值。以下是Accord的部分源码。

List<HaarCascadeStage> stages = new List<HaarCascadeStage>(); List<HaarFeatureNode[]> nodes; HaarCascadeStage stage; stage = new HaarCascadeStage(0.822689414024353); nodes = new List<HaarFeatureNode[]>(); nodes.Add( new[] { new HaarFeatureNode( 0.004014195874333382,0.0337941907346249, 0.8378106951713562, new int[] { 3, 7, 14, 4, -1 }, new int[] { 3, 9, 14, 2, 2 } ) } ); nodes.Add( new[] { new HaarFeatureNode( 0.0151513395830989, 0.1514132022857666, 0.7488812208175659, new int[] { 1, 2, 18, 4, -1 }, new int[] { 7, 2, 6, 4, 3 } ) } ); nodes.Add( new[] { new HaarFeatureNode( 0.004210993181914091, 0.0900492817163467, 0.6374819874763489, new int[] { 1, 7, 15, 9, -1 }, new int[] { 1, 10, 15, 3, 3 } ) } );

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzxyw.html