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