這里的t就是前面所說的“某個數(shù)值”,其決定了分類器在給定特征向量下的輸出結果,我們稱其為分類器的參數(shù)。不同形式和類型的分類器會有不同的參數(shù),一個分類器可以有一個或者多個參數(shù),參數(shù)或者其取值不同則對應到不同的分類器。選定了一個分類器之后,緊接著的一個問題就是:參數(shù)該怎么設置?具體到我們正在考慮的情況,就是:t的值該如何選取?
要做出選擇,就要有一個目標,在分類問題中,目標當然就是盡可能正確地進行分類,即分類的準確率盡可能高。然而,盡管我們對目標非常明確,我們也仍然沒法給出一個最優(yōu)的參數(shù)取值,因為我們并不使用機器所采用的二進制語言系統(tǒng),我們并不懂什么才是對機器最好的。于是我們只有一種選擇:把我們的目標告訴機器,舉一些例子向其進行解釋,然后讓機器自己去學習這個參數(shù),最后我們給機器設計一場考試,測試其是否滿足了我們的要求。我們從一些圖像上選出一部分人臉和非人臉窗口的樣例,用對應的類別標簽對其進行標注,然后將這些樣例劃分成兩個集合,一個集合作為分類器學習所使用的訓練集,另一個集合作為最終考查分類器能力的測試集,同時我們設定一個目標:希望分類的準確率能夠在80%以上。
學習過程開始時,我們先給分類器的參數(shù)設定一個初始值,然后讓分類器通過訓練集中帶有“答案”(類別標簽)的樣例,不斷去調整自己參數(shù)的取值,以縮小其實際的分類準確率和目標準確率之間的差距。當分類器已經(jīng)達到了預先設定的目標或者其它停止學習的條件——期末考試的時間是不會因為你沒有學好而推遲的,或者分類器覺得自己已經(jīng)沒有辦法再調整了,學習過程就停止了,這之后我們可以考查分類器在測試集上的準確率,以此作為我們評判分類器的依據(jù)。這一過程中,分類器調整自己參數(shù)的方式和分類器的類型、設定的目標等都有關,由于這部分內容超出了本文所討論的范疇,也并不影響讀者對人臉檢測方法的理解,因此不再展開進行講述。
在確定了選擇窗口的策略,設計好了提取特征的方式,并學習了一個針對人臉和非人臉窗口的分類器之后,我們就獲得了構建一個人臉檢測系統(tǒng)所需要的全部關鍵要素——還有一些小的環(huán)節(jié)相比之下沒有那么重要,這里暫且略去。
由于采用滑動窗口的方式需要在不同大小的圖像上的每一個位置進行人臉和非人臉窗口的判別,而對于一張大小僅為480*320的輸入圖像,窗口總數(shù)就已經(jīng)高達數(shù)十萬,面對如此龐大的輸入規(guī)模,如果對單個窗口進行特征提取和分類的速度不夠快,就很容易使得整個檢測過程產(chǎn)生巨大的時間開銷,也確實就因為如此,早期所設計的人臉檢測器處理速度都非常慢,一張圖像甚至需要耗費數(shù)秒才能處理完成——視頻的播放速度通常為每秒25幀圖像,這給人臉檢測投入現(xiàn)實應用帶來了嚴重的障礙。
人臉檢測技術的突破:VJ人臉檢測器及其發(fā)展
人臉檢測技術的突破發(fā)生在2001年,兩位杰出的科研工作者Paul Viola和Michael Jones設計了出了一個快速而準確的人臉檢測器:在獲得相同甚至更好準確度的同時,速度提升了幾十上百倍——在當時的硬件條件下達到了每秒處理15張圖像的速度,已經(jīng)接近實時速度25fps(即25幀每秒)。這不僅是人臉檢測技術發(fā)展的一個里程碑,也標志著計算機視覺領域的研究成果開始具備投入實際應用的能力。為了紀念這一工作,人們將這個人臉檢測器用兩位科研工作者的名字命名,稱之為Viola-Jones人臉檢測器,或者簡稱為VJ人臉檢測器。
VJ人臉檢測之所以器能夠獲得成功,極大地提高人臉檢測速度,其中有三個關鍵要素:特征的快速計算方法——積分圖,有效的分類器學習方法——AdaBoost,以及高效的分類策略——級聯(lián)結構的設計。VJ人臉檢測器采用Haar特征來描述每個窗口,所謂Haar特征,其實就是在窗口的某個位置取一個矩形的小塊,然后將這個矩形小塊劃分為黑色和白色兩部分,并分別對兩部分所覆蓋的像素點(圖像上的每個點稱為一個像素)的灰度值求和,最后用白色部分像素點灰度值的和減去黑色部分像素點灰度值的和,得到一個Haar特征的值。
