吳清佳
(中山大學新華學院信息科學系,廣州510520)
已有的許多人臉檢測系統(tǒng)是基于模板的,他們直接將人臉圖像按像素強度編碼。這些圖像可通過人臉圖像概率模型集,或隱式地由神經網絡或其他機制描述。還有些研究人員用特征提取的方法,手動或自動生成規(guī)則來評估特征。也有人用圖匹配算法處理人臉特征,以達到人臉檢測不受旋轉影響的目的。本文提出了一個通用的方法,使基于模板的人臉檢測不受旋轉影響。
為了旋轉人臉能被檢測到,并且盡量少誤檢(無人臉卻報有人臉),我們提出了一種基于神經網絡集成的算法檢測旋轉人臉的灰度圖像。
本系統(tǒng)直接用神經網絡分析圖像的強度,網絡的參數(shù)經自動訓練得到。有許多基于神經網絡的方法可用于旋轉的人臉檢測。最簡單的方法是采用現(xiàn)有的正面直立人臉檢測系統(tǒng)。如文獻[1]提出的系統(tǒng)(以下簡稱標準檢測器),使用基于神經網絡的過濾器,輸入含有圖像的一個小窗口,生成一個輸出,并判定人臉是否存在。
為檢測到圖像中是否有人臉,過濾器檢測圖像中每個位置。若檢測到人臉大于窗口的大小,則對輸入圖像二次取樣,以縮小圖像。為了擴展這個框架使之適用于捕獲旋轉的人臉,整個圖像可被多次旋轉小的角度,并把檢測器用于每個旋轉的圖像。然而,這將是一個計算量很大的過程。例如,文獻[2]提出的系統(tǒng)可容忍10°直立方向的旋轉(順時針和逆時針),因此,取圖像旋轉增量20°,整個檢測過程需要重復至少18次。
本文提出一個速度更快的方法。這個方法使用一個單獨的神經網絡作為“預處理”網絡,“預處理”網絡對待分析窗口進行預處理,再把輸出結果作為人臉檢測器的輸入。如果輸入窗口包含一張臉,預處理網絡返回臉的角度,然后臉被糾正成直立后再輸入人臉檢測器。預處理網絡的輸入不要求必須包含人臉,如果遇到輸入圖像窗口不包含人臉的情況,預處理網絡將返回一個無意義的旋轉。因為各種角度的人臉經過糾正后,只需要對正面直立人臉檢測一次,這種方法明顯更快。
本文系統(tǒng)的整體算法如圖1所示。先從原始圖像生成圖像金字塔,間隔比率為1.2。每個金字塔的每個級別的20×20像素的窗口都經過幾個處理步驟。然后,使用直方圖均衡法預處理窗口后傳給“預處理”網絡。根據預處理網絡返回的旋轉角度,反旋轉窗口,使得可能存在的人臉被糾正到直立位置。最后,對被糾正后的窗口進行預處理,并通過一個或多個檢測器網絡[1],決定窗口是否包含了人臉。上面提出的系統(tǒng)很可能檢測到有兩個完全不同方向的人臉圖像位于相鄰的像素位置。為了對付這種異常,并提高檢測率,可引入一些判定啟發(fā)式。在以下小節(jié)中將闡述預處理網絡和檢測器網絡的設計及相關判定啟發(fā)式。
圖1 算法示意圖Fig.1 Algorithm diagram
檢測的第一步先使用預處理網絡處理輸入圖像窗口,這一步假定輸入窗口中包含一張人臉,并估計它的方向。網絡的輸入值是在20×20像素的圖像窗口內(事先已經由一個標準的直方圖均衡算法預處理)的強度值。輸出的旋轉角度值用包含36個輸出單位的數(shù)組表示,每個單位k代表10°。訓練好的預處理網絡,輸出值為cos(θ-k×10°),就表示檢測到的人臉旋轉角度為θ。這種方法與高斯加權輸出方法密切相關,該方法常被用于無人駕駛領域[3]。圖2是旋轉人臉角度示意圖。
上述的算法中,輸入的圖像首先與一組高斯微分濾波器在不同方向和尺度做卷積運算。過濾以金字塔形式運行,以減少計算時間。濾波向量對應于空間一個點P(x,y)的圖像亮度。
圖2 旋轉人臉角度示意圖Fig.2 Rotating face angle diagram
通過對Rk響應模板(或樣板)向量與P(x,y)的匹配,可得第k個面部特征的候選值。匹配Mk(x,y)的優(yōu)勢等于P(x,y)和Rk之間夾角的余弦;然而,我們也需要Rk和P(x,y)長度接近,即
然后通過計算高斯加權輸出值的平均得到一個值,其中高斯加權輸出值由激活度決定。對于存在周期域的旋轉角度值,僅用加權求和是不夠的。為此,我們拓展加權求和計算公式:
這個平均向量的方向表示人臉的角度[1]。
訓練例子來自一套手動標記的例子,包含1048個人臉圖像。在每一個臉上,眼睛、鼻尖、口邊角和口中心都做了標記。首先,我們對整個標記好的訓練集求每個標記的平均位置。然后,按算出的值排好序。通過計算平移、旋轉和縮放,最大限度地減少相關標記間的距離。因為這種轉換可表示為其參數(shù)的線性函數(shù),我們可使用過約束的線性系統(tǒng)得到最優(yōu)排序。經過少量迭代步驟后,排序收斂[4-5]。
標記位置的平均值和分布如圖3所示。一旦臉上標記的大小、位置和方向都已知,訓練集的不確定性可得到有效控制。為了生成訓練集,我們將人臉朝隨機(已知)方向旋轉,旋轉后的結果將作為預處理網絡的目標輸出。
圖3 特征點示意圖Fig.3 Feature diagram
或者將臉隨機縮放(范圍從1到1.2)到一半的像素。每個人臉產生15個訓練樣本,1048個人臉共產生了15720個例子。預處理網絡的結構分為三層:輸入層400個神經元,隱藏層15個神經元,輸出層36個神經元。每一層都完全連接到下一層。各神經元采用雙曲正切激活函數(shù),并使用BP算法訓練。
經預處理網絡處理后,輸入圖像窗口中疑似存在的人臉,均被糾正成直立的臉。剩下的任務是判斷窗口是否包含一個直立的人臉。重采樣的圖像也是20×20像素,先經過兩步預處理。首先擬合一個函數(shù):一個窗口的橢圓形區(qū)域內的強度值線性函數(shù)。線性函數(shù)約等于窗口各部分的整體亮度,可扣除照明條件帶來的影響。其次,進行直方圖均衡,使窗口圖像強度范圍擴大。窗口經預處理后輸出給一個或多個檢測器網絡。檢測器網絡訓練結束后,有人臉時輸出+1.0,否則輸出-1.0。該檢測器有兩個訓練的樣本集:有人臉的圖像和無人臉圖像。正面例子用類似于預處理網絡訓練集的方式產生,訓練圖像的旋轉量范圍:-10°~+10°。
因為典型的“無人臉”圖像難于判斷,且獲得包含人臉的圖像樣本較易,而獲得具有代表性的不含人臉的圖像樣品相對較難。有人提出使用“自引導”的方式,在培訓過程中收集圖像,而不是在訓練開始之前就收集[6],步驟如下。
①隨機產生1500張不包含人臉的圖像。
②訓練一個檢測器網絡,如果有人臉則輸出+1.0,否則輸出-1.0。網絡的權重隨機初始化,之后,每次迭代出發(fā)點為上一次迭代后的權數(shù)。
③在沒有人臉的圖像上運行系統(tǒng),收集該網絡不正確地識別到人臉的子圖像(即無人臉而識別系統(tǒng)卻輸出>0.0的誤判情況)。
④隨意選擇300個由第③步收集的子圖像,添加到反例集合。轉到步驟②。
在運行時,檢測器網絡將應用于人臉已糾正的圖像,因此從已糾正的無臉圖像中收集培訓反例可能更有利,而不是只從無臉原圖中收集。
上述系統(tǒng)很可能標記出在相鄰像素位置的完全不同旋轉方向的人臉。一個簡單的事后啟發(fā)式可以糾正這種不一致。每個待檢測圖像都用一個4元組表示,4元組包括:人臉的中心坐標(x,y),待測人臉在圖像金字塔中的層次,和臉的角度(以10°為增量單位)。對于每個檢測,我們沿每個維度計數(shù)(4個像素,4個金字塔的層次或40°)。這個數(shù)字可作為可信度量,并設定閾值。如果一個人臉圖像的計數(shù)值超過閾值,對該圖像的其他重復檢測將被丟棄。
雖然這種事后啟發(fā)式可相當有效地消除誤檢,單一的檢測網絡誤檢率仍然非常高。為了進一步減少誤檢率,我們在兩個獨立訓練的檢測器網絡之間進行判定。每個網絡用同一組的正例訓練,但開始取不同的隨機初始權。因此,每一個網絡學習過程不同,誤檢也不同。然后把前述的事后啟發(fā)式用于每一個網絡的輸出結果,再把兩個網絡的檢測結果做與運算。
為了達到一定的準確率,預處理網絡和檢測器必須有良好的魯棒性和兼容性。預處理網絡是用來糾正輸入圖像而為檢測器做準備的,所以預處理網絡的測角精度必須與檢測器兼容。為度量預處理網絡的測量精度,我們的測試范例圖像旋轉角度從-30°到+30°,增量為1°。這些圖像輸入到預處理網絡,角度誤差直方圖如圖4(a)所示。可以看出,92%的誤差都在10°以內。
經預處理網絡糾正后輸入到檢測器網絡進行訓練的例子集旋角誤差在 -10°到+10°之間。因此必須確定檢測器在此范圍內是否具有不變性。我們把糾正后的人臉圖像輸入檢測器做實驗。結果如圖4(b)所示,檢測器檢測到超過90%旋角在10°內的準直立人臉,但當旋角超過10°時,精度大大下降??傊?,因為預處理網絡的角度糾正誤差通常在10°內,而檢測器可檢測到誤差10°內的絕大多數(shù)人臉,因此可以說這兩個網絡是兼容的。
圖4 旋轉角度和誤差關系圖Fig.4 Frequence of errors to rotating angle
筆者集成上述預處理網絡及檢測網絡,并分別用兩個圖像集做了實驗。第一個圖像集為直立測試集。它包含了許多有復雜背景的圖像和不含人臉的圖像,共有130張,511個人臉(其中469個是旋轉角度在10°內的)。第二個圖像集,簡稱為旋轉測試集,有50幅圖像,包含223個人臉,其中210個旋轉角度超過10°。直立測試集作為一個與文獻[3]的直立人臉檢測系統(tǒng)的比較基準,用于確認旋轉糾正操作不妨礙檢測直立人臉的能力。而旋轉測試集的實驗結果將展示我們系統(tǒng)的新特性。
我們測試的第一個集成系統(tǒng),先用預處理網絡對圖像預處理,然后用兩個標準的直立人臉檢測網絡進行檢測,表1顯示了測試結果。表中有單個檢測網絡的結果和事后啟發(fā)式(使用一個閾值)處理的結果,最后一行顯示了將兩個網絡輸出做與運算后得出的結果。這種處理要求這兩個網絡檢測的人臉有相同的位置、尺度和方向??梢钥闯觯潞髥l(fā)式處理大大降低了誤檢率,與運算判定有助于進一步減少誤檢率。旋轉測試集的誤檢率明顯高于直立測試集,兩個測試的整體難度不同。
表1 預處理網絡+標準檢測器網絡Table 1 Result of rooting network+standard network
表1顯示了相當數(shù)量的誤檢,部分原因是檢測器網絡的輸入與他們被訓練的圖像集不同,檢測網絡只能看到被預處理網絡糾正后的圖像。我們想在訓練時盡可能地匹配這兩個集。在訓練中使用的正例已經是直立位置。
在訓練過程中,也可使用預處理網絡收集到的風景圖像作為反例。我們用這種新的方式培訓了兩個檢測器網絡,其表現(xiàn)如表2所示??梢钥闯?,這些新網絡的誤檢率至少減少4個百分點。這個系統(tǒng)在檢出率和誤檢率之間取得了最好的平衡。
表2 本文的系統(tǒng):預處理網絡+糾正反例集訓練的檢測器網絡Table 2 Resu lt of our system
為了證明預處理網絡對旋轉不變性的重要性我們還訓練了兩個沒有預處理網絡的檢測器網絡作為比較。用全部18個不同方向的圖像(20°為增量)進行訓練。表3顯示的結果,是使用標準的直立人臉訓練的檢測網絡,表4結果顯示了使用糾正后的反例訓練的檢測網絡?;仡櫚l(fā)現(xiàn)表1誤檢大大超過表2。表1中檢測網絡使用原始圖像作為訓練集,而使用糾正后的圖像作為測試集。同理,如果我們用全部18個不同方向的圖像作為測試集,誤檢率也應該較大(見表3和表4)。表3、表4顯示不用預處理網絡的系統(tǒng)檢測到人臉的概率大于使用預處理網絡的系統(tǒng)。這是因為預處理網絡的錯誤會導致人臉丟失,而窮盡所有方向的搜索可能會找回丟失的人臉。因此上述的檢測正確率差異可看做是一種權衡的結果,即更好的檢測正確率和更高的運算成本之間的權衡。
表3 用標準檢測器網絡檢測全部18個方向圖像Table 3 To detect all 18 direction of the image w ith astandard detector network
表4 用糾正圖像集訓練的檢測器網絡檢測全部18個方向圖像Table 4 To detect all 18 direction of the image w ith a detector network trained by corrected image
為了檢驗增加檢測旋轉人臉的能力后,是否犧牲了直立人臉檢測的精度,我們對比了標準檢測網絡和本文提出的用兩個測試集訓練的兩個網絡做與運算判定法。正如預期,系統(tǒng)在直立人臉測試集上做得很好,但在旋轉人臉測試集上表現(xiàn)較差(見表5)。
表6顯示了上述系統(tǒng)對旋角小于10°的準直立人臉的檢出率。正如所料,標準的直立人臉檢測器,用直立人臉訓練集和未經糾正的反例集訓練后,對直立人臉檢出率較高。新系統(tǒng)對直立人臉檢出率略低有兩個原因:第一,檢測器網絡未能恢復預處理網絡的所有錯誤;第二,用糾正后的反例集作為訓練集的檢測器網絡在判斷有人臉時更保守,這是因為糾正處理把反例變得更像有人臉,這使得分類問題難度增加。
表5 標準檢測器網絡Table 5 Result of standard detector network
表6 新系統(tǒng)和標準直立檢測器網絡對比Table 6 The new system and the standard detector network comparison
通過結合一個或多個預處理網絡和正面直立人臉檢測器,本文構建了一個旋轉人臉檢測系統(tǒng)。經兩個大型測試集測試,該系統(tǒng)能檢測到89.9%的人臉,有少數(shù)誤檢。該技術也適用于其他基于模板的目標檢測系統(tǒng)。對旋轉人臉的檢測準確度和速度均明顯優(yōu)于沒有預處理網絡的系統(tǒng)。
我們也進一步考察了該方法用于側面旋轉人臉檢測。有兩種方法:第一種方法與直接處理平面旋轉類似,利用臉部的形狀和對稱性,嘗試將側面或半側面人臉糾正為正面;第二種方法,也是我們采用的方法,把臉區(qū)分成幾個視圖來處理,并為每個視圖單獨訓練一個檢測器網絡。我們用了五個視圖:左側面、半左側面、正面、半右側面和右側面。預處理網絡負責把輸入窗口輸出到這些不同視圖的檢測器[7]。
在對側面旋轉人臉的檢測中,仍有相當數(shù)量的誤檢和丟失的人臉。可能的原因之一是我們的訓練數(shù)據并不代表真實圖像的變化。我們的側面訓練圖像的大部分都來自FERET數(shù)據庫,它具有非常均勻的照明條件,而實際未必如此。
展望后面的工作方向:一種是,可平面內旋轉和超平面旋轉同時考慮,比如建立一個專用的預處理網絡,對所有的人臉視圖糾正到一個規(guī)范的方向后,提交給適當?shù)臋z測器;另一種是,改善系統(tǒng)的運行速度,使用多個快速但精確率不高的檢測器網絡,然后再對這些檢測器網絡的輸出結果綜合考察得出最終結果。
[1]Rowley H A,Baluja S.Neural network-based face detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1998,20(1):67-88.
[2]Colmenarez A J,Huang T S.Face detection with information-based maximum discrim ination[C]∥In Computer Vision and Pattern Recognition,1997:782-787.
[3]Hafed ZM,Levine M D.Face recognition using the discrete cosine transform[J].International Journal of Computer Vision,2001,43(3):167-188.
[4]Park H,Park C H.A comparison of generalized linear discriminant analysis algorithm[J].Pattern Recognition,2008,41(3):1083-1097.
[5]Vetter T,Jones M J.A boots trapping algorithm for learning linearmodels of object classes[C]∥In Computer Vision and Pattern Recognition,1997:40-46.
[6]Sung K-K.Learning and example selection for object and pattern detection[D].Massachusetts:MIT AI Lab,1996.
[7]Zhang M,F(xiàn)ulcher J.Face recognition using artificial neural network group-based adaptive tolerance(GAT) trees[J].IEEE Transactions on Neural Networks,1996,7(3):555-567.