計算機視覺基礎系列(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文件結構

分類器的那些權值等等的設置

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