王 平,鄒 暘,熊 殷
(南昌大學信息工程學院,江西 南昌 330031)
人臉檢測作為一項特殊的物體檢測,來源于人臉識別技術,一直以來受到各界的廣泛關注。人臉檢測的方法多為基于統計學的后驗學習方法,譬如ANN人工神經元網絡、貝葉斯決策以及SVM支持向量機[1-2]。其中,Paul Viola[3]提出的Adaboost算法在保證高質量檢測效果的同時,解決了檢測速度的問題。同時,隨著近年來嵌入式技術與視頻通信設備的高速發展,DSP具有更加貼近視覺工程應用的特點,在人臉檢測方面有了廣泛的應用空間。
本文采用 Lienhart等人[4]提出的 Gentle Adaboost算法,提出并擴充了Haar特征,設計實現了以TMS320DM642為核心的多姿態人臉檢測系統,最后對算法代碼以及工程進行了優化處理。在略微損失系統實時速度的前提下,獲得了很好的多姿態人臉檢測效果,證明了該系統在實際工程應用中的可行性,為嵌入式人臉檢測的后續應用打下了基礎。
Gentle Adaboost人臉檢測算法是通過Gentle Adaboost算法學習出級聯型人臉分類器,在此基礎上進行Haar灰度特征值判別的算法,具有魯棒性強、檢測率高等特點。
Gentle Adaboost算法采用Haar灰度矩形特征進行人臉建模[5],使用灰度積分圖進行人臉特征值的快速計算。在傳統人臉矩形特征的基礎上,Lienhart等人[4]提出了擴展型矩形特征,將傳統特征矩形旋轉45°,用來檢測傾斜的人臉。擴展型矩形特征分為三大類:邊緣特征,線性特征,中心環繞特征。為滿足多姿態檢測的需要,本文又擴充了6種矩形特征,所有矩形特征如圖1所示。用白色區域與黑色區域的灰度值差值作為該特征的特征值,每個特征都是一個弱分類器。

圖1 Haar灰度值矩形特征
Gentle Adaboost算法從訓練樣本中挑選出一些最能代表人臉的矩形特征,將這些弱分類器組合成一個誤檢率低于最大誤檢率fmax(為0.4~0.5),人臉命中率高于最小命中率dmin(為0.995)的強分類器;將若干強分類器組合成一個級聯型分類器,直到級聯型分類器的誤檢率Fpre低于最大誤檢率Fmax。
1.2.1 強分類器的訓練
強分類器的訓練具體步驟為:
1)現有一組訓練樣本 (x1,y1),(x2,y2),…,(xi,yi),其中,xi表示的是樣本,yi表示樣本類別,當i=1時,為人臉樣本,i=-1時,為非人臉樣本。初始化所有樣本的權值wi=1/m,m為總樣本個數。


1.2.2 級聯分類器的訓練
級聯分類器層數M=logFmax/log fmax。獲取一個強分類器Hn(xi),與前n-1個強分類器組成當前級聯分類器對人臉樣本與非人臉樣本進行驗證,剔除被誤檢的人臉樣本與被正確檢測的非人臉樣本;同時,補充無法被當前級聯分類器正確分類的非人臉樣本到訓練樣本中,更新樣本個數,最后回到1.2.1節進行下一輪的強分類器訓練,直到Fpre>Fmax。
本文使用Gentle Adaboost算法,訓練了10層強分類器組成的級聯分類器。訓練樣本中,正面人臉樣本為3000張,圖像大小全部歸一化為20×20;噪聲人臉、殘缺人臉、背景圖片等非人臉樣本為7000張。
系統總體設計可分為三大單元模塊:DM642模塊、視頻采集回放模塊、EMIF存儲擴展模塊。系統硬件框圖如圖2所示。

