曾 爽,應(yīng) 駿,王 健,曾維軍
(上海師范大學(xué)數(shù)字社區(qū)與智能家居研究中心,上海200234)
當(dāng)前,人臉檢測技術(shù)的應(yīng)用越來越廣泛,但是由于人臉圖像復(fù)雜度較高、相應(yīng)的圖像數(shù)據(jù)處理量也比較大,因此其應(yīng)用平臺(tái)大多是數(shù)據(jù)處理速度更快的PC機(jī)[1]。雖然能夠取得良好的效果,但是由于PC機(jī)體積比較大,因此使用起來就不夠方便。嵌入式系統(tǒng)具有簡單易用以及低功耗的特點(diǎn)[2],隨著嵌入式系統(tǒng)性能的不斷提高,將人臉檢測技術(shù)運(yùn)用到嵌入式系統(tǒng)中將會(huì)變得更加具有實(shí)用價(jià)值。同時(shí),在實(shí)現(xiàn)人臉檢測的過程中,檢測速度是評(píng)價(jià)人臉檢測性能的重要構(gòu)成[3]。因此,在追求人臉檢測準(zhǔn)確率的基礎(chǔ)上,檢測速度的提升越來越受到重視。
本文采用Xilinx公司的zedboard開發(fā)板是ARM+FPGA架構(gòu)的可編程 ZYNQ-7000 AP SoC平臺(tái)[4]。ZYNQ芯片將ARM處理器核心以硬核的方式集成到芯片內(nèi),這樣就使得計(jì)算強(qiáng)度更大、存儲(chǔ)效率更復(fù)雜的算法的實(shí)現(xiàn)變得更加容易。同時(shí),ZYNQ還集成了FPGA邏輯和一些關(guān)鍵外設(shè),解決了使用FPGA片內(nèi)處理器的局限性[4]?;赯YNQ平臺(tái)的顯著優(yōu)勢,本文在PL(FPGA)端對(duì)人臉檢測前的圖片進(jìn)行預(yù)處理,減少噪聲干擾,在PS(ARM)端對(duì)來自PL端的圖片進(jìn)行背景減除,然后進(jìn)行人臉檢測。
在進(jìn)行人臉圖像的采集過程中,噪聲的干擾往往會(huì)在圖像上留下一定的痕跡,如果不對(duì)噪聲進(jìn)行處理,就會(huì)影響到圖像的識(shí)別率。圖像濾波可以消除噪聲帶來的干擾,改善圖像的質(zhì)量,目前通常用于人臉圖像的濾波方法就是中值濾波。
中值濾波是一種非線性濾波的方法,其原理為對(duì)任一像素點(diǎn),用一個(gè)含有若干個(gè)像素點(diǎn)的鄰域區(qū)域(一般選擇為3×3鄰域),將該像素點(diǎn)的像素值替換為所選鄰域內(nèi)所有像素點(diǎn)像素值的中值[5]。中值濾波對(duì)圖像掃描噪聲和濾除脈沖干擾十分有效,而且在去除噪聲的基礎(chǔ)上能夠保留圖像的邊緣紋理輪廓,是經(jīng)典的濾波方法。對(duì)人臉圖像進(jìn)行中值濾波能夠大大提高人臉圖像的特征提取效率,從而提高人臉的識(shí)別率。
本文是在FPGA上實(shí)現(xiàn)中值濾波,這樣就利用了FPGA硬件加速[6]的特點(diǎn)實(shí)現(xiàn)中值濾波算法的加速,從而就能減少整個(gè)人臉檢測的時(shí)間。
圖1給出了中值濾波算法在FPGA上實(shí)現(xiàn)的仿真圖。
圖1 中值濾波FPGA仿真圖
1.2.1 背景減除法
背景減除又可以稱為前景提取,其原理是將當(dāng)前的圖像與背景圖像進(jìn)行減法運(yùn)算,進(jìn)而得到目標(biāo)區(qū)域。由于該方法能夠較好地識(shí)別和提取運(yùn)動(dòng)目標(biāo),所以經(jīng)常用于解決運(yùn)動(dòng)問題。該方法首先需要構(gòu)建與真實(shí)背景較相近的背景模型,然后將待檢測幀與背景模型進(jìn)行差分運(yùn)算,找出其中有變化的區(qū)域作為運(yùn)動(dòng)目標(biāo)[7]。
以上是背景減除法的基本概念,通過這一概念可知,背景減除法一般是用于運(yùn)動(dòng)目標(biāo)的檢測。然而本文主要對(duì)靜態(tài)的人臉圖片進(jìn)行識(shí)別,所以,真正意義上的的背景減除法并不適用于本文的研究,本文利用的是背景減除法的一些思想,如將待檢測圖像和與事先拍攝的背景圖像相減。將兩幅圖像相減后,得到的前景圖像在保留人臉的基礎(chǔ)上具有更少的像素點(diǎn),從而能夠提高人臉檢測的速度。
1.2.2 本文采用的背景減除法
本文結(jié)合背景減除法進(jìn)行人臉檢測,即先對(duì)被檢測圖片與背景圖相減得到前景圖,然后再對(duì)前景圖進(jìn)行人臉檢測。然而,在進(jìn)行背景減除的過程中,背景中某些灰度值比較高的干擾像素點(diǎn)不能夠完全去除,在對(duì)前景圖片進(jìn)行人臉檢測的時(shí)候會(huì)出現(xiàn)誤檢。因此,在本文采用的背景減除法中加入了閾值分割的方法,這樣能夠更大限度地排除背景的干擾,提升檢測速度和識(shí)別率。
所謂閾值分割,就是對(duì)進(jìn)行了背景減除后的圖片的各像素點(diǎn)設(shè)定一個(gè)閾值,使像素值大于該閾值的像素點(diǎn)輸出其本身的像素值,而像素值小于該閾值的像素點(diǎn),像素值輸出為零。
圖2所示為結(jié)合背景減除法的人臉檢測方法。
圖2 結(jié)合背景減除法的人臉檢測方法
本文采用opencv進(jìn)行人臉檢測,opencv是由Intel公司面向應(yīng)用程序開發(fā)者提供的一個(gè)開源的計(jì)算機(jī)視覺庫,采用C/C++編程,包含300多個(gè)處理函數(shù)[8-9]。其應(yīng)用十分廣泛,包括人機(jī)交互、物體識(shí)別、圖像分析、人臉識(shí)別、動(dòng)作識(shí)別、運(yùn)動(dòng)跟蹤分析等領(lǐng)域,因此其完全適用于本文的人臉檢測系統(tǒng)。
本文所設(shè)計(jì)的人臉檢測系統(tǒng)的實(shí)現(xiàn)過程如圖3所示。
圖3 人臉檢測實(shí)現(xiàn)過程
要實(shí)現(xiàn)本文的設(shè)計(jì),除了算法的設(shè)計(jì)實(shí)現(xiàn),搭建一個(gè)能成功實(shí)現(xiàn)本文算法的實(shí)驗(yàn)平臺(tái)也是關(guān)鍵的一步。下面將介紹怎樣實(shí)現(xiàn)PC與zedboard的交叉編譯以及PS與PL端怎樣進(jìn)行通信。
為了在zedboard上成功實(shí)現(xiàn)人臉檢測,就需要將PC端的人臉檢測代碼移植到zedboard上并成功運(yùn)行。本文采用搭建PC與zedboard的交叉編譯環(huán)境的辦法,也即搭建嵌入式Linux開發(fā)環(huán)境。Linux嵌入式開發(fā)環(huán)境的搭建在本系統(tǒng)中分為兩個(gè)部分,分別為宿主機(jī)和目標(biāo)機(jī)環(huán)境的搭建。這里,宿主機(jī)環(huán)境的搭建是指:在PC機(jī)上安裝Linux操作系統(tǒng),主要用于軟件代碼的開發(fā)、編譯,生成可執(zhí)行的.o(二進(jìn)制)文件;而目標(biāo)機(jī)指的是本文的硬件平臺(tái)zedboard,其環(huán)境的搭建是指:在zedboard上搭建系統(tǒng)運(yùn)行的Linux操作系統(tǒng),為.o文件的運(yùn)行、算法實(shí)現(xiàn)以及系統(tǒng)驗(yàn)證創(chuàng)建軟件平臺(tái)。
在本系統(tǒng)中,宿主機(jī)的Linux操作系統(tǒng)是在虛擬機(jī)下安裝的Ubuntu 12.04操作系統(tǒng)。并且在該操作系統(tǒng)下安裝并編譯了opencv庫,建立了交叉編譯環(huán)境,并且還制作生成了opencv庫的鏡像,使之能移植到zedboard,并在zedboard的Linux系統(tǒng)中成功運(yùn)行opencv算法。而對(duì)于目標(biāo)機(jī)上的Linux操作系統(tǒng),本文采用的是其SD卡自帶的精簡的Linux操作系統(tǒng)。
在本系統(tǒng)中,PL端主要用于對(duì)來自外部輸入的圖像進(jìn)行中值濾波。圖片經(jīng)過在PL端的預(yù)處理后,經(jīng)由一個(gè)在512 Mbyte片外存儲(chǔ)器(DDR3)上的幀緩存?zhèn)魉偷絇S端[10]。
圖4給出了PL端圖像數(shù)據(jù)處理過程。
PL與PS之間是通過ARM的高級(jí)可擴(kuò)展接口(AXI)總線,而來自PL端外部輸入的圖像數(shù)據(jù)信號(hào)主要是經(jīng)AXI-stream接口與PS端通信,因此從外部輸入的圖像數(shù)據(jù)要轉(zhuǎn)換成AXI-stream接口信號(hào),而AXI-stream是不能直接與PS相連的。這樣,該信號(hào)就只能經(jīng)AXI-VDMA核轉(zhuǎn)換成AXI-HP接口來實(shí)現(xiàn)PL端圖像數(shù)據(jù)與PS的數(shù)據(jù)交換。此處的中值濾波是利用Xilinx公司提供的FPGA開發(fā)工具ISE設(shè)計(jì)的,并在第三方的仿真工具M(jìn)odelsim上進(jìn)行了仿真驗(yàn)證。
圖4 PL端數(shù)據(jù)處理過程
在ZYNQ的體系架構(gòu)中,VDMA經(jīng)由AXI的高性能(HP)接口與PS相連,這些高性能的接口對(duì)PS端的內(nèi)存控制器有專用的訪問,能夠支持與片外存儲(chǔ)器之間的高帶寬的數(shù)據(jù)傳輸。每一個(gè)VDMA控制一個(gè)幀緩存,而且?guī)彺嬉子趶腜S端的內(nèi)存中獲取。由于從外部輸入圖像數(shù)據(jù)是連續(xù)的,因此當(dāng)PS端從幀緩存中讀取數(shù)據(jù)時(shí),幀緩存暫停,然后PS可以將讀取到的圖像數(shù)據(jù)轉(zhuǎn)換成位圖文件,并保存在zedboard的SD卡中,該操作完成后,幀緩存重新開始工作。
圖5給出了數(shù)據(jù)在PS端的存取過程。
圖5 PS端數(shù)據(jù)處理流程
如上所述,處理器端將從幀緩存里面讀取的數(shù)據(jù)轉(zhuǎn)換成位圖文件保存在了zedboard的SD卡中,這樣就能利用事先建立的PC上的Linux操作系統(tǒng)與zedboard的Linux操作系統(tǒng)間的交叉編譯環(huán)境對(duì)采集到的圖像進(jìn)行前景提取以及最終的人臉識(shí)別。
在系統(tǒng)驗(yàn)證過程中,PL端輸入大小為512×480帶有椒鹽噪聲的人臉圖片,經(jīng)過中值濾波后輸出的圖片肉眼幾乎看不到有噪聲的存在,圖像質(zhì)量得到極大改善,實(shí)驗(yàn)結(jié)果如圖6所示。
圖6 帶噪圖像和中值濾波后的圖像
而在PS端,用來進(jìn)行檢測的圖片都是經(jīng)PL端預(yù)處理后的圖片,并且保存在zedboard板卡的SD卡中。得到被檢圖片后,先對(duì)人臉圖進(jìn)行背景減除操作,得到前景圖以及背景減除的時(shí)間;然后對(duì)經(jīng)背景減除后的圖片進(jìn)行人臉檢測,得到檢測一幀圖片的檢測時(shí)間。同時(shí),在PS端也同樣對(duì)沒有進(jìn)行背景減除的人臉圖片進(jìn)行人臉檢測,記錄下檢測一幀圖片的時(shí)間。背景減除效果如圖7所示,檢測時(shí)間如表1~表2所示。
圖7 背景減除法效果圖
表1 人臉檢測時(shí)間對(duì)比 ms
表2 背景減除時(shí)間 ms
如表1、表2所示,列出了對(duì)沒有背景減除的人臉圖、背景減除后的人臉圖以及進(jìn)行背景減除檢測的時(shí)間。從實(shí)驗(yàn)結(jié)果可以看出,第一次實(shí)驗(yàn)的時(shí)間與后面幾次試驗(yàn)的時(shí)間相差較大,因此可以不考慮第一次實(shí)驗(yàn)的檢測時(shí)間。而后面三次實(shí)驗(yàn)的結(jié)果表明經(jīng)過背景減除后,人臉檢測的時(shí)間明顯減少,也就是檢測效率明顯提高,平均在730 ms左右。
結(jié)合背景減除法的人臉檢測算法不僅在檢測效率上有了提高,而且在識(shí)別率上也是有明顯的提升,實(shí)驗(yàn)結(jié)果如圖8所示。
圖8 人臉檢測效果圖
從圖8可以看出,在無背景減除的人臉圖片中,不僅檢測出了兩個(gè)實(shí)際的人臉,而且還檢測出了背景圖片中的干擾項(xiàng)。而在經(jīng)過背景減除后,之前的干擾項(xiàng)被當(dāng)做背景去除,圖片中只檢測出了2個(gè)人臉,因此可以看出結(jié)合背景減除法的人臉檢測算法也實(shí)現(xiàn)了人臉識(shí)別率的提高。
本文在ZYNQ平臺(tái)上,結(jié)合背景減除法進(jìn)行人臉檢測,實(shí)現(xiàn)了人臉檢測時(shí)間的優(yōu)化,背景減除后的檢測時(shí)間比沒有背景減除的檢測時(shí)間減少了730 ms左右,并且在識(shí)別率方面也有所提升。在整個(gè)系統(tǒng)中,利用了ZYNQ的ARM+FPGA的架構(gòu)特點(diǎn),在PL(FPGA)端對(duì)圖像進(jìn)行了預(yù)處理(中值濾波),在PS(ARM)端對(duì)來自PL端的圖像進(jìn)行背景減除以及人臉檢測。而且,本文采用的背景減除法還進(jìn)行了閾值操作,這樣就能夠更大限度地去除背景的干擾,從而實(shí)現(xiàn)人臉檢測速度的更大的提升。然而,本文采用的背景減除法對(duì)于光照變化比較大的情況下提取前景的效果明顯下降,導(dǎo)致識(shí)別率的下降,因此本文采用的背景減除算法的魯棒性有待進(jìn)一步提升。
[1]官志平.基于ARM9的Linux系統(tǒng)移植以及在電梯轎廂內(nèi)人數(shù)檢測的應(yīng)用[D].廈門:廈門大學(xué),2014.
[2]徐淑峰.基于FPGA的人臉檢測系統(tǒng)設(shè)計(jì)[D].上海:上海交通大學(xué),2008.
[3]趙麗紅,劉紀(jì)紅,徐心和.人臉檢測方法綜述[J].計(jì)算機(jī)應(yīng)用研究,2004,9(12):73-77.
[4]王淑玲.基于ZYNQ實(shí)現(xiàn)實(shí)時(shí)人臉檢測技術(shù)的研究[D].南京:南京理工大學(xué),2014.
[5] GONZALEZ R C,WOODSR E.Digital Image Processing[M].3rd ed.Beijing:Electronic Industry Press,2011.
[6]陸佳華,江舟,馬岷.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南基于Xilinx Zynq[M].北京:機(jī)械工業(yè)出版社,2013.
[7]陳燕萍.基于背景減除的運(yùn)動(dòng)目標(biāo)檢測算法研究[D].廈門:廈門大學(xué),2008.
[8] BRADSKI A,KAEBLER A. 學(xué)習(xí) OpenCV[M].北京:清華大學(xué)出版社,2009.
[9]陳志恒,姜明新.基于openCV的人臉檢測系統(tǒng)的設(shè)計(jì)[J].電子設(shè)計(jì)工程,2012,20(10):182-185.
[10] RUSSELL M,F(xiàn)ISCHABER S.OpenCV based road sign recognition on ZYNQ[J].IEEE,2013(7):596-601.