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