西安郵電大學(xué)計(jì)算機(jī)學(xué)院 李 威 翟社平
基于ZedBoard的人臉檢測(cè)的設(shè)計(jì)與實(shí)現(xiàn)
西安郵電大學(xué)計(jì)算機(jī)學(xué)院 李 威 翟社平
為了解決傳統(tǒng)PC機(jī)平臺(tái)中人體特征檢測(cè)系統(tǒng)的資源利用率低、檢測(cè)效果差等問題,采用ZedBoard技術(shù)來實(shí)現(xiàn)人體特征檢測(cè)系統(tǒng)的研究與開發(fā),分析Adaboost算法的原理,并將該算法用于人臉檢測(cè)的設(shè)計(jì)中。實(shí)驗(yàn)結(jié)果表明,基于ZedBoard平臺(tái)的人體特征檢測(cè)系統(tǒng)提高了資源利用率,Adaboost算法可檢測(cè)復(fù)雜環(huán)境下的人體特征元素,從而提高了系統(tǒng)的準(zhǔn)確率,這使得人體特征檢測(cè)系統(tǒng)的應(yīng)用領(lǐng)域更加廣泛,也促進(jìn)了計(jì)算機(jī)視覺技術(shù)的完善與發(fā)展。
ZedBoard;Adaboost;計(jì)算機(jī)視覺
人臉檢測(cè)技術(shù)是計(jì)算機(jī)視覺領(lǐng)域的重要組成部分,其中大多數(shù)圖像處理軟件包用C、C++來開發(fā)[1]。計(jì)算機(jī)視覺是借助計(jì)算機(jī)設(shè)備來模擬生物視覺系統(tǒng)的一種研究科學(xué)[2],人們對(duì)其研究始于20世紀(jì)70年代早期,研究者們將它列入人工智能領(lǐng)域的重要感知部分[3]。
傳統(tǒng)的人臉檢測(cè)技術(shù)存在一些難題,如圖像處理速度慢、效果差等問題[4]。在此背景下,Intel公司開發(fā)了OPENCV,其具有較強(qiáng)的可移植性和通用性,它對(duì)人臉檢測(cè)技術(shù)的研究與發(fā)展起到了重要的作用[5],人臉檢測(cè)技術(shù)的常用方法是訓(xùn)練分類器,其具有較強(qiáng)的魯棒性[6],但是Adaboost分類器算法也存在訓(xùn)練樣本的特征多以及多級(jí)分類器的檢測(cè)費(fèi)時(shí)等缺點(diǎn)[7]。本文在ZedBoard硬件平臺(tái)上實(shí)現(xiàn)人體特征檢測(cè)算法的設(shè)計(jì)與開發(fā),ZedBoard內(nèi)部結(jié)構(gòu)分為處理器系統(tǒng)與可編程邏輯兩部分。在處理器系統(tǒng)中,ZedBoard運(yùn)行的是嵌入式Linux系統(tǒng),可在此系統(tǒng)上運(yùn)行有關(guān)計(jì)算機(jī)視覺領(lǐng)域的算法,來實(shí)現(xiàn)人臉檢測(cè)系統(tǒng)的研究與開發(fā)。
1.1 設(shè)計(jì)流程
一個(gè)基于FPGA的圖像處理系統(tǒng)應(yīng)包括四個(gè)階段[8]。它們是問題描述階段、算法開發(fā)階段、結(jié)構(gòu)選擇階段及系統(tǒng)實(shí)現(xiàn)階段。其之間的邏輯關(guān)系如圖1所示。
圖1 邏輯關(guān)系
發(fā)現(xiàn)問題并總結(jié)問題是問題描述階段的主要工作,本文中的問題就是如何在ZedBoard硬件平臺(tái)上實(shí)現(xiàn)人體特征圖像的檢測(cè)。算法開發(fā)階段首先需要明確待解決的問題,然后找到解決問題的算法,最后根據(jù)實(shí)驗(yàn)的要求開發(fā)相應(yīng)的算法。結(jié)構(gòu)選擇階段建立在算法開發(fā)之上,根據(jù)算法結(jié)構(gòu)、處理順序,建立系統(tǒng)的層次結(jié)構(gòu)。系統(tǒng)實(shí)現(xiàn)階段是將算法映射到所選的計(jì)算結(jié)構(gòu)之上的過程,開發(fā)設(shè)計(jì)最終系統(tǒng)并對(duì)其進(jìn)行測(cè)試。
1.2 系統(tǒng)框架
系統(tǒng)設(shè)計(jì)流程如下,首先確定待解決的兩個(gè)問題:第一,研究一種的人體特征檢測(cè)算法。第二,在ZedBoard平臺(tái)上實(shí)現(xiàn)人體特征檢測(cè)系統(tǒng)的研究與開發(fā);其次,根據(jù)系統(tǒng)需求開發(fā)一種Adaboost算法,該算法能實(shí)現(xiàn)復(fù)雜環(huán)境下人臉圖像的檢測(cè);然后根據(jù)改進(jìn)的算法結(jié)構(gòu)確定系統(tǒng)的整體結(jié)構(gòu);最后在ZedBoard硬件平臺(tái)上實(shí)現(xiàn)人臉圖像的檢測(cè),并將檢測(cè)過的圖像存儲(chǔ)于ZedBoard中。
2.1 搭建系統(tǒng)開發(fā)環(huán)境
下載OPENCV-2.4.10版本的OPENCV庫(kù),下載圖形界面軟件Cmake,該軟件輔助安裝編譯OPENCV庫(kù)。具體編譯步驟如下。
(1)下載安裝Cmake,設(shè)置Cmake的環(huán)境變量: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所示,開始進(jìn)行配置。
(4)在opencv-2.4.10文件夾中分別執(zhí)行make和make-install命令,完成編譯安裝。
(5)安裝后需要修改系統(tǒng)環(huán)境變量。在Linux終端輸入sudo gedit/etc/ld.so.conf.d/opencv.conf命令,打開修改環(huán)境變量的界面,在界面最后添加/usr/local/lib。
1896年Nadal提出以脫軌系數(shù)(即輪軌橫向力Q與垂向力P的比值)為準(zhǔn)則判別車輛是否脫軌,不同的國(guó)家和學(xué)者以此為基礎(chǔ)進(jìn)行車輛脫軌的深入研究,并提出了不同的脫軌系數(shù)限值。我國(guó)GB5599—85[10]規(guī)定脫軌系數(shù)第一限度為1.2(合格標(biāo)準(zhǔn)),第二限度為1.0(安全標(biāo)準(zhǔn)),本文取脫軌系數(shù)限值為1.0。同時(shí)碰撞過程中輪軌間作用力在極小的時(shí)間段內(nèi)會(huì)產(chǎn)生較大的波動(dòng),導(dǎo)致脫軌系數(shù)迅速增大并超過限值,然后又迅速恢復(fù)到正常,這樣的狀態(tài)下車輛并不一定有脫軌的危險(xiǎn)。因此需要考慮脫軌系數(shù)大于限值的最大作用時(shí)間,時(shí)間越長(zhǎng)車輛脫軌的危險(xiǎn)性就越大。
圖2 cmake界面
(6)配置OPENCV庫(kù)。輸入sudo ldconfig命令,更改環(huán)境變量sudo gedit /etc/bash.bashrc。在文件后面添加PKG_CONFIG_PATH=$PKG_CONFIG_PATH∶/usr/local/ lib/pkgconfig export PKG_CONFIG_PATH。
至此,Linux下安裝編譯OPENCV庫(kù)的工作已經(jīng)完成。
編譯可執(zhí)行文件需要配置arm-xilinx-Linux-gnueabi交叉編譯環(huán)境。
(1)終端輸入./xilinx-2011.09-50-arm-xilinxlinux-gnueabi.bin,編譯arm-xilinx-Linux交叉編譯器。
(2)輸入gedit/etc/bash.bashrc,修改環(huán)境變量, 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上運(yùn)行
(1)創(chuàng)建文件夾,命名為opencv-2.4.4,用于安裝OPENCV庫(kù)文件,在該文件夾中新建一個(gè)build和一個(gè)install文件夾,并且創(chuàng)建名為toolchain.cmake文件,輸入如下信息。
(2)配置OPENCV庫(kù),在進(jìn)入build文件夾輸入cmake -D CMAKE_TOOL CHAIN_FILE=toolchain.cmake -D CMAKE_INSTALL_PREFIX=/home/liwei/opencv_zed/install ../在輸入ccmake./命令進(jìn)行配置,選擇所需的配置庫(kù)選項(xiàng)。
(4)制作OPENCV庫(kù)鏡像文件。
(5)編譯生成Linux引導(dǎo)程序,文件系統(tǒng)以及Linux鏡像文件系統(tǒng)。
至此,關(guān)于OPENCV的移植工作已經(jīng)完成,接下來就是將編譯得到的鏈接文件以及鏡像文件下載到ZedBoard中,在ZedBoard硬件平臺(tái)中運(yùn)行得到最終結(jié)果。
2.3 ZedBoard硬件平臺(tái)
ZedBoard集成了ARM Cortex-A9雙核以及最多可達(dá)相當(dāng)于500多萬(wàn)邏輯門的可編程邏輯單元,其架構(gòu)將內(nèi)部結(jié)構(gòu)分為處理器系統(tǒng)與可編程邏輯兩部分[9],ZedBoard結(jié)構(gòu)框圖如圖3所示。ZedBoard硬件系統(tǒng)分為處理器系統(tǒng)部分和可編程邏輯部分,這兩部分協(xié)同工作,共同完成設(shè)計(jì)需求。處理器系統(tǒng)的硬件內(nèi)核部分是雙核Cortex-A9處理器,其運(yùn)行的是嵌入式Linux。
圖3 結(jié)構(gòu)框架
Linux內(nèi)核首先啟動(dòng)BootROM,BootROM中的代碼對(duì)基本外設(shè)控制器進(jìn)行初始化,接著啟動(dòng)的FSBL應(yīng)用程序,其主要完成PS端的初始化,并且對(duì)PL進(jìn)行配置,本文主要對(duì)PL部分的外設(shè)進(jìn)行配置,PS與PL之間采用AMBA總線進(jìn)行通信。接著加載SSBL(U-Boot),U-Boot將為L(zhǎng)inux內(nèi)核初始化內(nèi)存,初始化必要的外設(shè),本文需初始化USB外設(shè),U-Boot還需設(shè)置好啟動(dòng)參數(shù)(設(shè)備樹的地址,文件系統(tǒng)的類型、地址)。然后U-Boot將把系統(tǒng)控制權(quán)交給Linux內(nèi)核,本文根據(jù)ZedBoard的硬件特性,配制出相應(yīng)的Linux內(nèi)核鏡像,Linux內(nèi)核擁有系統(tǒng)的控制權(quán)后,先進(jìn)行初始化,建立起內(nèi)核的運(yùn)行環(huán)境。完成在虛擬地址到物理地址的映射,初始化并掛載驅(qū)動(dòng)設(shè)備。最后啟動(dòng)應(yīng)用程序,本文中配置的OPENCV庫(kù)和編譯的連接文件(.O文件)都屬于應(yīng)用程序應(yīng)用程序部分,該部分用于人臉檢測(cè)系統(tǒng)算法的設(shè)計(jì)與實(shí)現(xiàn)。
2.4 算法設(shè)計(jì)
人臉檢測(cè)常用的方法有基于人體圖像分割和基于人體圖像的特征。基于特征的人體圖像檢測(cè)算法包括兩個(gè)步驟:第一,學(xué)習(xí)和訓(xùn)練分類器的過程;第二,判決過程。常見的提取特征的算法有基于膚色,Haar特征,以及基于啟發(fā)式搜索[10],分類器有支持向量機(jī)(SVM),Adaboost。
2.5 Adaboost算法
Haar特征是矩陣特征,通過相鄰矩陣區(qū)域的灰度變化反映圖像的局部特征。Haar特征是人體特征檢測(cè)中常用的算法,通過編碼特定的區(qū)域狀態(tài),Haar算法可以提高人體特征檢測(cè)的速度。Adaboost是一種分類器算法,其基本思想是把大量弱分類器疊加成強(qiáng)分類器,再將若干個(gè)強(qiáng)分類器串聯(lián)成為級(jí)聯(lián)分類器,最終完成圖像搜索檢測(cè)[9]。
Adaboost算法代碼是整個(gè)系統(tǒng)的核心部分,這兩個(gè)算法相結(jié)合最終訓(xùn)練生成分類器文件,此文件是檢測(cè)人體特征元素的依據(jù)。Adaboost的人臉檢測(cè)算法的訓(xùn)練過程,實(shí)質(zhì)上是將具有最強(qiáng)分類能力的特征作為最優(yōu)的弱分類器,接著將弱分類器轉(zhuǎn)化為強(qiáng)分類器的過程。Haar特征用形狀、感興趣區(qū)域中的位置以及比例系數(shù)來定義。Haar特征值可表示為[9]:
其中ωi為矩形的權(quán)重,Rectsum(ri)為矩形所包圍的灰度積分,n是組成圖像feature的矩形個(gè)數(shù)。每個(gè)矩形框內(nèi)的像素都可以通過積分圖計(jì)算得到,這樣就可以提高圖像檢測(cè)速度。Adaboost算法中弱分類器h(x)如式(2)所示:
其中f表示特征,θ表示閾值,ρ表示不等號(hào)方向。弱分類器在訓(xùn)練過程中,是把所有正確率高于50%的矩形特征找到,然后再將誤差最小的作為本次訓(xùn)練最優(yōu)的弱分類器[11]。最優(yōu)弱分類器按照式(3)構(gòu)成級(jí)聯(lián)Adaboost強(qiáng)分類器:
其中α表示每次迭代訓(xùn)練過程中得到的最優(yōu)弱分類器的權(quán)重系數(shù)。然后利用樣本的Haar特征進(jìn)行分類器訓(xùn)練,將大量弱分類器疊加起來,得到一個(gè)級(jí)聯(lián)的強(qiáng)分類器。進(jìn)而對(duì)輸入圖片中感興趣的圖片進(jìn)行檢測(cè)[6]。兩次檢測(cè)圖像如圖4(a),圖4(b)所示,其中圖5(a)為人臉檢測(cè)結(jié)果,圖4(b)為人眼人臉檢測(cè)結(jié)果。選取的兩張圖像均是正面圖像。
圖4 人臉檢測(cè)結(jié)果
傳統(tǒng)的人臉檢測(cè)系統(tǒng)完全建立在PC機(jī),但是PC機(jī)存在體積大、硬件資源利用率低等缺點(diǎn),因此設(shè)計(jì)出基于ZedBoard平臺(tái)的人體特征檢測(cè)系統(tǒng)。實(shí)驗(yàn)結(jié)果表明,處理同一張圖像,PC平臺(tái)和ZedBoard平臺(tái)的檢測(cè)結(jié)果一致, ZedBoard系統(tǒng)避開了PC機(jī)的一些缺點(diǎn),展示出其強(qiáng)大的優(yōu)點(diǎn),具體表現(xiàn)在硬件資源利用率高、攜帶方便等方面。表1是二者的硬件資源對(duì)比情況,根據(jù)實(shí)驗(yàn)結(jié)果分析表明,二者都可實(shí)現(xiàn)人體特征檢測(cè)。由于ZedBoard平臺(tái)硬件資源相對(duì)較少,因此其在處理同樣一張圖像的過程中,zedBoard要比PC機(jī)系統(tǒng)耗時(shí)要長(zhǎng),PC機(jī)處理一張圖片平均耗時(shí)21.067ms,ZedBoard平均耗時(shí)177.058ms。
表1 PC與ZedBoard硬件資源比較
本設(shè)計(jì)完成了基于ZedBoard硬件平臺(tái)的人臉檢測(cè)。ZedBoard內(nèi)部結(jié)構(gòu)分為PS和PL部分,PS運(yùn)行的是嵌入式Linux系統(tǒng),該系統(tǒng)可運(yùn)行OPENCV庫(kù)。PL中可設(shè)計(jì)硬件邏輯電路,該部分可實(shí)現(xiàn)算法的并行處理。PS與PL的結(jié)合使用能夠快速處理視頻、音頻信息,這項(xiàng)技術(shù)解決了傳統(tǒng)嵌入式開發(fā)板的諸多瓶頸問題。基于ZedBoard硬件平臺(tái)還可以設(shè)計(jì)門禁系統(tǒng)、公司“刷臉”系統(tǒng)、智能家居系統(tǒng)等,這些都是后續(xù)研究的重點(diǎn)。
[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]溫李慧.基于計(jì)算機(jī)視覺的遙控器液晶屏圖像檢測(cè)[D].碩士學(xué)位論文,電子科技大學(xué),2013.06:23-36
[3]Richard Szeliski.計(jì)算機(jī)視覺:算法與應(yīng)用[M].北京:清華大學(xué)出版社,2012:35-47
[4]侯夢(mèng)華.基于機(jī)器視覺的實(shí)時(shí)目標(biāo)檢測(cè)系統(tǒng)研究[D].碩士學(xué)位論文,廣東工業(yè)大學(xué),2008:12-34
[5]黃佳.基于OPENCV的計(jì)算機(jī)視覺技術(shù)研究[D].碩士學(xué)位論文,華東理工大學(xué).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]劉瓊,彭光正.一種改進(jìn)的AdaBoost人臉檢測(cè)算法[J].計(jì)算機(jī)應(yīng)用于軟件2011,28(6):255-256.
[8]高展洪.多媒體處理器FPGA實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2010:57-63.
[9]陸佳華.嵌入式系統(tǒng)軟硬件系統(tǒng)設(shè)計(jì)實(shí)戰(zhàn)指南[M].機(jī)械工業(yè)出版社,2013:201-230.
[10]李瑞淇.基于膚色和改進(jìn)的Adaboost人臉檢測(cè)算法研究[D].西安電子科技大學(xué),2014:31-37.
[11]何世民.基于Adaboost算法的人臉檢測(cè)及其在DSP平臺(tái)上的移植[D].哈爾濱理工大學(xué),2010,15-37.
李威(1990—),男,碩士研究生,研究方向?yàn)榍度胧綉?yīng)用。
1.陜西省自然基金項(xiàng)目(項(xiàng)目編號(hào):2012JM8044),項(xiàng)目名稱——面向語(yǔ)義Web服務(wù)發(fā)現(xiàn)的本體協(xié)商技術(shù)研究;2.陜西省教育廳項(xiàng)目(項(xiàng)目編號(hào):12JK0733),項(xiàng)目名稱——基于本體和規(guī)則的語(yǔ)義Web推理技術(shù)研究。
翟社平(1971—),男,博士,副教授,從事語(yǔ)義Web、智能Agent、Web服務(wù)及云計(jì)算等方面研究。