圖2 系統硬件框圖
2.1.1 DM642模塊
系統選用的CPU為TI公司TMS320DM642芯片(簡稱DM642),該芯片是基于C64X內核的高端視頻處理芯片,并擴展了外圍設備接口。DM642采用二級Cache緩存結構(32 kbyte的L1與256 kbyte的L2);其64位外部存儲器接口(EMIF)能夠無縫連接異步存儲器(SRAM,EPROM)及同步存儲器(SDRAM,FIFO),方便大量數據的搬移;3個可配置的視頻端口(VPORT0~2)能夠與視頻編、解碼器實現無縫連接,同時支持多種視頻分辨率及視頻標準和RAW視頻輸入/輸出。系統主要使用了VP1和VP2視頻端口,EMIF端口,并且采用50 MHz晶振作為外部時鐘輸入,通過PLL鎖相環12倍頻后獲取600 MHz的CPU內部時鐘。利用TI公司的TPS54350芯片為系統提供3.3 V電源(包括1.4 V的內核電壓和3.3 V的I/O外部設備電壓)來確保DM642高頻率下的穩定工作,同時監控輸入電壓,實現上電初始化復位。
2.1.2 視頻采集回放模塊
由于輸入信號是CCD攝像頭采集的模擬信號,因此采用TI公司的TVP5150PBS解碼器與VP2口連接,對輸入信號按照YCbCr 4∶2∶2格式進行A/D轉換后,輸出ITU-RBT.656格式視頻信號。TVP5150PBS支持PAL/NTSC/SECAM格式視頻,DM642通過I2C總線配置其內部寄存器進行視頻格式的設置。硬件連接圖如圖3所示。圖中,YOUT[7-0]口與 VP2 數據位 VP2_D[7-2]相連,用于傳輸數據。時鐘線PSLK/SCLK與DM642的VP2_CLK1相連,為數據傳輸提供時鐘信號。同時為滿足視頻自環回放,需要將DSP處理后的數字信號轉換為模擬信號輸出。因此,采用PHILIPS公司的SAA7104編碼器對處理后的BT.656視頻信號進行D/A轉換后輸出給顯示器。DM642通過I2C總線對SAA7104進行視頻格式的配置。硬件連接圖如圖4所示。圖中,時鐘線PIXCLK1與VP2CLK1相連,因此SAA7104時鐘由TVP5150提供,實現視頻采集與回放的同步。SAA7104將輸入的YCbCr視頻信號分離后單獨進行數模轉換,通過引腳輸出復合視頻信號或者S-子端信號。

圖3 TVP5150端口連接圖
2.1.3 EMIF存儲擴展模塊

圖4 SAA7104端口連接圖
系統人臉檢測涉及到大批量程序處理,同時伴隨大量數據的產生。為了保證系統的運行效率,DM642內部的256 kbyte Cache全部用于代碼運算,同時必須外接SDRAM滿足系統開銷。DM642提供的EMIF端口具有64 bit數據線、若干控制總線和4個片使能地址空間(CE0~CE3,其中CE0分配給SDRAM,CE1分配給Flash)。系統選用2片MT 48LC4M32B2(4 Bank×1 M×32 bit)構成4 M×64 bit的外設RAM,供程序開銷與數據存儲;采用1片AM29L008B Flash芯片(4 M×8 bit)組成外設ROM,供程序燒錄。
系統運行后,通過攝像頭采集一幀視頻信號,緩存在SDRAM中供DSP芯片進行人臉檢測。計算出圖像的灰度積分圖,利用24×24規格的窗口遍歷整個圖片。對第一個窗口圖像進行特征值與擴大窗口的相似度特征值的計算,根據訓練的10層級聯分類器進行閾值判斷。通過了所有強分類器閾值檢測的窗口及擴大窗口被標記為人臉窗口,否則,立即停止該窗口的檢測,進行下一窗口的處理。所有窗口檢測完畢后將重復標記的人臉窗口進行合并,獲得有人臉標記的圖像后并將其輸出,同時進行下一幀圖像的獲取與檢測。檢測流程圖如圖5所示。

