基于NiosⅡ的人臉檢測系統設計
摘要 基于FPGA內嵌的NiosⅡ處理器,設計了一個(gè)實(shí)時(shí)人臉檢測系統。介紹了基于Haar特征的AdaBoost人臉檢測算法,描述了依據AdaBoost算法的人臉檢測軟件實(shí)現過(guò)程,最后在以Altera公司CycloneⅡ系列EP2C70為核心芯片的DE-2開(kāi)發(fā)平臺上,對檢測系統進(jìn)行了整體設計。測試結果表明,系統有較高的檢測率,可以滿(mǎn)足實(shí)時(shí)人臉檢測的要求。
關(guān)鍵詞 人臉檢測;FPGA;AdaBoost算法;分類(lèi)器
人臉檢測是指在圖像中判斷是否有人臉存在,并且將檢測到的人臉部分在圖像中標識出來(lái)的過(guò)程。作為人臉信息處理中的一項關(guān)鍵技術(shù),人臉檢測在自動(dòng)人臉識別、視頻會(huì )議、智能人機交互等領(lǐng)域得到廣泛應用。目前人臉檢測系統多采用PC或DSP作為處理平臺。在PC上,人臉檢測系統實(shí)現雖已經(jīng)達到基本要求,但由于攜帶不便,無(wú)法滿(mǎn)足實(shí)時(shí)檢測,且成本較高。采用通用的DSP方式,外圍電路較復雜,設計難度大,調試也需要較長(cháng)的時(shí)間,且系統的可擴展性和移植性差。文中利用SOPC技術(shù)設計了基于NiosⅡ處理器的人臉檢測系統,不僅達到了實(shí)時(shí)性要求,而且在PC上開(kāi)發(fā)的程序,可方便地移植到Nios II處理器上。
1 Nios II處理器
Nios II處理器是Altera公司為其FPGA產(chǎn)品配套開(kāi)發(fā)的軟核CPU。在邏輯功能上,它是一款通用的RISC結構的CPU;在實(shí)現方式上,它在FPGA上通過(guò)編程實(shí)現。由于Nios II有一個(gè)開(kāi)放式的ALU,通過(guò)用戶(hù)自定義指令集,可以方便地完成對系統的操作;同時(shí)采用哈佛結構的總線(xiàn)模式,大幅地提高了系統的處理速度;另外,Nios II系統中的外設具有可配置性,這在較大程度上簡(jiǎn)化了硬件開(kāi)發(fā)的難度,縮短了產(chǎn)品開(kāi)發(fā)周期。
2 算法概述
文中采用Viola P提出的基于Haar特征的AdaBoost人臉檢測算法,該算法主要分為以下3部分:
(1)使用Haar-like特征表示人臉,將“積分圖”的概念用于Haar矩形特征的快速計算。
(2)使用AdaBoost算法訓練得到大量弱分類(lèi)器,按照權值補償的方式級聯(lián)得到強分類(lèi)器。
(3)將訓練得到的強分類(lèi)器串聯(lián)組成層疊分類(lèi)器,這種結構能及時(shí)摒棄非人臉圖像子模塊,減少了計算的數據量,有效提高系統的檢測速度。
訓練得到一個(gè)好的分類(lèi)器,將大幅提高系統性能。文中通過(guò)對大量的人臉及非人臉圖像進(jìn)行訓練,經(jīng)過(guò)多次迭代,獲得一系列弱分類(lèi)器。在迭代過(guò)程當中,選擇錯誤率最小的弱分類(lèi)器作為本次迭代產(chǎn)生的弱分類(lèi)器hn(x),之后更新樣本權值,使得那些在上次檢測過(guò)程中被誤判的樣本在此次檢測時(shí)能得到足夠的重視,然后再次迭代,獲得新的弱分類(lèi)器,以此類(lèi)推,經(jīng)過(guò)k次迭代,得到k個(gè)弱分類(lèi)器,而所有弱分類(lèi)器組合后便得到分類(lèi)能力較強的強分類(lèi)器。
系統中,每級強分類(lèi)器都有相應的閾值,通過(guò)調整每級強分類(lèi)器的閾值,使得幾乎所有含人臉的圖像都可以順利通過(guò)分類(lèi)器,而絕大多數的非人臉圖像被拒絕。分類(lèi)器位置越靠前,只需少量的特征即可濾除大量的非人臉圖像,而位置靠后,分類(lèi)器的結構相對較復雜,需要較多的特征才能排除那些具有一定人臉特征的非人臉圖像。最終,通過(guò)每級強分類(lèi)器的檢測,人臉圖像將被保留,而非人臉圖像則在檢測過(guò)程當中被某級強分類(lèi)器所淘汰。
概括說(shuō)來(lái),該檢測算法的主要流程為:首先對檢測圖像進(jìn)行積分圖運算,然后用一定大小的子窗口遍歷整幅待檢測圖像,并將子窗口截取到的圖像輸入到分類(lèi)器中判斷是否包含人臉,若該子圖像通過(guò)全部強分類(lèi)器,則判定當前子圖像包含人臉特征,記錄該子圖像的位置和大小,否則拋棄當前子圖像,進(jìn)入下一幀的檢測,當該子窗口遍歷整幅圖像后,放大子窗口尺寸,重新遍歷待檢測圖像,直到子窗口大小超過(guò)圖像大小,檢測結束,流程如圖3所示。
3 人臉檢測系統的硬件設計框架
按照人臉檢測系統的功能要求,可以將整個(gè)系統分為幾個(gè)模塊:視頻采集模塊、視頻緩存模塊、視頻輸出模塊、人臉檢測算法實(shí)現模塊、IO接口模塊(LCD顯示模塊和按鍵模塊);同時(shí)為項目開(kāi)發(fā)的延續,在不影響系統功能的基礎上再添加通訊接口模塊,這樣既可以實(shí)現數據的遠距離傳輸,又能與個(gè)人PC協(xié)同處理。
系統的工作流程:通過(guò)CCD攝像機(25幀/s)采集視頻,之后利用ADV7121將CCD送來(lái)的NTSC、PAL模擬視頻信號轉換成符合CCIR 656標準的YCrCb4:2:2視頻數據;然后在FPGA中通過(guò)視頻采集模塊、視頻緩存模塊、視頻輸出模塊、人臉檢測算法實(shí)現模塊實(shí)現人臉檢測;最后在LCD上顯示最終檢測結果。通過(guò)FPGA內部的I2C總線(xiàn)控制器模塊,實(shí)現對ADV7121視頻解碼芯片的配置。視頻輸出模塊,通過(guò)控制信號提取、制式檢測、灰度有效數據提取等單元,完成視頻數據流中灰度圖像數據的提取。人臉檢測算法實(shí)現模塊根據AdaBoost人臉檢測算法流程對人臉進(jìn)行檢測,然后輸出人臉的相關(guān)數據。LCD顯示模塊主要是輸出行同步信號(HS)和場(chǎng)同步信號(VS),結合人臉檢測算法實(shí)現模塊的檢測結果和視頻緩存模塊存放的視頻數據,完成人臉位置顯示和視頻數據中人臉位置標定。硬件系統的設計框架如圖4所示。
具體功能流程如下:
(1)初始化:FPGA通過(guò)I2C總線(xiàn)傳輸SDAT和SCLK信號,完成對ADV7121的配置;來(lái)自模擬攝像機的模擬視頻信號,經(jīng)過(guò)ADV7121,輸出ITU—RBT.656格式數字視頻信號。
(2)FPGA將轉換后的數字視頻數據傳輸給SRAM1。圖5為視頻采集模塊框圖。ADV7121主要完成視頻數據采集,其視頻數據總線(xiàn)、幀圖像數據時(shí)鐘(PCLK)、場(chǎng)同步信號(Vsync)、行同步信號(Hsync)與FPGA視頻采集模塊相連。FPGA協(xié)調兩塊SRAM“乒乓模式”的讀寫(xiě)操作,并完成模塊的外部接口。
(3)FPGA等待一幀圖像數據存儲結束后,調用人臉檢測模塊,同時(shí)等待下一幀圖像數據,并存儲到SRAM2。
(4)檢測結束,FPGA將得到的人臉位置寫(xiě)回圖像所在SRAM中。
(5)當SRAM2存儲完畢,通知人臉檢測模塊,同時(shí)等待下一幀圖像數據,并存儲到SRAM1。檢測結束,將得到的人臉位置坐標寫(xiě)回圖像所在SRAM中。每秒25幀,每幀周期40 ms,因此從寫(xiě)入視頻圖像到檢測模塊返回結果,需要在40 ms內完成。
4 實(shí)驗結果
經(jīng)過(guò)對A、B、C 3名同學(xué)在多種不同情況下的反復測試,得到測試數據如表1所示。
其中,N、n、FR分別為該條件下測試的總次數、錯檢次數以及誤檢率。
此外,還對網(wǎng)絡(luò )上的具有多個(gè)人臉的圖像進(jìn)行了測試,實(shí)驗結果表明,系統對多人臉模式也有較好的識別能力,效果圖如圖6所示。
5 實(shí)驗結論
通過(guò)對實(shí)驗結果的分析,可得如下結論:
(1)檢測速度:通過(guò)分析人臉檢測算法,經(jīng)過(guò)訓練分類(lèi)器、定點(diǎn)化、以及硬件加速后,使人臉檢測系統在DE-2開(kāi)發(fā)板平臺上,基本達到實(shí)時(shí)檢測的效果。
(2)檢測定位:從檢測結果可以看到,人臉的范圍較小,側重點(diǎn)主要集中在眉毛、眼睛、鼻子、嘴唇等器官上,沒(méi)有耳朵信息特征表現。這是因為人臉訓練庫主要是圍繞幾個(gè)主要特征,所以檢測定位是小區域定位。
(3)檢測率與誤檢率:通過(guò)反復實(shí)驗可以看到,該系統具有較高的檢測率和可以接受的誤檢率,尤其是在正面人臉、小角度傾斜、光照比較均勻的情況下。漏檢往往是因為頭像過(guò)小、臉部特征發(fā)生暫時(shí)性變化(戴眼鏡)、只出現部分人臉或偏轉角度過(guò)大,又或者光照不均勻等。而那些被判定為人臉的非人臉圖像,通常是因為背景復雜,而且該圖像又具有人臉某些特征等因素造成的。
(4)資源利用率:從最終的綜合和仿真結果來(lái)看,在所有模塊當中,積分圖資源占用最多,分類(lèi)器計算時(shí)間最長(cháng),因此選用一種好的處理架構,能大幅提升系統的整體性能。
評論