计算机视觉基础系列(python与opencv的操作与运用/tensorflow的基础介绍)(二十)---adaboost分类器

 adaboost分类器

Haar特征一般与adaboost分类器在一起运用,在人脸识别上运用较为成熟。

adaboost分类的特点是:前一个分类器分出来的样本,在下一个分类器中会得到加强,加强后的样本继续做分类训练作为下一个基本的分类器。例如:三个苹果和一个香蕉,想要通过分类器讲苹果和香蕉区分出来,第一次经过分类器的时候,三个苹果的值为0.1,香蕉为0.5,经过第二个分类器的时候0.5的值会继续快速增大,就是香蕉的权重快速变大,这就是adaboost分类器的特点,负样本会逐渐加强,正样本的值会逐渐减小。

那么训练的中止条件是什么呢?

 1,循环的次数规定         2,正样本或者负样本某个系数的规定值。例如香蕉的系数到了0.7中止

下面从三个方面来介绍分类器

1,分类器的结构            2,adaboost的计算过程                    3,xml文件结构

1 分类器的结构 

一个个的判决的过程,例如判断Haar>T1且Haar>T2则判断为苹果,级联分类器,这里由两个强分类器组成,其实一般是由15-20个强分类器来组成的,其实也是一个设置阈值的过程。

强分类器的结构(判决):强分类器以三个级联在一起,Adaboost以三个强分类器级联在一起的时候,例如第一个强分类器的特征为x1,阈值为t1;第二个强分类器的特征为x2,阈值为t2;第三个强分类器的特征为x3,阈值为t3。在判决的时候:

x1>t1;x2>t2;x3>t3这里都通过了才可以判决,只要有任何一个不通过则不可以。阈值来源于之前一个个的分类器得到的值。

一个强分类器可以分解为若干个弱分类器;一个弱分类器可以分割为若干个特征Node。

弱分类器的结构(计算强分类器的特征):计算x1,x2,x3;例如:

x2 = sum(若干个弱分类器计算得到的特征)构成强分类器的特征;强分类器的特征计算,这里表示为x2 = sum(y1,y2,y3)

那么弱分类器的特征又是如何计算的呢?

 可以知道的是弱分类器是由弱干特征Node节点组成。在opencv中,一个弱分类器最多支持3个Haar特征,也就对应的每个弱分类器最多三个haar的node节点,每一个特征构成一个node节点,所以三个haar特征就有三个节点,每一个特征看作一个节点。对于每个节点来说

haar>nodeT1,haar特征大于一个阈值的时候,z1 = a1,这个特征就赋值为a1;若haar<nodeT1,haar特征小于一个阈值的时候,z1 = a2,这个特征就赋值为a2。每一个节点都可以得到三个值,则整个node节点的和S=sum(z1,z2,z3),若Z>T,则y1=AA,这里的意思就是说弱分类器得到的特征大于一个阈值,则赋值为AA,若Z<T,则y1=BB。

2 adaboost的计算过程

  1. 初始化数据权重分布(需要公式计算的);
  2. 遍历判决阈值,计算出一系列的误差概率,获取最小的误差概率p,对应的一个权重t得到;
  3. 根据前面的计算过程计算一个权重;权重系数
  4. 更新权重分布

3 xml文件结构

分类器的那些权值等等的设置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章