級聯(lián)分類器算法原理解析
一、人臉檢測算法分類
目前人臉檢測方法主要分為兩大類,基于知識和基于統(tǒng)計。
基于知識的人臉檢測方法主要包括:模板匹配,人臉特征,形狀與邊緣,紋理特征,顏色特征。
基于統(tǒng)計的人臉檢測方法主要包括:主成分分析與特征臉法,神經(jīng)網(wǎng)絡(luò)模型,隱馬爾可夫模型,支持向量機,Adaboost算法。
基于知識的方法將人臉看成不同特征的特定組合,即通過人臉的眼睛、嘴巴、鼻子、耳朵等特征及其組合關(guān)系來檢測人臉。
基于統(tǒng)計的方法將人臉看成統(tǒng)一的二維像素矩陣,通過大量的樣本構(gòu)建人臉子空間,通過相似度的大小來判斷人臉是否存在。
二、Haar分類器算法
本文介紹的Haar分類器方法,包含了Adaboost算法。
Haar算法實際上是運用了boosting算法中的Adaboost算法。Haar分類器利用Adaboost算法構(gòu)建一個強分類器進行級聯(lián),而在底層特征抽取上采用的是高校的矩形特征以及積分圖方法。
Haar分類器=類Haar特征+積分圖法+Adaboost算法+級聯(lián)。
Haar分類器主要步驟如下:
1. 提取類Haar特征;
2. 利用積分圖法對類Haar特征提取進行加速;
3. 使用Adaboost算法訓(xùn)練強分類器,區(qū)分出人臉和非人臉;
4. 使用篩選式級聯(lián)把強的分類器級聯(lián)在一起,從而提高檢測準(zhǔn)確度。
2.1 人臉檢測的大概流程
我們用一個小的窗口在一幅圖片中不斷的滑動,每滑動到一個位置,就對該小窗口內(nèi)的圖像進行特征提取,若提取到的特征通過了所有訓(xùn)練好的強分類器的判定,則我們判定該小窗口的圖片內(nèi)含有人臉。
2.2 Haar-like特征
Viola牛們提出的Haar-like特征如下:
將Haar-like特征在圖片上進行滑動,在每個位置計算白色區(qū)域?qū)?yīng)的像素值的和減去黑色區(qū)域?qū)?yīng)的像素值的和,從而提取出該位置的特征,人臉區(qū)域與非人臉區(qū)域提取出的特征值不同,從而區(qū)分出人臉區(qū)域和非人臉區(qū)域。
我們可以用多個矩形特征計算得到一個區(qū)分度更大的特征值,從而增加人臉區(qū)域和非人臉區(qū)域的區(qū)分度。那么該怎么組合這些矩形特征才能得到更好的區(qū)分度呢?Adaboost算法就是用來解決這個問題的。
2.3 Adaboost算法
Adaboost算法是一種一般性的分類器性能提升算法,不僅僅是限定于一種算法。Adaboost算法可以用來更好地選擇矩形特征的組合,而這些矩形特征的組合就構(gòu)成了分類器,分類器以決策樹的方式存儲這些矩形特征組合。
Adaboost是基于boosting算法的,而boosting算法涉及到弱分類器和強分類器的概念。弱分類器是基于弱學(xué)習(xí)的,其分類正確率較低,但是較容易獲得,強分類器是基于強學(xué)習(xí),其分類正確率較高,但是較難獲得。
Kearns和Valiant兩個大神提出弱學(xué)習(xí)和強學(xué)習(xí)是等價的,并且證明只要樣本充足,弱學(xué)習(xí)可以通過一定的組合獲得任意精度的強學(xué)習(xí)。這個證明為boostting算法提供了理論基礎(chǔ),使其成為一個能夠提高分類器性能的一般性方法。
而boosting算法主要存在兩個問題,一個是它需要預(yù)先知道弱分類器的誤差,另一個是它在訓(xùn)練后期會專注于幾個難以分類的樣本,因此會變得不穩(wěn)定。針對這些問題,后來Freund和Schapire提出了實際可行的Adaboost算法。
2.4 弱分類器的構(gòu)建
我們可以用決策樹來構(gòu)建一個簡單的弱分類器, 將提取到的特征與分類器的特征進行逐個比較,從而判斷該特征是否屬于人臉,如下圖所示:
該分類器的重點在于閾值的設(shè)定。閾值的設(shè)定方法如下:
(1)對于每個分類器計算訓(xùn)練樣本的特征值;
(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值即為所求閾值。有了閾值,我們便用決策樹構(gòu)成了一個簡單的弱分類器,如下所示:
其中x子圖像窗口,f是特征,p的作用是控制不等號方向,使得不等號都為"<",θθ是閾值。
2.5 強分類器的構(gòu)造
這個部分我還是似懂非懂。按照我的理解,強分類為的構(gòu)造是這樣的:
(1)首先選出部分樣本,給它們賦予權(quán)重1/N,其中N為總的樣本的個數(shù);
(2)用選出的樣本訓(xùn)練弱分類器;
(3)提高錯誤分類的樣本的權(quán)重,并舍棄正確分類的樣本,加入新的樣本,新的樣本的權(quán)重還是之前的1/N,進行新一輪的弱分類器的訓(xùn)練;
(4)經(jīng)過T輪后,訓(xùn)練出T個弱分類器;
(5)將這T個弱分類器根據(jù)他們的分類錯誤率加權(quán)求和構(gòu)成一個強的分類器,如下所示:
其中αtαt是第t個弱分類器的權(quán)重,βtβt是第t個弱分類器的錯誤率。強分類器相當(dāng)于先讓各個弱分類器進行投票,然后讓投票結(jié)果根據(jù)各弱分類器的錯誤率進行加權(quán)相加,最后與平均的投票結(jié)果進行比較得到最終結(jié)果。
Reference:
http://chabaoo.cn/article/222465.htm
以上就是級聯(lián)分類器算法原理解析的詳細(xì)內(nèi)容,更多關(guān)于級聯(lián)分類器算法的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Leaflet的VideoOverlay視頻圖層疊加實戰(zhàn)教程
這篇文章主要介紹了基于Leaflet的VideoOverlay視頻圖層疊加實戰(zhàn),本文首先介紹了DistortableVideo組件的相關(guān)知識,它的github倉庫信息,相關(guān)源代碼的目錄說明,使用依賴信息,需要的朋友可以參考下2023-02-02git分支(branch)操作相關(guān)命令及分支命令的使用
這篇文章主要介紹了git分支(branch)操作相關(guān)命令及分支命令的使用的相關(guān)資料,需要的朋友可以參考下2017-10-10select下拉菜單實現(xiàn)二級聯(lián)動效果
這篇文章主要介紹了select下拉菜單實現(xiàn)二級聯(lián)動效果,在一些項目開發(fā)中經(jīng)常會遇到這樣的需求,今天小編通過實例代碼給大家講解,需要的朋友可以參考下2019-10-10一文徹底理清session、cookie、token的區(qū)別
session和token本質(zhì)上是沒有區(qū)別的,都是對用戶身份的認(rèn)證機制,只是他們實現(xiàn)的校驗機制不一樣而已,下面這篇文章主要給大家介紹了關(guān)于session、cookie、token區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-02-02