基于SOPC的人臉檢測系統的設計
人臉檢測技術是計算機視覺領域非常重要的研究內容,正受到越來越多的關注。但傳統的PC機平臺上人臉檢測系統體積龐大、不易攜帶、費用高等缺陷。采用通用DSP和多核處理器實現的話,價格昂貴、系統的可拓展性差。本文采用了xilinx公司的Zynq-7000系列芯片作為人臉檢測系統實現平臺。Zynq-7000系列是Xilinx公司推出的行業第一個可擴展處理All Programmable解決方案平臺,旨在為視頻監視、汽車駕駛員輔助以及工廠自動化等高端嵌入式應用提供所需的處理與計算性能水平。本設計采用的是Zynq-7000的XC7Z 02SOPC芯片,該芯片集成了Crotex—A9 MPCore雙核處理器系統,同時內部集成了豐富的可編程邏輯資源,該部分包含約1.3M個等效邏輯門數和220個DSP Slices。這些資源提供了靈活可拓展的圖像處理解決方案。
本文引用地址:http://www.j9360.com/article/201610/308921.htm人臉檢測算法有很多,主要可以分為:基于知識的方法、基于特征的方法、基于模板的方法和基于統計的方法。其中以Adaboost為統計的人臉檢測算法是無論在檢測精度還是檢測速度上,在計算機視覺領域被認為已經達到很高的水準。
1 Adaboost人臉檢測算法原理
Adaboost人臉檢測算法是基于統計模型的方法,該方法給出了一個實時的、穩定的檢測架構。此方法會從許多典型的數據信息中獲取并進行特定的分析,得出人臉圖像,這也是人們普遍使用它進行人臉識別的最根本原因。這一算法主要有3個方面的特點:利用積分圖(Integral Image)快速計算Haar特征;利用Adaboost學習算法將Haar特征生成的弱分類器(Weak Classifier)組合成一個強分類器((Strong Classifier);將強分類器串聯形成級聯分類器(Cascade Classifier)。
1.1 Haar特征及積分圖的計算
Haar特征又稱矩形特征,指的是一系列矩形構成的結構,這種特征結構簡單,利于快速計算。圖1(a)是四種基本結構的矩形特征。把矩形特征中自色區域像素灰度值減去黑色區域的像素灰度值就得到該矩形特征的特征值。圖1(b)矩形特征在人臉檢測中的應用,這些典型的矩形特征能夠很好把人臉和非人臉區分開來。


積分圖能夠快速算出Haar特征的特征值。如圖2(a)所示,積分圖像的定義;積分圖圖像的任意一點i(x,y)處的積分圖像值ii(x,y)是原圖像上該點的左上方所有像素的灰度值之和,即

引入積分圖,計算任意矩形特征的區域的灰度值只需要4個參考點即可,圖2(b)中灰色部分的矩形特征區域的灰度值可以通過A,B,C,D四個點的積分圖來計算,即
sum=ii(AA)+ii(D)-ii(R)-ii(C) (2)
其中sum表示該灰色區域的灰度值。
1.2 Adaboost人臉檢測算法
整個Adaboost人臉檢測算法如圖3所示,首先對圖像進行預處理并計算檢測圖像的積分圖,然后掃描其中每個N*N窗口,對于每個N*N窗口需要進入一個層次型檢測結構(圖示是一個三層結構每一層都是經過Adaboost算法訓練得到一個強分類器),計算分類器中的各個Haar特征的特征值,再和閾值α相比較,進而選擇得到一個該分類器的影響因子。對于每個分類器的檢測中,所有的影響因子累加起來就是該窗口和人臉的相似度,最終把相似度與閾值β比較。若相似度的值小于β,則判定該窗口圖像不是人臉圖像,將排除該窗口并選擇進入下一窗口,若相似度的值大于β,則判定該窗口圖像是人臉窗口圖像,該窗口可以到下個分類器進行檢測。如果該窗口通過所有分類器,則該窗口就是人臉窗口,輸出它的位置信息。將圖像中所有N*N的窗口都檢測完,第一輪的檢測也就結束了。

一副圖像種人臉的大小是不確定的,為了適應不同大小人臉的圖像,在完成第一輪原始圖像的檢測后,需要放大檢測窗口,并重復上述的步驟直到窗口不能放大為止。最后算法需要將所有檢測窗口進行合并,將位置和大小相近的窗口合并在一起。
2 人臉檢測系統SOPC實現
2.1 硬件設計方案
SOPC(System On Programmable Chip)就是要在單塊芯片上搭建出整個系統,其設計的內容不僅包括硬件設計,還包括軟件設計。基于SOPC的實現使得處理器、內存控制器等嵌入式系統所包含的硬件組成部分,都嵌入在芯片上。

本系統依賴的硬件平臺是Zedboard開發板,系統結構框圖如圖4所示,Zedboard的核心處理芯片是Xilinx公司的Zynq-7000芯片系列的XC7Z02,Zynq-7000芯片內部主要分為處理器系統PS(Processing System)和可編程邏輯PL(Programmable Logic)。PS部分內部嵌入了ARM Cortex—A9硬核模塊,PL部分為FPGA,用戶可自由設計自己的硬件邏輯。PS和PL之間的通信通過AXI4高級通信接口,圖5顯示利用Zynq進行SOPC開發的系統啟動流程。

2.2 系統實現
圖4給出了系統結構框圖,其中PS部分主要負責人臉視頻信號的采集、人臉檢測等模塊;PL負責AXI4總線緩存、VGA驅動、圖像預處理等模塊。
系統采用現代的V26的USB攝像頭進行視頻的采集,該攝像頭支持最大分辨率為1280*960,同時支持VGA(640*480)模式。圖像數據輸出格式可以為8位/16位的YCrCb 4:2:2 ITU2656、IR2601GRB 4:2:2或RGB Raw Data。
圖像預處理對人臉檢測有著很重要的作用,圖像預處理主要由圖像增強和噪聲濾除,本文選用的是中值濾波是進行噪聲濾除,中值濾波能有效的濾除圖像中孤立的像素點,還能保護像素的邊緣信息。圖像增強主要采用直方圖均衡化處理。本文通過PL調用了Xilinx公司的圖像與處理的IP,通過PL對圖像預處理能夠節省系統的處理時間。
視頻顯示輸出采用的是群創的AT070TN07數字液晶,視頻顯示輸出采用群創AT056TN52數字液晶,其分辨率為640*480,40Pin 16bit的RGB格式輸出,可視角:L/R/T/B:70/70/50/70,反應時間:15 ms。
人臉檢測模塊主要是通過在PC機Linux平臺上的QT進行代碼的編寫,并通過Xilinx公司的交叉編譯器xilinx-arm-linux將人臉檢測代碼編譯成Zynq平臺可執行的文件,然后通過將QT移植到Zynq平臺。下面是本文人臉檢測模塊一些參數:

3 實驗與結果
實現環境如圖6所示,輸入圖像采用動態圖像形式,外部USB攝像頭將640*480的視頻信傳送到Zedboard開發板上,經人臉檢測系統處理。系統輸出采用的方式是開發板外接一個液晶驅動電路和液晶屏,經過處理的圖像數據以640*480@60Hz的標準VGA格式輸出,從液晶屏幕上可以觀察到人臉檢測的結果。

本人臉檢測系統采用的級聯分類器有25級,共有2913個弱分類器。本系統中Zedboard中PS的CPU工作頻率為667 Mhz,PL的工作頻率為100 MHz。得到的實驗結果如圖7所示,對于640*480分辨率的視頻信號的平均檢測時間56 ms,平均每秒的檢測17.8幀的圖像,基本滿足實時性的檢測結果。檢測率在93%左右,誤檢率在2%左右。

在資源消耗方面,Zynq中PS的CPU的使用率為20%,內存的使用率為9.4%。PL的使用率如表1所示,可以看出Zynq的資源使用率較小。

4 結論
本文的人臉檢測系統利用了Xilinx公司的Zynq-7000上完成設計,減小了系統面積,對于620*480的視頻信號基本實現了實時人臉檢測,有很強的實用性。本文介紹的人臉檢測體現了SOPC技術的靈活性,同時結合了ARM和FPGA各自的優點,克服了傳統ARM在圖像視頻領域開發速度上的劣勢,同時減小了硬件設計的難度。
評論