• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于AdaBoost人臉檢測算法在Android平臺的實現(xiàn)

      2014-03-28 01:53:32安恒煊張學(xué)習(xí)李超陳文輝鄒兵
      電子設(shè)計工程 2014年8期
      關(guān)鍵詞:特征值人臉矩形

      安恒煊,張學(xué)習(xí),李超,陳文輝,鄒兵

      (1.廣東工業(yè)大學(xué)自動化學(xué)院,廣東廣州510006;2.北京航天航空大學(xué)北京100191)

      人臉檢測技術(shù)是對輸入的圖像進(jìn)行檢測并判斷是否包含人臉,并且能夠準(zhǔn)確返回人臉出現(xiàn)的位置的一種計算機(jī)自動檢測技術(shù)[1],目前的人臉檢測技術(shù)主要分為兩大類,一類是基于幾何特征的人臉檢測方法,另外一類是基于統(tǒng)計理論的檢測方法?;趲缀翁卣鞯娜四槞z測方法又可分為3種:基于先驗知識方法、基于特征不變方法、基于模板的方法。傳統(tǒng)的android人臉檢測技術(shù),是通過基于特征不變的方法來實現(xiàn)的,根據(jù)已知的形態(tài)學(xué)相關(guān)知識找出人臉的特征如眼睛、鼻子、嘴等相關(guān)區(qū)域,然后再進(jìn)行人臉判斷[2]。根據(jù)已知的形態(tài)學(xué)來來檢測人臉,比如通過定位雙眼位置來檢測人臉。指定雙眼來檢測人臉存在主觀問題,如人戴眼鏡多數(shù)情況下會影響人臉檢測的效果。而王延江等利用膚色特征方法將圖像分割成多個候選區(qū)域[5],然后對分割出來的候選區(qū)域使用小波分解以提取出相關(guān)人臉特征并進(jìn)行分析,然后根據(jù)分析結(jié)果來判斷該區(qū)域是否包含人臉信息,此方法在復(fù)雜的環(huán)境下易出現(xiàn)很大的漏檢率。Viola P等[3-4]于2001年提出的基于Boosting方法是一個實時人臉檢測系統(tǒng)。他們首先用“積分圖”提高了圖像特征計算的速度,增加了系統(tǒng)運行效率。然后采用了AdaBoost方法對提取的特征值進(jìn)行選擇,形成了多個弱分類器并按照各個分類器的權(quán)重組合成一個最終得強(qiáng)分類器,這樣能適應(yīng)多種復(fù)雜的環(huán)境,檢測效果好,OpenCV現(xiàn)提供C、C++、Python通用編程接口,其開放性和實用性得到了大量從事計算機(jī)視覺研究和軟件開發(fā)人員的青睞[5-6]。本文將基于OpenCV開發(fā)的基于統(tǒng)計理論AdaBoost算法成功的移植到了Android系統(tǒng)中,經(jīng)過測試,取得了較好的效果。

      1 AdaBoost人臉檢測算法

      在計算機(jī)視覺的目標(biāo)檢測中,主要都是基于如下圖所示的過程[7]:

      圖1 視覺目標(biāo)檢測過程Fig.1 Visual target detection process

      在上面的過程中,特征提取和分類器分類是整個檢測過程的核心部分。圖像的采集一般都是通過傳感器等設(shè)備獲得原始圖片,然后經(jīng)過預(yù)處理,預(yù)處理的目的是為了更好地進(jìn)行特征提取,而特征提取中,首先要考慮提取什么樣的特征,接著需要考慮使用何種分類算法將特征分開并進(jìn)行分類,特征選取和特征計算在AdaBoost人臉檢測算法占有重要地位,這也決定了AdaBoost算法的運行速度[8-9]。

      1.1 特征與特征值計算

      基于像素的人臉檢測的算法計算成本較高,Haar特征是基于"塊"的特征,能夠降低計算成本,本文主要采用Haar特征,用來進(jìn)行特征提取,并且采用積分圖的方式來計算特征值,由于采用了積分圖,能夠在常規(guī)時間算出每一個特征值,運算效率大大增加。

      1.1.1 矩形特征

      矩形特征值的定義為兩個不同矩形區(qū)域像素和之差,有以下常見的3種特征類型:2-矩形特征、3-矩形特征、4-矩形特征[10],分別對應(yīng)如下各圖,如圖。

      圖2 矩形特征模板Fig.2 Rectangular feature templates

      根據(jù)上述定義,上圖2中的A,B,D的特征值計算公式:

      C圖較于A,B,D不同,計算如下:

      在上式(1)(2)中,將黑色區(qū)域像素和乘以2,主要是為了使兩種矩形區(qū)域中像素數(shù)目一致。在進(jìn)行特征提取時,可以通過改變特征模板的大小與所處的位置,就可以獲取很多的特征值。單個矩形特征的計算是非常簡單與快速的[11]。由于需要各類原型特征模板及多種尺度在圖像區(qū)域的各個位置進(jìn)行計算,從而導(dǎo)致了特征數(shù)量的總量相當(dāng)大,這勢必會帶來非常大的計算量。假設(shè)W,H分別為圖像窗口的寬度和高度,X=[W/w],Y=[H/h],那么對于矩形特征的原型,其特征數(shù)量的計算如下:

      根據(jù)公式,在人臉檢測過程中,一個2424的圖像窗口,特征總數(shù)可以超過110 000多個。這將導(dǎo)致后續(xù)的檢測速度很慢,所以Viola等人提出來積分圖的概念。

      1.1.2 積分圖

      Viola等人在2004年提出了積分圖的概念[12],加快了矩形特征值的計算速度。積分圖像的定義為:某個像素點的積分圖為圖像原點到該點的矩形區(qū)域內(nèi)的所有像素值之和。另外,在計算積分圖的時候,所使用的像素值為圖像的灰度值,如果圖像為彩色圖像,則需要對彩色圖像進(jìn)行灰度變換。

      矩形的積分圖像公式定義如下:

      圖3 垂直矩形積分圖像Fig.3 Vertical rectangular integral image

      其中I(x′,y′)為圖像在點(x′,y′)處的灰度值,圖像I的積分圖可以使用遞推公式計算:

      其中s(x,y)表示為列積分,其意義表示的是圖形點(x,y)及其在y方向上所有圖像點的灰度值之和??梢钥隙椋?/p>

      在使用積分圖的表示方法下,特征值的計算只和圖像的端點有關(guān)。所以不管特征矩陣的位置如何,只要遍歷圖像一次,就可以求得所有圖像子窗口的特征值。

      2 AdaBoost分類器

      目前在實際中應(yīng)用的人臉檢測方法多為基于AdaBoost學(xué)習(xí)算法的方法。該方法在檢測人臉時實時性比較強(qiáng),檢測率也比較高。本文主要采用AdaBoost算法在Android系統(tǒng)上實現(xiàn)人臉檢測。

      AdaBoost算法是由Freund和Schapire在1995年提出來的[13],其核心思想是通過訓(xùn)練獲得多個弱分類器,然后把弱分類器按照一定的權(quán)重加權(quán)構(gòu)成強(qiáng)分類器。下面是AdaBoost算法過程:

      給定樣本圖像集合(x1,y1),(x2,y2),…,(xn,yn),其中x表示所取樣本的空間,而y表示每個樣本所對應(yīng)值,n表示樣本的個數(shù)。在該系統(tǒng)中y的值代表正負(fù)樣本,其中yi=1表示正樣本,yi=0表示負(fù)樣本。

      1)初始化m個正樣本以及l(fā)個負(fù)樣本的權(quán)重。每個正樣本的權(quán)值在初始都一樣每個負(fù)樣本的權(quán)重為

      2)設(shè)置循環(huán)迭代次數(shù)T。

      3)對每一輪迭代t=1,…,T都做以下步驟:

      ①首先歸一化權(quán)重,使得所有權(quán)重能夠符合相應(yīng)的概率分布,

      ②然后針對特征值j訓(xùn)練其分類器hj。并把計算其評價誤差,即該分類器對樣本進(jìn)行正確分類與錯誤分類加權(quán)和,其公式如下:

      ③然后從其中選擇出具有最小加權(quán)分類誤差的分類器ht,其對應(yīng)的加權(quán)分類誤差為εt。

      ④然后對每個樣本都進(jìn)行更新權(quán)重的操作,其公式如下:

      參數(shù)的含義為:當(dāng)樣本xi被分類器ht正確分類時,參數(shù)ei=0,而若其被錯誤分類時

      4)最終將輸出強(qiáng)分類器,其公式為:

      3 系統(tǒng)實現(xiàn)

      本實驗是在Android模擬器上面開發(fā),并且進(jìn)行真機(jī)的人臉檢測,所以首先需要介紹Android應(yīng)用的開發(fā)工具等,在訓(xùn)練好分類器后,就需要使用該分類器來進(jìn)行系統(tǒng)的實現(xiàn)。人臉檢測的模塊主要是設(shè)置分類器,然后獲取圖像數(shù)據(jù),并向底層傳遞,底層圖像進(jìn)行圖像數(shù)據(jù)的判斷,并返回人臉檢測信息。

      圖4 人臉檢測流程圖Fig.4 The flow chart of face detection

      3.1 系統(tǒng)開發(fā)環(huán)境搭建

      由于Android的上層開發(fā)工具是Java語言,在Windows xp系統(tǒng)下,需要配置三個Java開發(fā)工具:Eclipse IDE,Java JDK和Android SDK。Opencv是面向C接口的,這里就牽涉到了Java與C/C++的混合編程了,這里借助Android NDK編寫本地代碼,Android NDK需要在Linux環(huán)境下運行,故本文采用Ubuntu9.1系統(tǒng)開發(fā)環(huán)境。本系統(tǒng)所使用的軟件資源如下:

      系統(tǒng)環(huán)境:Ubuntu9.1,OpenCV

      SDK:Android SDK2.3.1

      NDK:Android NDK

      開發(fā)環(huán)境:Eclipes3.5+JDK2.0+Android ADT

      開發(fā)環(huán)境搭建步驟:

      1)下載安裝java SDK,版本為SDK1.6。

      2)下載Android NDK,并配置NDK開發(fā)環(huán)境。

      3)配置Eclipse開發(fā)環(huán)境,下載并解壓Eclipse3.5,設(shè)置好開發(fā)環(huán)境后,下載Android ADT插件。

      3.2 OpenCV編譯移植

      在Opencv的3個cv,cvaux,cxcore的功能模塊中,與圖像界面相關(guān)的模塊是highgui模塊,如果需要將Opencv編譯到Android中,需要用到Android中的NDK,Android NDK是一個交叉編譯工具,開發(fā)者自己需要根據(jù)實際情況手動編譯Android.mk文件。這里采用GCC對Android ndk實行交叉編譯,GCC需要在Linux環(huán)境下運行,故本文采用Ubuntu 9.1,NDK版本為android-ndk-r4-linux。編譯時需要手動配置androi.mk,其文件格式如下:

      LOCAL_PATH:=$(call my-dir)

      include$(CLEAR_VARS)

      LOCAL_MODULE:=OpenCV

      LOCAL_SRC_FILES:=

      cxalloc.cpp

      cxarithm.cpp

      cxarray.cpp

      cxcmp.cpp

      cxconvert.cpp

      cxcopy.cpp

      cxdatastructs.cpp

      cxdrawing.cpp

      cxdxt.cpp

      cxerror.cpp

      cximage.cpp

      cxjacobieigens.cpp

      cxlogic.cpp

      cxlut.cpp

      include$(BUILD_SHARED_LIBRARY)

      其中,里面的LOCAL_MODULE關(guān)鍵字是指開發(fā)者最后生成的一個LOCAL_SRC_FILES,在Linux系統(tǒng)下,鍵入./ndk命令后,在工程目錄下會自動產(chǎn)生一個/libs/armeabi的文件夾,編譯時的.so文件就放入這個文件夾中。

      3.3 人臉樣本創(chuàng)建

      在人臉檢測中,樣本的選擇對于創(chuàng)建分類器有非常大的影響,如果選取的樣本足夠豐富,對于訓(xùn)練的結(jié)果就比較好。如果選取不當(dāng),就會嚴(yán)重影響后面的檢測效果。訓(xùn)練樣本分為正例樣本和反例樣本,其中正例樣本是指待檢測的目標(biāo)樣本(如人臉或者手勢)反例樣本可以指其他任意的圖片,在本系統(tǒng)中,使用的是MIT人臉庫,其中樣本總數(shù)為7 087個,人臉樣本數(shù)有2706個,而非人臉樣本數(shù)有4 381個。在MIT樣本庫中的人臉樣圖像尺寸為20×20像素,在正樣本集合中都是正面的人臉,而且還有同一個人在不同光照條件下的樣本。非人臉樣本尺寸和人臉樣本相同,是從圖像中隨機(jī)自動截取的。如圖5,負(fù)樣本來自任意圖片,這些圖片都沒有包含目標(biāo)特征,如圖6人臉正樣本包括基本的目標(biāo)特征。

      圖5 人臉負(fù)樣本Fig.5 Face the negative samples

      圖6 人臉正樣本Fig.6 Face the positive samples

      4 實驗結(jié)果及分析

      本實驗通過與android自帶的人臉庫進(jìn)行比較,系統(tǒng)的自帶的人臉檢測類FaceDetector,該類主要是采用模板匹配的方法,通過雙眼來檢測人臉的位置,但是無法檢測到人的嘴和側(cè)臉信息,并且戴上眼鏡會影響檢測效果,通過對系統(tǒng)FaceDetector進(jìn)行單人臉檢測,發(fā)現(xiàn)檢測率也不是很高,而且當(dāng)戴上眼鏡時,根本無法檢測到人臉。

      圖7 Android系統(tǒng)人臉檢測Fig.7 The Android system face detection

      本系統(tǒng)主要是通過輸入靜態(tài)圖片進(jìn)行人臉檢測,并查看系統(tǒng)檢測檢測效果。本系統(tǒng)的簡單背景下單人臉圖片檢測如圖8。對比系統(tǒng)檢測如圖8,人臉檢測只檢測到了人臉的一部分,本系統(tǒng)人臉檢測完全檢測到人臉。

      圖8 本系統(tǒng)人臉檢測Fig.8 The face detection system

      對有眼鏡的圖片,檢測率也比較高。當(dāng)人戴眼鏡時,系統(tǒng)檢測檢測不出人臉,而本系統(tǒng)對戴眼鏡的人臉也能夠檢測得到。

      圖9 戴眼鏡的人臉檢測Fig.9 Face detection with a pair of glasses

      本系統(tǒng)與系統(tǒng)自帶的人臉檢測用MIT人臉庫進(jìn)行對比檢測,檢測結(jié)果如下表,通過MIT人臉庫的測試以及自制圖片的測試,通過158張626個人臉進(jìn)行檢測,本系統(tǒng)達(dá)到91.69%的人臉檢測率。對比與Android系統(tǒng)自帶的人臉檢測功能,本系統(tǒng)有非常大的改進(jìn),能夠適用于多種應(yīng)用環(huán)境。

      表1 兩系統(tǒng)檢測比較Tab.1 The two system s test comparison

      5 結(jié)論

      目前的人臉檢測大多數(shù)是基于PC機(jī)處理,而本文中將AdaBoost算法成功移植到Android平臺上,達(dá)到了較高的檢測水平。使得AdaBoost算法實現(xiàn)了跨平臺應(yīng)用。經(jīng)過實驗證明,AdaBoost算法在Android平臺上,比Android系統(tǒng)自帶的人臉檢測,檢測效率高,能適用多種復(fù)雜環(huán)境。

      [1] 梁路宏,艾海舟,徐光祜,等.人臉檢測研究綜述[J].計算機(jī)學(xué)報,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] P Graf,et al.Locating Faces and Facial Parts[J].Proc.1st Int’l Workshop Automatic Face and Gesture Recognition,1995:41-46.

      [3] Viola P,Jones MJ.Rapid Object Detection using a Boosted Cascade of Simple Features[J].Computer Vision and Pattern Recognition,2001(1):8-14.

      [4] Viola P,Jones MJ.Robust Real-Time Face Detection.InternationalJournalofComputerVision.2004,57(2):137-154.

      [5] Gray Bradski,Adrian Kaebler.Learning OpenCV:Computer Visionwith theOpenCVLibrary[M].USA:OReillymedia,2008.

      [6] Willow Garage.OpenCV wiki[EB/OL].[2012-05](2012-07-01).http://opencv.willowgarage.com/wiki/Welcome.

      [7] Vadakkepat De Silva L C,et a1.Multimodal Approach to Human-Face Detection and Tracking[J].IEEE Transactions on Industrial Electronics,2008,55(3):385-393.

      [8] 黃超,謝康林,杜平.基于AdaBoost的快速人臉跟蹤算法[J]計算機(jī)工程,2000,0(z1):373-374.HUANG Chao,XIE Kang-lin,DU Ping.A fast face tracking algorithm based on powerfhl adaboost[J].Computer Engineering,2000,30(z1):373-374.

      [9] 千海川,張立明.一種新的AdaBoost快速訓(xùn)練算法[J].復(fù)旦學(xué)報,2004,43(1):27-33.QIAN Hai-chuan,ZHANG Li-ming.A novel fast training algorithm for adaboost[J].Journal of Fudan University,2004,43(1):27-33.

      [10] E Osuna,F(xiàn)reund,and F.Girosi Training Support Vector Machines:An Application toFaceDetection[C]//Proc.IEEEConf.Computer Vision and Pattern Recognition,1997:130-136.

      [11] B.Heiselet,T Serre,MPontil,et al.Component-based Face Detection[C]//Proc IEEE Computer Society Conference on Computer Vision and Pattern Recognition,2001:657-662.

      [12] Viola P.,Jones M.J.Robust Real-Time Face Detection International[J].Journal of Computer Vision,2004,57(2):137-154.

      [13] Meynet J,Popovici V,Thiran J P.Face detection with boosted Gaussian features.Pattern.Recognition,2007(40):2283-2291.

      猜你喜歡
      特征值人臉矩形
      一類帶強(qiáng)制位勢的p-Laplace特征值問題
      有特點的人臉
      單圈圖關(guān)聯(lián)矩陣的特征值
      兩矩形上的全偏差
      化歸矩形證直角
      三國漫——人臉解鎖
      動漫星空(2018年9期)2018-10-26 01:17:14
      從矩形內(nèi)一點說起
      基于商奇異值分解的一類二次特征值反問題
      馬面部與人臉相似度驚人
      長得象人臉的十種動物
      奇聞怪事(2014年5期)2014-05-13 21:43:01
      肥城市| 承德县| 泰来县| 菏泽市| 宣化县| 井研县| 黔西| 集安市| 乐亭县| 河源市| 湖口县| 洞口县| 贡嘎县| 西吉县| 米林县| 许昌市| 囊谦县| 元阳县| 镇坪县| 永善县| 南投市| 潼南县| 安顺市| 鄄城县| 连城县| 景德镇市| 天长市| 阿巴嘎旗| 彩票| 龙岩市| 岑溪市| 新野县| 彰化县| 沙湾县| 乌拉特中旗| 大石桥市| 交城县| 太仓市| 辽宁省| 柳河县| 日土县|