圖5 系統檢測流程圖
2.3.1 算法的實現
參考Intel公司開源的Opencv計算機視覺庫代碼。由于該庫的C及C++類代碼基于X86構造芯片進行了優化,因此必須對代碼中的數據結構和人臉檢測算法進行裁剪、修改,使其適合在DSP系統上運行。利用CCS2.20.18在系統初始的視頻回放工程文件基礎上進行代碼修改與工程配置,將工程的軟件流水線優化選項設置為-ms0,以此提高代碼的運行效率。結合EMCV庫,最終在DSP上實現人臉檢測算法。
2.3.2 浮點運算定點化
DM642是一款定點運算的DSP處理器。由于人臉檢測算法采用了大量浮點運算,為提高檢測速度,必須采取浮點運算轉定點運算的優化措施。定點化的優化方法有兩種:1)在保證精度的前提下,手工對數據位進行修改,提取指數和尾數,最后對尾數進行移位操作;2)直接調用TI公司浮點運算轉定點的FastRts庫,利用庫函數進行浮點運算定點化的優化。系統采用后者的優化方案,并使用DSP C6000系列芯片獨有的內聯函數_mpyd(),_addd(),_fixfi(),_divd()等,對算法循環體系內的算術代碼進行運算加速優化。調用Bios函數CLK_getltime()獲取檢測算法在DM642上的檢測時間。
2.3.3 圖像Scale預處理
選取分辨率為704×480的NTSC格式視頻,對其縮放并獲取分辨率為352×240的CIF格式圖像。由于人臉檢測是基于灰度值進行計算的,對于待檢圖像的分辨率要求也不高,因此只對Y分量灰度值信號進行Scale預處理,除去其奇數行掃描線與奇數列像素信息,使待檢圖像面積縮小為CIF圖像的1/4,從而減少待檢圖像的信息量。采用此方法優化后,DSP從PC機上讀取100張待檢彩色人臉圖片進行檢測。調用函數CLK_getltime()獲取對圖片人臉檢測的檢測時間。
在人臉檢測系統上(圖6所示)采用算法優化方案,使用訓練的10層級聯分類器對100張彩色待檢圖片進行檢測,其檢測速度、檢測率和誤檢、漏檢率結果如表1所示。

圖6 系統實物圖

表1 實驗數據
從表1中可以得出,在保證較高檢測率的前提下,對算法進行浮點運算定點化和圖像Scale預處理的優化后,系統檢測速度分別提高了8倍和10倍。雖然誤檢率與漏檢率較未優化前有所提高,但仍處于可接受的范圍內。而檢測率保證在90%,確保了系統檢測的高精度性,同時系統檢測速度最終達到了13 f/s的實時速率。
在該系統上對采集的多姿態人臉視頻信號進行人臉檢測,檢測結果如圖7所示。

圖7 多姿態人臉檢測結果
實驗結果表明該系統在光照充足的條件下,使用Gentle Adaboost人臉檢測算法和Haar特征訓練出的人臉分類器可以對多個姿態的正面人臉進行正確的人臉分類,同時可以檢測出有一定偏轉角度的人臉,并且沒有誤檢出背景圖像,保證了較低的誤檢率,證明Gentle Adaboost算法在多姿態人臉檢測中有著優異的表現,該系統能夠準確檢測并標記出各個姿態和小角度偏轉人臉。
本文使用Gentle Adaboost算法訓練出級聯型人臉分類器,基于DM642設計并實現了多姿態人臉檢測實時系統,并對系統檢測速度進行了一系列的優化處理。在保證高檢測率的前提下,獲得了80倍的系統性能提升,達到了13 f/s的實時檢測速度。實驗證明,該檢測系統很好地排除了背景區域,檢測出了圖像中各種姿態的人臉,拓展了人臉檢測在嵌入式領域的應用范圍,也為下一階段的人臉識別、智能監控、區域安防等具體應用奠定了基礎。
[1]艾海舟,肖習攀,徐光佑.人臉檢測與檢索[J].計算機學報,2003,26(7):874-881.
[2]楊稀,楊帆,李巖,等.復雜背景的快速人臉檢測研究[J].電視技術,2011,35(23):125-128.
[3]VIOLA P,JONES M.Rapid object detection using a boosted cascade of simple features[C]//Proc.IEEE Conference on Computer Vision and Pattern Recognition.Hawaii,USA:IEEE Press,2001:511-518.
[4]LIENHART R,MAYDT J.An extended set of Haar-like features for rapid object detection[J].IEEE ICIP,2002,1:900-903.
[5]孫偉,張震國,張忠.基于DSP的多視角人臉檢測系統設計[J].信息技術,2008(9):75-79.