余程勝,黃海于
?。ㄎ髂辖煌ù髮W(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 611756)
摘要:提出了一種實(shí)際應(yīng)用環(huán)境下的動(dòng)態(tài)人臉識(shí)別系統(tǒng)。首先討論了動(dòng)態(tài)人臉識(shí)別系統(tǒng)硬件環(huán)境的搭建,然后詳細(xì)介紹了動(dòng)態(tài)人臉識(shí)別系統(tǒng)的軟件流程、主要的功能模塊、人臉庫(kù)的構(gòu)建及管理等,最后對(duì)系統(tǒng)進(jìn)行了測(cè)試。測(cè)試結(jié)果表明,所設(shè)計(jì)的軟硬件系統(tǒng)能夠滿足實(shí)際應(yīng)用需求。
關(guān)鍵詞:人臉識(shí)別系統(tǒng);系統(tǒng)硬件結(jié)構(gòu);人臉庫(kù);訓(xùn)練文件
0引言
隨著科技的不斷進(jìn)步,人臉識(shí)別技術(shù)、智能視頻分析技術(shù)等飛速發(fā)展,并已滲透到人們生活的各個(gè)領(lǐng)域,在諸如智能手機(jī)人臉解鎖、公司智能簽到等方面得到廣泛應(yīng)用。然而,這些系統(tǒng)存在很多弊端,比如需要正確的姿態(tài)以及固定的光照環(huán)境,在識(shí)別前建立待識(shí)別人員的人臉庫(kù),須有一定時(shí)間的停留等,這些都給用戶帶來(lái)不好的用戶體驗(yàn),導(dǎo)致系統(tǒng)的使用存在較大的問(wèn)題。同時(shí)無(wú)論是手機(jī)上的智能人臉解鎖還是智能簽到系統(tǒng),識(shí)別的對(duì)象都是人臉處于靜止不動(dòng)時(shí)的成像,成像限定為無(wú)傾側(cè)、無(wú)強(qiáng)光干擾,屬于靜態(tài)人臉識(shí)別的范疇[1]。
本文討論的是如何對(duì)運(yùn)動(dòng)的對(duì)象進(jìn)行識(shí)別、如何自動(dòng)將新人加入人臉庫(kù)、如何得到人臉特征、如何在復(fù)雜環(huán)境下搭建動(dòng)態(tài)人臉識(shí)別系統(tǒng)的硬件環(huán)境以及如何在人臉庫(kù)不斷擴(kuò)大情況下對(duì)人臉庫(kù)進(jìn)行管理等問(wèn)題。
1系統(tǒng)硬件選擇與架構(gòu)
1.1系統(tǒng)的硬件結(jié)構(gòu)
系統(tǒng)的硬件結(jié)構(gòu)與系統(tǒng)實(shí)際運(yùn)用的環(huán)境密切相關(guān)。本文實(shí)驗(yàn)環(huán)境如圖1所示。此實(shí)驗(yàn)環(huán)境光照強(qiáng)弱變化大、人口密集且相機(jī)覆蓋范圍廣,具有很好的代表性,對(duì)商場(chǎng)、車站等處所需人臉識(shí)別系統(tǒng),本文可提供很好的參考?! ?/p>
根據(jù)需求設(shè)計(jì)硬件結(jié)構(gòu)圖如圖2所示。
由圖2可見(jiàn),系統(tǒng)主要由相機(jī)、計(jì)算機(jī)(工作站)、路由器、服務(wù)器等組成。相機(jī)與工作站之間通過(guò)有線連接,工作站處理相機(jī)處采集到的信息,然后將信息傳輸存儲(chǔ)在服務(wù)器上。在實(shí)際環(huán)境中,兩臺(tái)相機(jī)安裝在圖1所示屏風(fēng)的兩端,面對(duì)正門,形成一定的夾角,使其覆蓋門前區(qū)域,如圖3所示。
1.2系統(tǒng)硬件選擇
在實(shí)際環(huán)境中相機(jī)需要覆蓋的區(qū)域達(dá)到5 m×6 m,相對(duì)智能簽到系統(tǒng)來(lái)說(shuō)已經(jīng)是其幾十倍的范圍了,要在此大范圍內(nèi)而且光照變化明顯的情況下長(zhǎng)時(shí)間進(jìn)行人臉采集、人臉識(shí)別,這必然對(duì)相機(jī)提出要求。而一般要保證人臉識(shí)別,必須保證人臉大小不小于32像素×32像素[2]。
在實(shí)驗(yàn)中采用的是工業(yè)相機(jī),因?yàn)楣I(yè)相機(jī)可保證系統(tǒng)能長(zhǎng)時(shí)間穩(wěn)定地工作,而且工業(yè)相機(jī)具有高的圖像穩(wěn)定性、高傳輸能力和高抗干擾能力等。根據(jù)式(1)及式(2)可得出物距、物寬、物高、焦距的具體取值。
F=wD/W(1)
F=hD/H(2)
其中,F是鏡頭焦距,w是被攝物體在相機(jī)靶面上的成像寬度,D是被攝物體至鏡頭的距離,W是被攝物體的寬度(也即視場(chǎng)寬),h是被攝物體在相機(jī)靶面上的成像高度,H是被攝物體的高度(也即視場(chǎng)高)。如現(xiàn)在選取的相機(jī)鏡頭焦距為6 mm,w為4.28 mm,D為7 m,根據(jù)式(1)即可計(jì)算出被攝視場(chǎng)的寬度約為4.99 m。因此根據(jù)實(shí)際環(huán)境的需要通過(guò)計(jì)算得出相機(jī)的最低參數(shù)要求。另外,相機(jī)的像素是圖像成像質(zhì)量的一個(gè)重要影響因素,像素越高,成像質(zhì)量越好,本文通過(guò)大量實(shí)驗(yàn)最終選用500萬(wàn)像素、幀率為14幀的工業(yè)相機(jī)來(lái)作為圖像采集設(shè)備。
在人臉識(shí)別系統(tǒng)中,由于智能識(shí)別對(duì)CPU內(nèi)存的占用率較高[3],同時(shí)系統(tǒng)需實(shí)時(shí)檢測(cè)跟蹤人臉,幀率為14幀/秒,每幀5 Mbit的情況下一臺(tái)相機(jī)每秒傳輸量達(dá)到70 Mb/s,兩臺(tái)就有140 Mb/s,所以對(duì)計(jì)算機(jī)的CPU、內(nèi)存、存儲(chǔ)速度的要求較高。由于工作站較一般的計(jì)算機(jī)具有更好的穩(wěn)定性,故本系統(tǒng)選用的是工作站,CPU為Intel I74790,主頻為3.60 GHz,處理器內(nèi)存為8 GB,另外使用了固態(tài)硬盤提高讀寫速度以適應(yīng)需求。
2動(dòng)態(tài)人臉識(shí)別系統(tǒng)軟件設(shè)計(jì)
本文的人臉識(shí)別系統(tǒng)會(huì)自動(dòng)將人臉庫(kù)里沒(méi)有的人(即新人)加入人臉庫(kù),前提是人必須進(jìn)門而且人必須從門前區(qū)域的左邊或右邊離開相機(jī)監(jiān)控區(qū)域,這樣避免了所有進(jìn)入相機(jī)覆蓋范圍內(nèi)的人都加入系統(tǒng),而有些人是不必加入系統(tǒng)的。如智能簽到系統(tǒng)中只有對(duì)走進(jìn)公司的人進(jìn)行識(shí)別判斷此人是否是公司員工,而不必去識(shí)別路過(guò)公司門口的行人。
2.1人臉識(shí)別系統(tǒng)流程
人臉識(shí)別系統(tǒng)首先通過(guò)兩臺(tái)相機(jī)采集人臉圖像,再對(duì)采集到的圖像序列進(jìn)行人臉檢測(cè),然后進(jìn)行人臉跟蹤,判斷其是否進(jìn)入室內(nèi),若進(jìn)入室內(nèi)則對(duì)此人采集到的頭像進(jìn)行識(shí)別,判斷其是否是新人,是則加入人臉庫(kù),最后對(duì)新的人臉庫(kù)進(jìn)行訓(xùn)練。具體流程如圖4所示。
2.2人臉識(shí)別系統(tǒng)功能結(jié)構(gòu)
動(dòng)態(tài)人臉識(shí)別系統(tǒng)主要功能如圖5所示。
圖像采集模塊從相機(jī)采集到原始圖像保存在本地,處理過(guò)的圖像會(huì)進(jìn)行刪除。
?。?)人臉檢測(cè)模塊處理從圖像采集模塊得到的圖像,實(shí)時(shí)進(jìn)行人臉檢測(cè)[4],若檢測(cè)出圖像中有人臉截取人臉頭像。
?。?)人臉跟蹤模塊從一個(gè)圖像序列中跟蹤得出該人是否進(jìn)入室內(nèi),若進(jìn)入室內(nèi)則進(jìn)入下一步操作,若沒(méi)有則丟棄。
?。?)人臉識(shí)別模塊通過(guò)對(duì)人臉檢測(cè)、人臉跟蹤得到的一系列頭像進(jìn)行識(shí)別,進(jìn)而判斷該人是否為新人。
?。?)新人入庫(kù)模塊是在人臉識(shí)別結(jié)果為新人時(shí)將采集到的該人的頭像放入人臉庫(kù),以便下一次識(shí)別。
?。?)人臉識(shí)別數(shù)據(jù)庫(kù)管理模塊可以對(duì)人臉庫(kù)里的人進(jìn)行管理,可以添加、刪除用戶,并對(duì)更改后的人臉庫(kù)進(jìn)行訓(xùn)練,將人臉特征保存到文件,方便下一次識(shí)別[5]。
2.3人臉庫(kù)的構(gòu)建
隨著系統(tǒng)使用的時(shí)間越來(lái)越長(zhǎng),人臉庫(kù)可能會(huì)從幾百人增長(zhǎng)到幾千人甚至到幾萬(wàn)人、幾十萬(wàn)人,顯然,如果一次性將人臉庫(kù)里面的人拿去訓(xùn)練是行不通的,而且已經(jīng)訓(xùn)練過(guò)的頭像再次重復(fù)訓(xùn)練也是沒(méi)必要的。因此需要采取些方法改進(jìn)設(shè)計(jì)。
在這里,將人臉庫(kù)與數(shù)據(jù)庫(kù)結(jié)合起來(lái)使用,人臉庫(kù)每新增一個(gè)人就在對(duì)應(yīng)的數(shù)據(jù)庫(kù)表(tb_facelib)里新增一行,每一行有一個(gè)編號(hào)對(duì)應(yīng)人臉庫(kù)里面的具體的一個(gè)人,這樣對(duì)人臉庫(kù)進(jìn)行管理的時(shí)候也比較方便。在訓(xùn)練的時(shí)候會(huì)根據(jù)數(shù)據(jù)庫(kù)tb_facelib表的行數(shù)對(duì)人臉庫(kù)進(jìn)行分割,每200人為一組分為一個(gè)小的人臉庫(kù)進(jìn)行訓(xùn)練,剩余的不足200人且大于100人的按200人的方式處理,小于100人的放入上一個(gè)人臉庫(kù)一起訓(xùn)練,比如總共540人需訓(xùn)練,則每個(gè)庫(kù)人數(shù)分為200人、200人、140人;若總共440人,則每個(gè)庫(kù)分為200人、240人。每次訓(xùn)練完的時(shí)候會(huì)在數(shù)據(jù)庫(kù)表tb_traininfo里更新信息,表的具體信息及其字段描述如表1所示。
當(dāng)有新人加入人臉庫(kù)需要訓(xùn)練的時(shí)候,只需要從tb_traininfo表里取出最后一次訓(xùn)練文件的相關(guān)信息,判斷Train_num的數(shù)目是否小于300,是則直接將此訓(xùn)練文件下所有人臉加上新增的人臉一起訓(xùn)練形成新的訓(xùn)練文件,若大于300,則將此訓(xùn)練文件下面前200個(gè)人作為一個(gè)人臉庫(kù),剩下的作為另一個(gè)人臉庫(kù),分別訓(xùn)練,更新tb_traininfo表信息。這樣就不必將整個(gè)人臉庫(kù)重新進(jìn)行訓(xùn)練,節(jié)約了大量時(shí)間。
當(dāng)tb_traininfo表中Train_delnum達(dá)到一定值時(shí),即被刪除的人達(dá)到一定值時(shí),則重新對(duì)人臉庫(kù)進(jìn)行分割訓(xùn)練。
識(shí)別的時(shí)候從tb_traininfo表中逐個(gè)取出訓(xùn)練文件名字,找到指定的訓(xùn)練文件拿去識(shí)別,直到得出識(shí)別結(jié)果,若識(shí)別過(guò)程中已識(shí)別出是人臉庫(kù)里面的人則停止識(shí)別,這樣大大節(jié)約了識(shí)別時(shí)間。
3系統(tǒng)運(yùn)行結(jié)果
本文將識(shí)別程序?qū)懗蒞indows服務(wù)程序,計(jì)算機(jī)開機(jī)后會(huì)直接啟動(dòng)運(yùn)行,并自動(dòng)將相關(guān)信息存入數(shù)據(jù)庫(kù)。識(shí)別程序采用經(jīng)典的人臉識(shí)別算法FisherFace,并根據(jù)實(shí)際情況對(duì)此算法進(jìn)行了一些改進(jìn),其他的人臉識(shí)別算法也可運(yùn)用在本系統(tǒng)中,本文并沒(méi)有對(duì)相關(guān)算法進(jìn)行闡述,只是對(duì)搭建人臉識(shí)別系統(tǒng)進(jìn)行了相關(guān)討論,并且使用微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言C#設(shè)計(jì)了系統(tǒng)的操作界面[6]。系統(tǒng)運(yùn)行后的主界面如圖6所示。
4結(jié)論
本文從硬件及軟件兩個(gè)方面闡述了動(dòng)態(tài)人臉識(shí)別系統(tǒng)的構(gòu)建,分析了硬件系統(tǒng)中相關(guān)設(shè)備的選型及其相關(guān)參數(shù)的計(jì)算,設(shè)計(jì)了硬件系統(tǒng)結(jié)構(gòu),實(shí)現(xiàn)了識(shí)別系統(tǒng)中各個(gè)功能模塊,并提出了一種解決人臉庫(kù)不斷擴(kuò)大問(wèn)題的實(shí)際可行方法。將本系統(tǒng)在實(shí)際環(huán)境中進(jìn)行了測(cè)試,結(jié)果表明系統(tǒng)能夠穩(wěn)定可靠地運(yùn)行,且界面友好、操作方便。但是由于跟蹤算法、人臉識(shí)別算法存在的一些不足,如遮擋、姿態(tài)等都會(huì)對(duì)跟蹤以及識(shí)別結(jié)果產(chǎn)生影響,因此,研究高準(zhǔn)確率和高效率的人臉識(shí)別算法至關(guān)重要,這也是接下來(lái)需要改進(jìn)的核心內(nèi)容。
參考文獻(xiàn)
[1] 劉翼光. 動(dòng)態(tài)人臉識(shí)別系統(tǒng)[D].北京:中國(guó)科學(xué)院,2000.
?。?] 高翔,張薇娟. 人臉識(shí)別系統(tǒng)的構(gòu)建[J]. 瓊州學(xué)院學(xué)報(bào),2010,17(5):2124.
?。?] 何榮. 基于OpenCV的人臉識(shí)別系統(tǒng)設(shè)計(jì)[D].廣州:華南理工大學(xué),2013.
?。?] 李哲,王述聰. 基于VC++的人臉識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)探究[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2012(12):197198.
[5] 朱興統(tǒng),習(xí)洋洋. 基于C++和OpenCV的人臉識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化與儀器儀表,2014(8):127128,131.
[6] 齊立波,黃俊偉. C#入門經(jīng)典(第六版)[M].北京:清華大學(xué)出版社,2014.