韓進(jìn),張覽
(山東科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,青島 266590)
Adaboost算法的臉譜識(shí)別系統(tǒng)應(yīng)用設(shè)計(jì)*
韓進(jìn),張覽
(山東科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,青島 266590)
研究了灰度值、中值濾波的圖像預(yù)處理方法和Haar特征提取思想計(jì)算多尺度下相同特征。本文基于Adaboost算法針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練不同的分類(lèi)器,并將弱分類(lèi)器進(jìn)行集合,構(gòu)成一個(gè)更強(qiáng)的最終分類(lèi)器,實(shí)現(xiàn)了臉譜識(shí)別系統(tǒng)。通過(guò)驗(yàn)證臉譜識(shí)別系統(tǒng),實(shí)現(xiàn)了對(duì)視頻流中臉譜的準(zhǔn)確定位,達(dá)到了無(wú)拖影、噪聲少及識(shí)別準(zhǔn)確的預(yù)期。
分類(lèi)器;臉譜識(shí)別;Haar-like;Adaboost
隨著生物檢測(cè)技術(shù)的快速發(fā)展,臉譜識(shí)別技術(shù)在國(guó)家重要機(jī)關(guān)及社會(huì)安防領(lǐng)域具有廣泛而特殊的用途,己經(jīng)被廣泛應(yīng)用于相關(guān)領(lǐng)域。同時(shí),臉譜識(shí)別作為機(jī)器視覺(jué)和模式檢測(cè)領(lǐng)域最富有挑戰(zhàn)性的課題之一,涉及到模式檢測(cè)、計(jì)算機(jī)視覺(jué)、人工智能以及圖像處理等多門(mén)學(xué)科,經(jīng)常應(yīng)用于人機(jī)交互領(lǐng)域,本課題研究了圖像預(yù)處理技術(shù)、Haar-like特征以及Adaboost算法,實(shí)現(xiàn)了對(duì)視頻中臉譜的準(zhǔn)確識(shí)別,對(duì)推動(dòng)以上各學(xué)科的發(fā)展具有重要的理論意義。
1.1 圖像預(yù)處理
1.1.1 中值濾波
中值濾波可以對(duì)圖像進(jìn)行平滑處理,在圖像采集過(guò)程中,由于受各種因素的影響,圖像往往會(huì)出現(xiàn)一些不規(guī)則的噪聲,從而影響圖像的質(zhì)量。處理噪聲的過(guò)程稱(chēng)為濾波。濾波可以降低圖像的視覺(jué)噪聲,常用于保護(hù)邊緣信息,是經(jīng)典的平滑噪聲方法。
濾波是基于排序統(tǒng)計(jì)理論的一種能有效抑制噪聲的非線(xiàn)性信號(hào)處理技術(shù),基本原理是用某種結(jié)構(gòu)的二維滑動(dòng)模板,將板內(nèi)像素按照像素值的大小進(jìn)行排序,生成單調(diào)上升(或下降)的二維數(shù)據(jù)序列。二維中值濾波輸出為g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分別為原始圖像和處理后圖像。W為二維模板,通常為3×3或5×5區(qū)域,也可以是不同的形狀,如線(xiàn)狀、圓形、十字形、圓環(huán)形等。
1.1.2 灰度化
圖像灰度化的過(guò)程就是將彩色圖像轉(zhuǎn)換為灰度圖像的過(guò)程,彩色圖像包含較多人臉特征信息,但是直接作為處理對(duì)象會(huì)使過(guò)程復(fù)雜化。相比之下,灰度圖像在保留了人臉主要特征信息的基礎(chǔ)上,減少了總信息量。
在RGB模型中,如果R=G=B,則彩色表示一種灰度顏色,其中R=G=B的值叫灰度值,因此,灰度圖像每個(gè)像素只需一個(gè)字節(jié)存放灰度值,灰度范圍為0~255。圖像灰度化處理的算法思想是加權(quán)平均值法。根據(jù)重要性或其他指標(biāo)給R、G、B賦予不同的權(quán)值,并使R、G、B的加權(quán)值平均,即f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j),其中R(i,j)、G(i,j)、B(i,j)分別為R、G、B的權(quán)值。只有當(dāng)Cgray<<0.30R 0.59G 0.11B 且 R< 1.2 特征選取與計(jì)算 1.2.1 特征選取 Adaboost臉譜識(shí)別訓(xùn)練算法很重要的一方面是特征選取。選取的特征為Haar-like特征,其分為三類(lèi):邊緣特征、線(xiàn)性特征及中心特征,組合成特征模板。特征模板內(nèi)有白色和黑色兩種矩形,并定義該模板的特征值為白色矩形像素和減去黑色矩形像素和。在確定了特征形式后,Harr-like特征的數(shù)量就取決于訓(xùn)練樣本圖像矩陣的大小,特征模板在子窗口內(nèi)任意放置,一種形態(tài)稱(chēng)為一種特征,找出所有子窗口的特征是進(jìn)行弱分類(lèi)訓(xùn)練的基礎(chǔ)。Haar-like特征如圖1所示。 圖1 Harr-like特征 1.2.2 特征計(jì)算 積分圖計(jì)算方法是Adaboost識(shí)別訓(xùn)練算法的重要組成部分,利用樣本的Harr-like特征進(jìn)行分類(lèi)器訓(xùn)練,得到一個(gè)級(jí)聯(lián)的boosted分類(lèi)器。訓(xùn)練樣本分為正例樣本和反例樣本,其中正例樣本是指待檢目標(biāo)樣本,反例樣本指其他任意圖片,所有的樣本圖片都被歸一化為同樣大小。每個(gè)特定分類(lèi)器所使用的特征用形狀、興趣區(qū)域中的位置以及比例系數(shù)來(lái)定義。每個(gè)矩形框內(nèi)的象素和都可以通過(guò)積分圖象很快計(jì)算出來(lái)。 1.3 Adaboost臉譜識(shí)別 Adaboost算法框架可以分為三大部分:第一部分,使用Harr-like特征表示人臉,使用“積分圖”實(shí)現(xiàn)特征數(shù)值的快速計(jì)算;第二部分,使用Adaboost算法挑選出一些最能代表人臉的矩形特征的弱分類(lèi)器,按照加權(quán)投票的方式將弱分類(lèi)器構(gòu)造為一個(gè)強(qiáng)分類(lèi)器;第三部分,將訓(xùn)練得到的若干強(qiáng)分類(lèi)器串聯(lián)組成一個(gè)級(jí)聯(lián)結(jié)構(gòu)的層疊分類(lèi)器,級(jí)聯(lián)結(jié)構(gòu)能有效地提高分類(lèi)器的檢測(cè)速度。Adaboost算法是一種用來(lái)分類(lèi)的方法,把一些比較弱的分類(lèi)方法合在一起,組合出新的很強(qiáng)的分類(lèi)方法。Adaboost算法分類(lèi)效果如圖2所示。 使用Adaboost算法進(jìn)行類(lèi)別劃分時(shí)需要規(guī)劃一條錯(cuò)誤率最小的基線(xiàn),但深藍(lán)色球被錯(cuò)誤劃分到紅色區(qū)域,因此加重錯(cuò)誤球的權(quán)重,所以在下一次劃分時(shí),將優(yōu)先考慮那些權(quán)重大的球,最終得到了一個(gè)準(zhǔn)確的劃分,如圖3所示。 圖2 Adaboost分類(lèi)效果 圖3 多條線(xiàn)效果 基于Adaboost算法的臉譜識(shí)別即從圖片中找出所有包含人臉的子窗口,將人臉的子窗口與非人臉的子窗口分開(kāi)。識(shí)別基本步驟如下: ① 將規(guī)格為20×20點(diǎn)陣的圖片提取出簡(jiǎn)單的特征,稱(chēng)為Harr特征,如圖4所示。 圖4 Harr特征 計(jì)算方法是用白色區(qū)域內(nèi)的像素和減去黑色區(qū)域像素和,因此在人臉與非人臉圖片的相同位置上,值的大小并不等價(jià),這些特征可以用來(lái)區(qū)分人臉和非人臉。區(qū)分結(jié)果如圖5所示。 圖5 臉譜區(qū)分結(jié)果 ② 使用約數(shù)千張切割好的人臉圖片以及Haar特征數(shù)在一萬(wàn)以上的背景圖片作為訓(xùn)練樣本。首先訓(xùn)練圖片一般歸一化到規(guī)格為20×20像素大小的圖片中。該圖片中可供使用的Haar特征數(shù)在一萬(wàn)個(gè)左右,然后通過(guò)Adaboost算法挑選數(shù)千個(gè)有效的Haar特征來(lái)組成臉譜識(shí)別器。 圖7 Linux內(nèi)核配置界面 ③ 使用學(xué)習(xí)算法訓(xùn)練出一個(gè)臉譜識(shí)別器后,便可以在各個(gè)場(chǎng)合使用。同時(shí),將圖像按比例依次縮放,然后在縮放后的圖片中依次判別是否為人臉。 2.1 系統(tǒng)實(shí)現(xiàn) 臉譜識(shí)別系統(tǒng)需要完成視頻流的采集、網(wǎng)絡(luò)傳輸以及臉譜識(shí)別三個(gè)基本過(guò)程。視頻流的采集要實(shí)現(xiàn)Linux內(nèi)核中驅(qū)動(dòng)的配置,使其符合UVC技術(shù)規(guī)格。網(wǎng)絡(luò)傳輸主要基于TCP/IP協(xié)議棧中的TCP協(xié)議實(shí)現(xiàn),完成視頻流數(shù)據(jù)的上傳工作。臉譜識(shí)別采用OpenCV技術(shù)實(shí)現(xiàn)視頻中動(dòng)態(tài)臉譜識(shí)別并進(jìn)行目標(biāo)定位。系統(tǒng)工作流程圖如圖6所示。 圖6 系統(tǒng)工作流程圖 2.1.1 攝像頭驅(qū)動(dòng)實(shí)現(xiàn) 系統(tǒng)使用的攝像頭是Linux內(nèi)核公開(kāi)支持的攝像頭芯片,符合UVC標(biāo)準(zhǔn)。首先使用Ubuntu12.03配置交叉編譯環(huán)境的支持,然后安裝gcc編譯器來(lái)實(shí)現(xiàn)對(duì)c++文件的編譯連接。最后在主目錄下安裝gz壓縮包,這里使用符合開(kāi)發(fā)板的config_mini2440_w35作為默認(rèn)配置文件,然后執(zhí)行“make menuconfig”,出現(xiàn)Linux內(nèi)核界面后即能夠?qū)崿F(xiàn)所需要的配置工作。內(nèi)核配置界面如圖7所示。 圖8 V4L2視頻采集流程圖 Video For Linux 2是Linux內(nèi)核中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng),必須在Ubuntu系統(tǒng)中對(duì)V4L2配置才能生效。它為針對(duì)視頻設(shè)備的應(yīng)用程序編程提供一系列接口函數(shù)。對(duì)于USB攝像頭,其驅(qū)動(dòng)程序中需要提供基本I/O操作接口函數(shù)open、read、write、close的實(shí)現(xiàn),對(duì)中斷的處理實(shí)現(xiàn),內(nèi)存映射功能以及對(duì)I/O通道的控制接口函數(shù)ioct1的實(shí)現(xiàn)等,并把它們定義在struct file_operations中。當(dāng)應(yīng)用程序?qū)υO(shè)備文件進(jìn)行諸如open、close、read、write等系統(tǒng)調(diào)用操作時(shí),Linux 2.6.32內(nèi)核將通過(guò)file_operations結(jié)構(gòu)訪問(wèn)驅(qū)動(dòng)程序提供的函數(shù),通過(guò)這種途徑實(shí)現(xiàn)上述的功能。其主要流程如圖8所示。 2.1.2 網(wǎng)絡(luò)傳輸實(shí)現(xiàn) 圖9 TCP連接過(guò)程 視頻流采集后需要把圖像的每一幀數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸?shù)缴衔粰C(jī),因此需要在完成視頻采集的基礎(chǔ)上建立網(wǎng)絡(luò)服務(wù)器端,實(shí)現(xiàn)客戶(hù)端和服務(wù)器之間的高質(zhì)量數(shù)據(jù)通信。視頻流的傳輸需要可靠性極強(qiáng)的TCP協(xié)議來(lái)傳輸,以實(shí)現(xiàn)臉譜識(shí)別系統(tǒng)對(duì)大數(shù)據(jù)流通的強(qiáng)烈要求。圖9所示為T(mén)CP連接過(guò)程。 圖10 系統(tǒng)界面與識(shí)別結(jié)果 Linux系統(tǒng)是通過(guò)提供套接字socket來(lái)進(jìn)行網(wǎng)絡(luò)編程的。通過(guò)服務(wù)端程序進(jìn)行網(wǎng)絡(luò)傳輸時(shí)涉及到的套接口操作函數(shù)主要有:socket函數(shù),主要功能是創(chuàng)建指定類(lèi)型的套接口并返回套接口描述符;bind()函數(shù),主要功能是使套接口與IP 地址和端口號(hào)綁定;connect()函數(shù),主要功能是用來(lái)與遠(yuǎn)端服務(wù)器建立連接;listen()函數(shù),主要功能是當(dāng)socket 與某一端口捆綁以后監(jiān)聽(tīng)該端口,以便對(duì)到達(dá)的服務(wù)請(qǐng)求加以處理;accept()函數(shù),主要功能是接受連接隊(duì)列里的服務(wù)請(qǐng)求,并返回一個(gè)新的socket 描述符來(lái)供這個(gè)新連接使用。 將采集格式符合UVC的原始視頻圖像幀數(shù)據(jù)壓縮成JPEG 格式,并當(dāng)客戶(hù)端端口發(fā)出連接請(qǐng)求時(shí),服務(wù)端進(jìn)行連接驗(yàn)證,連通后就可以通過(guò)子進(jìn)程向客戶(hù)端發(fā)送JPEG 圖像數(shù)據(jù): if((size=(yuv420p_to_JPEG(&imagebmp,imageptr,640,480,20)))<0){ //調(diào)用分叉函數(shù),返回值: 若成功調(diào)用一次則返 //回兩個(gè)值,子進(jìn)程返回0,父進(jìn)程返回子進(jìn)程標(biāo) //記;否則,出錯(cuò)返回-1 if(!fork()){ if(revbuf[5]==' ')//調(diào)用發(fā)送函數(shù) send(nsockfd, imagebmp, size, 0); } } 2.1.3 OpenCV實(shí)現(xiàn) OpenCV作為一個(gè)跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。本模塊首先通過(guò)socket從服務(wù)器端取一幀圖片,然后通過(guò)OpenCV內(nèi)置的圖像解碼API將其轉(zhuǎn)換成OpenCV特有的IPlImage結(jié)構(gòu)體。圖像文件的操作功能是通過(guò)標(biāo)準(zhǔn)C函數(shù)庫(kù)中的文件函數(shù)完成的,直接用“open”函數(shù)打開(kāi)一個(gè)文件,并用“write”函數(shù)將接收緩沖區(qū)中的圖片數(shù)據(jù)寫(xiě)入文件中,用“close”函數(shù)關(guān)閉文件,即可形成照片文件。函數(shù) cvHaar DetectObjects 使用針對(duì)某目標(biāo)物體訓(xùn)練的級(jí)聯(lián)分類(lèi)器在圖像中找到包含目標(biāo)物體的矩形區(qū)域。函數(shù)以不同比例大小的掃描窗口對(duì)圖像進(jìn)行幾次搜索(查看cvSetImages ForHaar ClassifierCascade),對(duì)圖像中的重疊區(qū)域利用cvRunHaar ClassifierCascade進(jìn)行檢測(cè)。利用某些繼承(heuristics)技術(shù)以減少分析的候選區(qū)域,例如利用 Canny 裁減 (prunning)方法。 2.2 系統(tǒng)測(cè)試 為了驗(yàn)證臉譜識(shí)別系統(tǒng)的可靠性與有效性,本課題對(duì)視頻中的人臉進(jìn)行了識(shí)別實(shí)驗(yàn),獲得了良好的識(shí)別效果。系統(tǒng)不斷采集視頻流信息并傳輸?shù)缴衔粰C(jī),視頻幀率大約為50 fps,格式規(guī)格為468×500像素點(diǎn)陣,通過(guò)調(diào)整燈光、區(qū)位、距離以及面部表情等對(duì)系統(tǒng)進(jìn)行測(cè)試,經(jīng)驗(yàn)證可得系統(tǒng)對(duì)臉譜目標(biāo)的識(shí)別與定位,準(zhǔn)確無(wú)誤且無(wú)間斷,滿(mǎn)足有效性與可靠性的要求。圖10所示為臉譜識(shí)別測(cè)試結(jié)果與系統(tǒng)界面。 [1] 曹正貴,馬文,王志鋒.基于膚色與新型Haar-Like特征的人臉檢測(cè)算法研究[J].廣東通信技術(shù),2015(11):27-32,40. [2] 劉曉克,孫燮華,周永霞.基于新Haar-like特征的多角度人臉檢測(cè)[J].計(jì)算機(jī)工程,2009(19):195-197. [3] 顏學(xué)龍,任文帥,馬峻.基于擴(kuò)展Haar特征的AdaBoost人臉檢測(cè)算法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015(9):152-155. [4] 糜元根,陳丹馳,季鵬.基于幾何特征與新Haar特征的人臉檢測(cè)算法[J].傳感器與微系統(tǒng),2017(2):154-157. [5] 譚兵,李珊珊,鄧秋福,等.基于膚色及改進(jìn)的AdaBoost算法的人臉檢測(cè)技術(shù)研究[J].科技展望,2017(6):111-112. [6] 姚文韜.基于高清智能攝像機(jī)的人臉檢測(cè)與識(shí)別系統(tǒng)[J].信息技術(shù)與標(biāo)準(zhǔn)化,2017(3):66-68,76. [7] 王慶偉,應(yīng)自爐.一種基于Haar-Like T特征的人臉檢測(cè)算法[J].模式識(shí)別與人工智能,2015(1):35-41. [8] 夏雪婷,胡正飛,潘玲云.基于OpenCV人臉檢測(cè)的室內(nèi)照明自動(dòng)控制系統(tǒng)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2017(4):1-6. [9] 李揚(yáng),曹著明.基于膚色和AdaBoost算法的人臉檢測(cè)[J].現(xiàn)代計(jì)算機(jī):專(zhuān)業(yè)版,2017(5):77-80. 韓進(jìn)(教授),主要研究方向?yàn)榍度胧接?jì)算機(jī)控制、計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)、電子電路;張覽(碩士研究生),主要研究方向?yàn)榍度胧较到y(tǒng)技術(shù)。 Design of Face Recognition System Based on Adaboost Algorithm Han Jin,Zhang Lan (School of Computer Science and Engineering,Shandong University of Science and Technology,Qingdao 266590,China) In the paper,the image preprocessing method of gray value and median filter are studied,then the same feature of Haar feature extraction are researched.The different classifier based on Adaboost algorithm for the same training set is designed.The weak classifiers are set to form a stronger final classifier,and finally the face recognition is achieved.By verifying the facebook recognition system,the accurate positioning of the face in the video stream has achieved no smear,less noise,and accurate prediction. classifier;face recognition;Haar-lik;Adaboost 山東省自然科學(xué)基金資助(ZR2015DM013);國(guó)家自然科學(xué)基金(41572244)。 TP399 A ?士然 2017-04-07)2 系統(tǒng)實(shí)現(xiàn)及測(cè)試
結(jié) 語(yǔ)