西安郵電大學計算機學院 李 威 翟社平
基于ZedBoard的人臉檢測的設計與實現
西安郵電大學計算機學院 李 威 翟社平
為了解決傳統PC機平臺中人體特征檢測系統的資源利用率低、檢測效果差等問題,采用ZedBoard技術來實現人體特征檢測系統的研究與開發,分析Adaboost算法的原理,并將該算法用于人臉檢測的設計中。實驗結果表明,基于ZedBoard平臺的人體特征檢測系統提高了資源利用率,Adaboost算法可檢測復雜環境下的人體特征元素,從而提高了系統的準確率,這使得人體特征檢測系統的應用領域更加廣泛,也促進了計算機視覺技術的完善與發展。
ZedBoard;Adaboost;計算機視覺
人臉檢測技術是計算機視覺領域的重要組成部分,其中大多數圖像處理軟件包用C、C++來開發[1]。計算機視覺是借助計算機設備來模擬生物視覺系統的一種研究科學[2],人們對其研究始于20世紀70年代早期,研究者們將它列入人工智能領域的重要感知部分[3]。
傳統的人臉檢測技術存在一些難題,如圖像處理速度慢、效果差等問題[4]。在此背景下,Intel公司開發了OPENCV,其具有較強的可移植性和通用性,它對人臉檢測技術的研究與發展起到了重要的作用[5],人臉檢測技術的常用方法是訓練分類器,其具有較強的魯棒性[6],但是Adaboost分類器算法也存在訓練樣本的特征多以及多級分類器的檢測費時等缺點[7]。本文在ZedBoard硬件平臺上實現人體特征檢測算法的設計與開發,ZedBoard內部結構分為處理器系統與可編程邏輯兩部分。在處理器系統中,ZedBoard運行的是嵌入式Linux系統,可在此系統上運行有關計算機視覺領域的算法,來實現人臉檢測系統的研究與開發。
1.1 設計流程
一個基于FPGA的圖像處理系統應包括四個階段[8]。它們是問題描述階段、算法開發階段、結構選擇階段及系統實現階段。其之間的邏輯關系如圖1所示。

圖1 邏輯關系
發現問題并總結問題是問題描述階段的主要工作,本文中的問題就是如何在ZedBoard硬件平臺上實現人體特征圖像的檢測。算法開發階段首先需要明確待解決的問題,然后找到解決問題的算法,最后根據實驗的要求開發相應的算法。結構選擇階段建立在算法開發之上,根據算法結構、處理順序,建立系統的層次結構。系統實現階段是將算法映射到所選的計算結構之上的過程,開發設計最終系統并對其進行測試。
1.2 系統框架
系統設計流程如下,首先確定待解決的兩個問題:第一,研究一種的人體特征檢測算法。第二,在ZedBoard平臺上實現人體特征檢測系統的研究與開發;其次,根據系統需求開發一種Adaboost算法,該算法能實現復雜環境下人臉圖像的檢測;然后根據改進的算法結構確定系統的整體結構;最后在ZedBoard硬件平臺上實現人臉圖像的檢測,并將檢測過的圖像存儲于ZedBoard中。
2.1 搭建系統開發環境
下載OPENCV-2.4.10版本的OPENCV庫,下載圖形界面軟件Cmake,該軟件輔助安裝編譯OPENCV庫。具體編譯步驟如下。
(1)下載安裝Cmake,設置Cmake的環境變量:sudo gedit /home/emouse/.bashrc。
(2)在打開的文件后添加:export PATH=$PATH∶/ usr/local/cmake-2.8.10.2-Linux-i386/bin。
(3)下載安裝OPENCV,在Linux終端輸入#cmakegui命令,該命令打開cmake的gui界面,如圖2所示,開始進行配置。
(4)在opencv-2.4.10文件夾中分別執行make和make-install命令,完成編譯安裝。
(5)安裝后需要修改系統環境變量。在Linux終端輸入sudo gedit/etc/ld.so.conf.d/opencv.conf命令,打開修改環境變量的界面,在界面最后添加/usr/local/lib。
1896年Nadal提出以脫軌系數(即輪軌橫向力Q與垂向力P的比值)為準則判別車輛是否脫軌,不同的國家和學者以此為基礎進行車輛脫軌的深入研究,并提出了不同的脫軌系數限值。我國GB5599—85[10]規定脫軌系數第一限度為1.2(合格標準),第二限度為1.0(安全標準),本文取脫軌系數限值為1.0。同時碰撞過程中輪軌間作用力在極小的時間段內會產生較大的波動,導致脫軌系數迅速增大并超過限值,然后又迅速恢復到正常,這樣的狀態下車輛并不一定有脫軌的危險。因此需要考慮脫軌系數大于限值的最大作用時間,時間越長車輛脫軌的危險性就越大。

圖2 cmake界面
(6)配置OPENCV庫。輸入sudo ldconfig命令,更改環境變量sudo gedit /etc/bash.bashrc。在文件后面添加PKG_CONFIG_PATH=$PKG_CONFIG_PATH∶/usr/local/ lib/pkgconfig export PKG_CONFIG_PATH。
至此,Linux下安裝編譯OPENCV庫的工作已經完成。
編譯可執行文件需要配置arm-xilinx-Linux-gnueabi交叉編譯環境。
(1)終端輸入./xilinx-2011.09-50-arm-xilinxlinux-gnueabi.bin,編譯arm-xilinx-Linux交叉編譯器。
(2)輸入gedit/etc/bash.bashrc,修改環境變量, export ARCH=armexport CROSS_COMPILE=arm-xilinxlinux-gnueabi-export PATH=/root/CodeSource/Sourcery _CodeBench_Lite_for_Xilinx_GNU_Linux/bin/∶$PATH。
2.2 OPENCV在Zedboard上運行
(1)創建文件夾,命名為opencv-2.4.4,用于安裝OPENCV庫文件,在該文件夾中新建一個build和一個install文件夾,并且創建名為toolchain.cmake文件,輸入如下信息。
(2)配置OPENCV庫,在進入build文件夾輸入cmake -D CMAKE_TOOL CHAIN_FILE=toolchain.cmake -D CMAKE_INSTALL_PREFIX=/home/liwei/opencv_zed/install ../在輸入ccmake./命令進行配置,選擇所需的配置庫選項。
(4)制作OPENCV庫鏡像文件。
(5)編譯生成Linux引導程序,文件系統以及Linux鏡像文件系統。
至此,關于OPENCV的移植工作已經完成,接下來就是將編譯得到的鏈接文件以及鏡像文件下載到ZedBoard中,在ZedBoard硬件平臺中運行得到最終結果。
2.3 ZedBoard硬件平臺
ZedBoard集成了ARM Cortex-A9雙核以及最多可達相當于500多萬邏輯門的可編程邏輯單元,其架構將內部結構分為處理器系統與可編程邏輯兩部分[9],ZedBoard結構框圖如圖3所示。ZedBoard硬件系統分為處理器系統部分和可編程邏輯部分,這兩部分協同工作,共同完成設計需求。處理器系統的硬件內核部分是雙核Cortex-A9處理器,其運行的是嵌入式Linux。

圖3 結構框架
Linux內核首先啟動BootROM,BootROM中的代碼對基本外設控制器進行初始化,接著啟動的FSBL應用程序,其主要完成PS端的初始化,并且對PL進行配置,本文主要對PL部分的外設進行配置,PS與PL之間采用AMBA總線進行通信。接著加載SSBL(U-Boot),U-Boot將為Linux內核初始化內存,初始化必要的外設,本文需初始化USB外設,U-Boot還需設置好啟動參數(設備樹的地址,文件系統的類型、地址)。然后U-Boot將把系統控制權交給Linux內核,本文根據ZedBoard的硬件特性,配制出相應的Linux內核鏡像,Linux內核擁有系統的控制權后,先進行初始化,建立起內核的運行環境。完成在虛擬地址到物理地址的映射,初始化并掛載驅動設備。最后啟動應用程序,本文中配置的OPENCV庫和編譯的連接文件(.O文件)都屬于應用程序應用程序部分,該部分用于人臉檢測系統算法的設計與實現。
2.4 算法設計
人臉檢測常用的方法有基于人體圖像分割和基于人體圖像的特征。基于特征的人體圖像檢測算法包括兩個步驟:第一,學習和訓練分類器的過程;第二,判決過程。常見的提取特征的算法有基于膚色,Haar特征,以及基于啟發式搜索[10],分類器有支持向量機(SVM),Adaboost。
2.5 Adaboost算法
Haar特征是矩陣特征,通過相鄰矩陣區域的灰度變化反映圖像的局部特征。Haar特征是人體特征檢測中常用的算法,通過編碼特定的區域狀態,Haar算法可以提高人體特征檢測的速度。Adaboost是一種分類器算法,其基本思想是把大量弱分類器疊加成強分類器,再將若干個強分類器串聯成為級聯分類器,最終完成圖像搜索檢測[9]。
Adaboost算法代碼是整個系統的核心部分,這兩個算法相結合最終訓練生成分類器文件,此文件是檢測人體特征元素的依據。Adaboost的人臉檢測算法的訓練過程,實質上是將具有最強分類能力的特征作為最優的弱分類器,接著將弱分類器轉化為強分類器的過程。Haar特征用形狀、感興趣區域中的位置以及比例系數來定義。Haar特征值可表示為[9]:

