那么,如何來選擇我們要觀察的窗口呢?所謂眼見為實(shí),要判斷圖像上的某個(gè)位置是不是一張人臉,必須要觀察了這個(gè)位置之后才知道,因此,選擇的窗口應(yīng)該覆蓋圖像上的所有位置。顯然,最直接的方式就是讓觀察的窗口在圖像上從左至右、從上往下一步一步地滑動(dòng),從圖像的左上角滑動(dòng)到右下角——這就是所謂的滑動(dòng)窗口范式,你可以將它想象成是福爾摩斯(檢測(cè)器)在拿著放大鏡(觀察窗口)仔細(xì)觀察案發(fā)現(xiàn)場(chǎng)(輸入圖像)每一個(gè)角落(滑動(dòng))的過程。

別看這種用窗口在圖像上進(jìn)行掃描的方式非常簡(jiǎn)單粗暴,它的確是一種有效而可靠的窗口選擇方法,以至于直到今天,滑動(dòng)窗口范式仍然被很多人臉檢測(cè)方法所采用,而非滑動(dòng)窗口式的檢測(cè)方法本質(zhì)上仍然沒有擺脫對(duì)圖像進(jìn)行密集掃描的過程。
對(duì)于觀察窗口,還有一個(gè)重要的問題就是:窗口應(yīng)該多大?我們認(rèn)為一個(gè)窗口是一個(gè)人臉窗口當(dāng)且僅當(dāng)其恰好框住了一張人臉,即窗口的大小和人臉的大小是一致的,窗口基本貼合人臉的外輪廓。

那么問題來了,即使是同一張圖像上,人臉的大小不僅不固定,而且可以是任意的,這樣怎么才能讓觀察窗口適應(yīng)不同大小的人臉呢?一種做法當(dāng)然是采用多種不同大小的窗口,分別去掃描圖像,但是這種做法并不高效。換一個(gè)角度來看,其實(shí)也可以將圖像縮放到不同的大小,然后用相同大小的窗口去掃描——這就是所謂的構(gòu)造圖像金字塔的方式。圖像金字塔這一名字非常生動(dòng)形象,將縮放成不同大小的圖像按照從大到小的順序依次往上堆疊,正好就組成了一個(gè)金字塔的形狀。

通過構(gòu)建圖像金字塔,同時(shí)允許窗口和人臉的貼合程度在小范圍內(nèi)變動(dòng),我們就能夠檢測(cè)到不同位置、不同大小的人臉了。另外需要一提的是,對(duì)于人臉而言,我們通常只用正方形的觀察窗口,因此就不需要考慮窗口的長(zhǎng)寬比問題了。
選好了窗口,我們開始對(duì)窗口中的圖像區(qū)域進(jìn)行觀察,目的是收集證據(jù)——真相只有一個(gè),我們要依靠證據(jù)來挖掘真相!在處理圖像的過程中,這個(gè)收集證據(jù)的環(huán)節(jié)我們稱之為特征提取,特征就是我們對(duì)圖像內(nèi)容的描述。由于機(jī)器看到的只是一堆數(shù)值,能夠處理的也只有數(shù)值,因此對(duì)于圖像所提取的特征具體表示出來就是一個(gè)向量,稱之為特征向量,其每一維是一個(gè)數(shù)值,這個(gè)數(shù)值是根據(jù)輸入(圖像區(qū)域)經(jīng)由某些計(jì)算(觀察)得到的,例如進(jìn)行求和、相減、比較大小等??偠灾?,特征提取過程就是從原始的輸入數(shù)據(jù)(圖像區(qū)域顏色值排列組成的矩陣)變換到對(duì)應(yīng)的特征向量的過程,特征向量就是我們后續(xù)用來分析和尋找真相的證據(jù)。
特征提取之后,就到了決斷的時(shí)刻:判別當(dāng)前的窗口是否恰好包含一張人臉。我們將所有的窗口劃分為兩類,一類是恰好包含人臉的窗口,稱之為人臉窗口,剩下的都?xì)w為第二類,稱之為非人臉窗口,而最終判別的過程就是一個(gè)對(duì)當(dāng)前觀察窗口進(jìn)行分類的過程。因?yàn)槲覀兊淖C據(jù)是由數(shù)值組成的特征向量,所以我們是通過可計(jì)算的數(shù)學(xué)模型來尋找真相的,用來處理分類問題的數(shù)學(xué)模型我們通常稱之為分類器,分類器以特征向量作為輸入,通過一系列數(shù)學(xué)計(jì)算,以類別作為輸出——每個(gè)類別會(huì)對(duì)應(yīng)到一個(gè)數(shù)值編碼,稱之為這個(gè)類別對(duì)應(yīng)的標(biāo)簽,如將人臉窗口這一類編碼為1,而非人臉窗口這一類編碼為-1;分類器就是一個(gè)將特征向量變換到類別標(biāo)簽的函數(shù)。
考慮一個(gè)最簡(jiǎn)單的分類器:將特征向量每一維上的數(shù)值相加,如果得到的和超過某個(gè)數(shù)值,就輸出人臉窗口的類別標(biāo)簽1,否則輸出非人臉窗口的類別標(biāo)簽-1。記特征向量為,

分類器為函數(shù)f(x),那么有:
