湯欲濤,梁 銳,劉 暢
(吉林大學 電子科學與工程學院 集成光電子學國家重點聯(lián)合實驗室吉林大學實驗區(qū),吉林 長春 130012)
人臉檢測技術[1]是計算機視覺領域非常重要的研究內(nèi)容,正受到越來越多的關注。但傳統(tǒng)的PC機平臺上人臉檢測系統(tǒng)體積龐大、不易攜帶、費用高等缺陷。采用通用DSP和多核處理器實現(xiàn)的話,價格昂貴、系統(tǒng)的可拓展性差。本文采用了xilinx公司的Zynq-7000系列芯片作為人臉檢測系統(tǒng)實現(xiàn)平臺。Zynq-7000[2]系列是Xilinx公司推出的行業(yè)第一個可擴展處理All Programmable解決方案平臺,旨在為視頻監(jiān)視、汽車駕駛員輔助以及工廠自動化等高端嵌入式應用提供所需的處理與計算性能水平。本設計采用的是Zynq-7000的XC7Z02SOPC芯片,該芯片集成了Crotex-A9 MPCore雙核處理器系統(tǒng),同時內(nèi)部集成了豐富的可編程邏輯資源,該部分包含約1.3M個等效邏輯門數(shù)和220個DSP Slices。這些資源提供了靈活可拓展的圖像處理解決方案。
人臉檢測算法有很多,主要可以分為:基于知識的方法、基于特征的方法、基于模板的方法和基于統(tǒng)計的方法。其中以Adaboost為統(tǒng)計的人臉檢測算法是無論在檢測精度還是檢測速度上,在計算機視覺領域被認為已經(jīng)達到很高的水準。
Adaboost人臉檢測算法[3-4]是基于統(tǒng)計模型的方法,該方法給出了一個實時的、穩(wěn)定的檢測架構(gòu)。此方法會從許多典型的數(shù)據(jù)信息中獲取并進行特定的分析,得出人臉圖像,這也是人們普遍使用它進行人臉識別的最根本原因。這一算法主要有3個方面的特點:利用積分圖(Integral Image)快速計算Haar特征;利用Adaboost學習算法將Haar特征生成的弱分 類 器 (Weak Classifier) 組 合 成 一 個 強 分 類 器 ((Strong Classifier); 將強分類器串聯(lián)形成級聯(lián)分類器(Cascade Classifier)。
Haar特征又稱矩形特征,指的是一系列矩形構(gòu)成的結(jié)構(gòu),這種特征結(jié)構(gòu)簡單,利于快速計算。圖1(a)是四種基本結(jié)構(gòu)的矩形特征。把矩形特征中白色區(qū)域像素灰度值減去黑色區(qū)域的像素灰度值就得到該矩形特征的特征值。圖1(b)矩形特征在人臉檢測中的應用,這些典型的矩形特征能夠很好把人臉和非人臉區(qū)分開來。
圖1 Haar特征Fig.1 Haar features
積分圖能夠快速算出Haar特征的特征值。如圖2(a)[5]所示,積分圖像的定義:積分圖圖像的任意一點 i(x,y)處的積分圖像值ii(x,y)是原圖像上該點的左上方所有像素的灰度值之和,即
引入積分圖,計算任意矩形特征的區(qū)域的灰度值只需要4個參考點即可,圖2(b)中灰色部分的矩形特征區(qū)域的灰度值可以通過A,B,C,D四個點的積分圖來計算,即
其中sum表示該灰色區(qū)域的灰度值。
圖2 積分圖及積分圖的用法Fig.2 Integral image and using the integral image
圖3 算法流程Fig.3 Algorithm outline
整個Adaboost人臉檢測算法如圖3[6]所示,首先對圖像進行預處理并計算檢測圖像的積分圖,然后掃描其中每個N*N窗口,對于每個N*N窗口需要進入一個層次型檢測結(jié)構(gòu)(圖示是一個三層結(jié)構(gòu)每一層都是經(jīng)過Adaboost算法訓練得到一個強分類器),計算分類器中的各個Haar特征的特征值,再和閾值α相比較,進而選擇得到一個該分類器的影響因子。對于每個分類器的檢測中,所有的影響因子累加起來就是該窗口和人臉的相似度,最終把相似度與閾值β比較。若相似度的值小于β,則判定該窗口圖像不是人臉圖像,將排除該窗口并選擇進入下一窗口,若相似度的值大于β,則判定該窗口圖像是人臉窗口圖像,該窗口可以到下個分類器進行檢測。如果該窗口通過所有分類器,則該窗口就是人臉窗口,輸出它的位置信息。將圖像中所有N*N的窗口都檢測完,第一輪的檢測也就結(jié)束了。
一副圖像種人臉的大小是不確定的,為了適應不同大小人臉的圖像,在完成第一輪原始圖像的檢測后,需要放大檢測窗口,并重復上述的步驟直到窗口不能放大為止。最后算法需要將所有檢測窗口進行合并,將位置和大小相近的窗口合并在一起。
SOPC(System On Programmable Chip)就是要在單塊芯片上搭建出整個系統(tǒng),其設計的內(nèi)容不僅包括硬件設計,還包括軟件設計?;赟OPC的實現(xiàn)使得處理器、內(nèi)存控制器等嵌入式系統(tǒng)所包含的硬件組成部分,都嵌入在芯片上。
本系統(tǒng)依賴的硬件平臺是Zedboard開發(fā)板,系統(tǒng)結(jié)構(gòu)框圖如圖4所示,Zedboard的核心處理芯片是Xilinx公司的Zynq-7000芯片系列的XC7Z02,Zynq-7000芯片內(nèi)部主要分為處理器系統(tǒng)PS(Processing System)和可編程邏輯PL(Programmable Logic)。PS部分內(nèi)部嵌入了ARM Cotex-A9硬核模塊,PL部分為FPGA,用戶可自由設計自己的硬件邏輯。PS和PL之間的通信通過AXI4高級通信接口,圖5顯示利用Zynq進行SOPC開發(fā)的系統(tǒng)啟動流程。
圖4給出了系統(tǒng)結(jié)構(gòu)框圖,其中PS部分主要負責人臉視頻信號的采集、人臉檢測等模塊;PL負責AXI4總線緩存、VGA驅(qū)動、圖像預處理等模塊。
系統(tǒng)采用現(xiàn)代的V26的USB攝像頭進行視頻的采集,該攝像頭支持最大分辨率為1280*960,同時支持VGA(640*480)模式。圖像數(shù)據(jù)輸出格式可以為8位/16位的YCrCb 4:2:2 ITU2656 、IR2601GRB 4:2:2或 RGB Raw Data。
圖像預處理對人臉檢測有著很重要的作用,圖像預處理主要由圖像增強和噪聲濾除,本文選用的是中值濾波是進行噪聲濾除,中值濾波能有效的濾除圖像中孤立的像素點,還能保護像素的邊緣信息。圖像增強主要采用直方圖均衡化處理。本文通過PL調(diào)用了Xilinx公司的圖像與處理的IP,通過PL對圖像預處理能夠節(jié)省系統(tǒng)的處理時間。
視頻顯示輸出采用的是群創(chuàng)的AT070TN07數(shù)字液晶,視頻顯示輸出采用群創(chuàng)AT056TN52數(shù)字液晶,其分辨率為640*480,40 Pin 16bit的RGB格式輸出,可視角:L/R/T/B:70/70/50/70,反應時間:15 ms。
圖4 系統(tǒng)結(jié)構(gòu)框圖圖Fig.4 System structure diagram
圖5 系統(tǒng)啟動流程Fig.5 System startup
人臉檢測模塊主要是通過在PC機Linux平臺上的QT進行代碼的編寫,并通過Xilinx公司的交叉編譯器xilinxarm-linux將人臉檢測代碼編譯成Zynq平臺可執(zhí)行的文件,然后通過將QT移植到Zynq平臺。下面是本文人臉檢測模塊一些參數(shù):
#ifndef PROPERTY
#define PROPERTY
#define image_width 640//圖片顯示寬度
#define image_height 480 //圖片顯示高度
#define image_Format QImage::Format_RGB888//圖像顯示格式
#define cameraDevice“/dev/video0” //打開攝像頭設備
#define haarXML “./data/haarcascade_frontalface_alt2.xml”//分類器文件
#define imgSizeScaleSmall 0.5 //圖像放縮比例
#define imgSizeScaleBig 2 //圖像放縮比例
#endif//AT070TN07群創(chuàng)
實現(xiàn)環(huán)境如圖6所示,輸入圖像采用動態(tài)圖像形式,外部USB攝像頭將640*480的視頻信傳送到Zedboard開發(fā)板上,經(jīng)人臉檢測系統(tǒng)處理。系統(tǒng)輸出采用的方式是開發(fā)板外接一個液晶驅(qū)動電路和液晶屏,經(jīng)過處理的圖像數(shù)據(jù)以640*480@60Hz的標準VGA格式輸出,從液晶屏幕上可以觀察到人臉檢測的結(jié)果。
本人臉檢測系統(tǒng)采用的級聯(lián)分類器有25級,共有2913個弱分類器。本系統(tǒng)中Zedboard中PS的CPU工作頻率為667 Mhz,PL的工作頻率為100 MHz。得到的實驗結(jié)果如圖7所示,對于640*480分辨率的視頻信號的平均檢測時間56 ms,平均每秒的檢測17.8幀的圖像,基本滿足實時性的檢測結(jié)果。檢測率在93%左右,誤檢率在2%左右。
在資源消耗方面,Zynq中PS的CPU的使用率為20%,內(nèi)存的使用率為9.4%。PL的使用率如表1所示,可以看出Zynq的資源使用率較小。
圖6 試驗環(huán)境圖Fig.6 Experimental environment
圖7 人臉檢測結(jié)果Fig.7 Result of face detection
表1 硬件資源使用率Tab.1 Hardware resource utilization
本文的人臉檢測系統(tǒng)利用了Xilinx公司的Zynq-7000上完成設計,減小了系統(tǒng)面積,對于620*480的視頻信號基本實現(xiàn)了實時人臉檢測,有很強的實用性。本文介紹的人臉檢測體現(xiàn)了SOPC技術的靈活性,同時結(jié)合了ARM和FPGA各自的優(yōu)點,克服了傳統(tǒng)ARM在圖像視頻領域開發(fā)速度上的劣勢,同時減小了硬件設計的難度。
[1]梁路宏,艾海舟,徐光祐,等.人臉檢測研究綜述[J].計算機學報,2002,25(5):449-458.LIANG Lu-hong,AI Hai-zhou,XU Guang-you,et al.A survey of human face detection[J].Chinese Journal of Computers,2002,25(5):449-458.
[2]Santarini M.Zynq-7000 EPP sets stage for new era of innovations[J].Xcell Journal,2011(75):8-13.
[3]Viola P,Jones M.Rapid object detection using a boosted cascade of simple features[J].In Proc.IEEE Conf.Computer Vision and Pattern Recognition,2001(1):511-518.
[4]Viola P,Jones M.Robust real-time face detection[J].International Journal of Computer Vision,2004,57(2):137-154.
[5]ChoJ,Benson Bridget,Mirzaei Shahnam,et al.Parallelized Architecture of Multiple Classifiers for Face Detection[J].20th IEEE International ConferenceonApplication-Specific Systems, Architectures and Processors,2009:75-82.
[6]Theocharides T,Vijaykrishnan N,Irwin M J.A Parallel Architecture for Hardware Face Detection[J].Emerging VLSI