其中ωi為矩形的權重,Rectsum(ri)為矩形所包圍的灰度積分,n是組成圖像feature的矩形個數。每個矩形框內的像素都可以通過積分圖計算得到,這樣就可以提高圖像檢測速度。Adaboost算法中弱分類器h(x)如式(2)所示:

其中f表示特征,θ表示閾值,ρ表示不等號方向。弱分類器在訓練過程中,是把所有正確率高于50%的矩形特征找到,然后再將誤差最小的作為本次訓練最優的弱分類器[11]。最優弱分類器按照式(3)構成級聯Adaboost強分類器:

其中α表示每次迭代訓練過程中得到的最優弱分類器的權重系數。然后利用樣本的Haar特征進行分類器訓練,將大量弱分類器疊加起來,得到一個級聯的強分類器。進而對輸入圖片中感興趣的圖片進行檢測[6]。兩次檢測圖像如圖4(a),圖4(b)所示,其中圖5(a)為人臉檢測結果,圖4(b)為人眼人臉檢測結果。選取的兩張圖像均是正面圖像。

圖4 人臉檢測結果
傳統的人臉檢測系統完全建立在PC機,但是PC機存在體積大、硬件資源利用率低等缺點,因此設計出基于ZedBoard平臺的人體特征檢測系統。實驗結果表明,處理同一張圖像,PC平臺和ZedBoard平臺的檢測結果一致, ZedBoard系統避開了PC機的一些缺點,展示出其強大的優點,具體表現在硬件資源利用率高、攜帶方便等方面。表1是二者的硬件資源對比情況,根據實驗結果分析表明,二者都可實現人體特征檢測。由于ZedBoard平臺硬件資源相對較少,因此其在處理同樣一張圖像的過程中,zedBoard要比PC機系統耗時要長,PC機處理一張圖片平均耗時21.067ms,ZedBoard平均耗時177.058ms。

表1 PC與ZedBoard硬件資源比較
本設計完成了基于ZedBoard硬件平臺的人臉檢測。ZedBoard內部結構分為PS和PL部分,PS運行的是嵌入式Linux系統,該系統可運行OPENCV庫。PL中可設計硬件邏輯電路,該部分可實現算法的并行處理。PS與PL的結合使用能夠快速處理視頻、音頻信息,這項技術解決了傳統嵌入式開發板的諸多瓶頸問題。基于ZedBoard硬件平臺還可以設計門禁系統、公司“刷臉”系統、智能家居系統等,這些都是后續研究的重點。
[1]Cheng Harry H,Cheng Wayne W,eta .l Interactive Open Architecture Computer Vision[C].15thIEEE International Conference on Tools with Artificial Intelligence(ICTAIp03),Sacr amento,California ,USA,11,2003:406-410.
[2]溫李慧.基于計算機視覺的遙控器液晶屏圖像檢測[D].碩士學位論文,電子科技大學,2013.06:23-36
[3]Richard Szeliski.計算機視覺:算法與應用[M].北京:清華大學出版社,2012:35-47
[4]侯夢華.基于機器視覺的實時目標檢測系統研究[D].碩士學位論文,廣東工業大學,2008:12-34
[5]黃佳.基于OPENCV的計算機視覺技術研究[D].碩士學位論文,華東理工大學.2013.20-29
[6]Viola P,Jones M J.Robust Real-Time Face Detection[J]. International Journal of Computer Vision. 2004,57(2):137-154
[7]劉瓊,彭光正.一種改進的AdaBoost人臉檢測算法[J].計算機應用于軟件2011,28(6):255-256.
[8]高展洪.多媒體處理器FPGA實現[M].北京:電子工業出版社,2010:57-63.
[9]陸佳華.嵌入式系統軟硬件系統設計實戰指南[M].機械工業出版社,2013:201-230.
[10]李瑞淇.基于膚色和改進的Adaboost人臉檢測算法研究[D].西安電子科技大學,2014:31-37.
[11]何世民.基于Adaboost算法的人臉檢測及其在DSP平臺上的移植[D].哈爾濱理工大學,2010,15-37.
李威(1990—),男,碩士研究生,研究方向為嵌入式應用。
1.陜西省自然基金項目(項目編號:2012JM8044),項目名稱——面向語義Web服務發現的本體協商技術研究;2.陜西省教育廳項目(項目編號:12JK0733),項目名稱——基于本體和規則的語義Web推理技術研究。
翟社平(1971—),男,博士,副教授,從事語義Web、智能Agent、Web服務及云計算等方面研究。