首頁 > 軟體

級聯分類器演演算法原理解析

2022-05-13 21:49:30

一、人臉檢測演演算法分類

目前人臉檢測方法主要分為兩大類,基於知識和基於統計。

基於知識的人臉檢測方法主要包括:模板匹配,人臉特徵,形狀與邊緣,紋理特徵,顏色特徵。

基於統計的人臉檢測方法主要包括:主成分分析與特徵臉法,神經網路模型,隱馬爾可夫模型,支援向量機,Adaboost演演算法。

基於知識的方法將人臉看成不同特徵的特定組合,即通過人臉的眼睛、嘴巴、鼻子、耳朵等特徵及其組合關係來檢測人臉。

基於統計的方法將人臉看成統一的二維畫素矩陣,通過大量的樣本構建人臉子空間,通過相似度的大小來判斷人臉是否存在。

二、Haar分類器演演算法

本文介紹的Haar分類器方法,包含了Adaboost演演算法。

Haar演演算法實際上是運用了boosting演演算法中的Adaboost演演算法。Haar分類器利用Adaboost演演算法構建一個強分類器進行級聯,而在底層特徵抽取上採用的是高校的矩形特徵以及積分圖方法。

Haar分類器=類Haar特徵+積分圖法+Adaboost演演算法+級聯。

Haar分類器主要步驟如下:

1. 提取類Haar特徵;

2. 利用積分圖法對類Haar特徵提取進行加速;

3. 使用Adaboost演演算法訓練強分類器,區分出人臉和非人臉;

4. 使用篩選式級聯把強的分類器級聯在一起,從而提高檢測準確度。

2.1 人臉檢測的大概流程

我們用一個小的視窗在一幅圖片中不斷的滑動,每滑動到一個位置,就對該小視窗內的影象進行特徵提取,若提取到的特徵通過了所有訓練好的強分類器的判定,則我們判定該小視窗的圖片內含有人臉。

2.2 Haar-like特徵

Viola牛們提出的Haar-like特徵如下:

將Haar-like特徵在圖片上進行滑動,在每個位置計算白色區域對應的畫素值的和減去黑色區域對應的畫素值的和,從而提取出該位置的特徵,人臉區域與非人臉區域提取出的特徵值不同,從而區分出人臉區域和非人臉區域。

我們可以用多個矩形特徵計算得到一個區分度更大的特徵值,從而增加人臉區域和非人臉區域的區分度。那麼該怎麼組合這些矩形特徵才能得到更好的區分度呢?Adaboost演演算法就是用來解決這個問題的。

2.3 Adaboost演演算法

Adaboost演演算法是一種一般性的分類器效能提升演演算法,不僅僅是限定於一種演演算法。Adaboost演演算法可以用來更好地選擇矩形特徵的組合,而這些矩形特徵的組合就構成了分類器,分類器以決策樹的方式儲存這些矩形特徵組合。

Adaboost是基於boosting演演算法的,而boosting演演算法涉及到弱分類器和強分類器的概念。弱分類器是基於弱學習的,其分類正確率較低,但是較容易獲得,強分類器是基於強學習,其分類正確率較高,但是較難獲得。

Kearns和Valiant兩個大神提出弱學習和強學習是等價的,並且證明只要樣本充足,弱學習可以通過一定的組合獲得任意精度的強學習。這個證明為boostting演演算法提供了理論基礎,使其成為一個能夠提高分類器效能的一般性方法。

而boosting演演算法主要存在兩個問題,一個是它需要預先知道弱分類器的誤差,另一個是它在訓練後期會專注於幾個難以分類的樣本,因此會變得不穩定。針對這些問題,後來Freund和Schapire提出了實際可行的Adaboost演演算法。

2.4 弱分類器的構建

我們可以用決策樹來構建一個簡單的弱分類器, 將提取到的特徵與分類器的特徵進行逐個比較,從而判斷該特徵是否屬於人臉,如下圖所示:

該分類器的重點在於閾值的設定。閾值的設定方法如下:

(1)對於每個分類器計算訓練樣本的特徵值;

(2)對這些特徵值進行排序;

(3)計算所有屬於人臉的樣本的特徵值的和t1和所有屬於非人臉的樣本的特徵值的和t0;

(4)計算第i個樣本前所有屬於人臉的樣本的特徵值的和s1is1i和屬於非人臉的樣本的特徵值的和s0is0i;

(5)計算r=min((s1+(t0i−s0i)),s0+(t1i−s1i))r=min((s1+(t0i−s0i)),s0+(t1i−s1i))。

計算得到的最小的rr值即為所求閾值。有了閾值,我們便用決策樹構成了一個簡單的弱分類器,如下所示:

其中x子影象視窗,f是特徵,p的作用是控制不等號方向,使得不等號都為"<",θθ是閾值。

2.5 強分類器的構造

這個部分我還是似懂非懂。按照我的理解,強分類為的構造是這樣的:

(1)首先選出部分樣本,給它們賦予權重1/N,其中N為總的樣本的個數;

(2)用選出的樣本訓練弱分類器;

(3)提高錯誤分類的樣本的權重,並捨棄正確分類的樣本,加入新的樣本,新的樣本的權重還是之前的1/N,進行新一輪的弱分類器的訓練;

(4)經過T輪後,訓練出T個弱分類器;

(5)將這T個弱分類器根據他們的分類錯誤率加權求和構成一個強的分類器,如下所示:

其中αtαt是第t個弱分類器的權重,βtβt是第t個弱分類器的錯誤率。強分類器相當於先讓各個弱分類器進行投票,然後讓投票結果根據各弱分類器的錯誤率進行加權相加,最後與平均的投票結果進行比較得到最終結果。

Reference:

https://www.jb51.net/article/222465.htm

以上就是級聯分類器演演算法原理解析的詳細內容,更多關於級聯分類器演演算法的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com