范淇元,覃羨烘,朱培杰
1.華南理工大學(xué)廣州學(xué)院機(jī)械工程學(xué)院,廣東廣州510800 2.廣東理工學(xué)院工業(yè)自動(dòng)化系,廣東肇慶526100
通過研究分析基于EmguCV的人臉識(shí)別技術(shù),將人臉識(shí)別技術(shù)應(yīng)用于智能服務(wù)機(jī)器人,利用Visual Studio2015平臺(tái)開發(fā)出一套智能服務(wù)機(jī)器人的人臉識(shí)別系統(tǒng),修改程序簡(jiǎn)化了代碼,并添加語音互動(dòng)系統(tǒng),提高了人與機(jī)器人之間的互動(dòng)深度和人機(jī)交互能力,解決了機(jī)器人根據(jù)不同人群和對(duì)象進(jìn)行人臉識(shí)別,不能對(duì)對(duì)應(yīng)的服務(wù)項(xiàng)目智能選擇的難題,實(shí)現(xiàn)服務(wù)型機(jī)器人的全面智能化轉(zhuǎn)型。
整套智能服務(wù)機(jī)器人人臉識(shí)別系統(tǒng)的設(shè)計(jì)是在服務(wù)型機(jī)器人的基本運(yùn)動(dòng)系統(tǒng)中增加云端處理、語音交互、視覺模塊來實(shí)現(xiàn)人臉檢測(cè)與識(shí)別,并對(duì)人物做出相對(duì)應(yīng)的服務(wù)類型。人臉識(shí)別系統(tǒng)組成如圖1所示。
圖1 系統(tǒng)組成
智能服務(wù)機(jī)器人在視覺模塊可視區(qū)域檢測(cè)到人物存在時(shí),自動(dòng)進(jìn)行人臉檢測(cè)。對(duì)于未記錄過的人臉信息,可通過語音模塊進(jìn)行圖像信息錄入,并將信息自動(dòng)保存到云端服務(wù)器。在之后檢測(cè)到相同人臉信息時(shí),機(jī)器人將針對(duì)人物的信息與身份自動(dòng)匹配并進(jìn)行相關(guān)類型服務(wù)。
該設(shè)計(jì)對(duì)智能服務(wù)機(jī)器人的攝像頭即圖像采集硬件并沒有特定需求,本系統(tǒng)可以應(yīng)用在任意一種具備攝像頭并具有WinForm平臺(tái)的設(shè)備中。人臉識(shí)別攝像頭模塊是智能型圖像采集模塊,該模塊具有很強(qiáng)的光線處理能力,能夠在強(qiáng)光、逆光、弱光環(huán)境中拍攝清晰的圖像,并且搭載不同的人臉識(shí)別算法[1?2],實(shí)現(xiàn)不同光線條件下的精準(zhǔn)人臉識(shí)別和圖像采集,可與第三方軟件及應(yīng)用管理系統(tǒng)緊密結(jié)合使用,廣泛嵌入VTM、ATM、自動(dòng)發(fā)卡機(jī)等自助設(shè)備,實(shí)現(xiàn)人臉身份認(rèn)證。本設(shè)計(jì)并沒有采用類似的高級(jí)硬件,而是致力于調(diào)用普通的攝像頭,通過EmguCV直接實(shí)現(xiàn)后臺(tái)的人臉檢測(cè)與識(shí)別。
人臉識(shí)別技術(shù)是一種通過對(duì)人體臉部的特征信息進(jìn)行對(duì)比識(shí)別的技術(shù),即通過攝像設(shè)備采集視頻流或人臉圖像,自動(dòng)檢測(cè)和跟蹤,進(jìn)而對(duì)檢測(cè)圖像進(jìn)行后臺(tái)處理與比對(duì)識(shí)別的一系列相關(guān)技術(shù)。人臉識(shí)別在實(shí)際工作中會(huì)受到光照、臉部表情和姿勢(shì)等因素影響,因此在交互過程中對(duì)圖像的識(shí)別算法進(jìn)行多條件優(yōu)化,能大大提高系統(tǒng)的交互性能[3?5]?;贓mguCV的人臉識(shí)別系統(tǒng)主要有以下幾個(gè)部分。
1.2.1 圖像采集和處理
圖像處理技術(shù)包括圖像壓縮,增強(qiáng)和復(fù)原,匹配、敘述和識(shí)別3個(gè)部分。系統(tǒng)有康耐視系統(tǒng)、圖智能系統(tǒng)等,是目前正在逐漸興起的技術(shù),包括預(yù)處理、分割、特征抽取和識(shí)別4個(gè)模塊,針對(duì)要完成某一特定的任務(wù),使用特定的圖像處理方法達(dá)到目標(biāo)效果。數(shù)字圖像處理內(nèi)容如圖2所示。
圖2 數(shù)字圖像處理原理
由于檢驗(yàn)的光線、角度等因素對(duì)人臉檢測(cè)和人臉識(shí)別的影響,需要凸顯和細(xì)化圖像的細(xì)節(jié),降低圖像的噪點(diǎn),所以在整個(gè)識(shí)別過程當(dāng)中,通常采用圖形去噪、灰度變換和均衡化處理等方式來實(shí)現(xiàn)。其中,圖形去噪采用簡(jiǎn)易的低通濾波,灰度變換指通過灰度變換將原直方圖兩端的灰度值分別拉向最小值(0)和最大值(255),使圖像占有的灰度等級(jí)充滿(0~255)的整個(gè)區(qū)域,從而增加圖像層次,達(dá)到圖像細(xì)節(jié)增強(qiáng)的目的。均衡化處理是指用于增強(qiáng)局部的對(duì)比度而不影響整體的對(duì)比度,直方圖均衡化通過有效地?cái)U(kuò)展常用的亮度來實(shí)現(xiàn)這種功能?;叶茸儞Q代碼如下:
Image
gray_image.SmoothBilatral(3,3,3)://采用雙邊濾波降噪
gray_image._EqualizeHist()://采用直方圖均衡化
1.2.2 人臉檢測(cè)
人臉檢測(cè)主要采用Adaboost的方法。Adaboost是Boosting分類融合算法的一種,它通過對(duì)一些弱的分類器的組合來形成一個(gè)強(qiáng)的分類器,從而提高分類算法性能[6?9]。本設(shè)計(jì)采用Haar分類器,建立Boost篩選式級(jí)聯(lián)分類器,而且是一個(gè)監(jiān)督分類器。先對(duì)圖像進(jìn)行直方圖均衡化到同樣大小,然后標(biāo)記是否包含被檢測(cè)物體,人臉通過使用樣本的Haar特征對(duì)其進(jìn)行分類器訓(xùn)練得到級(jí)聯(lián)Haar分類器。通過單元測(cè)試對(duì)XML文件進(jìn)行識(shí)別判斷,此方法的實(shí)現(xiàn)準(zhǔn)確率很高,能夠完成識(shí)別功能。人臉檢測(cè)XML文件生成代碼如下所示:
String xml_path=Application.StartupPath+“/haarcascade_frontalface_alt.xml”://人 臉 檢 測(cè)XML文件
CascadeClassifier Face=new CascadeClassifier(faceFileName).
使用EmguCV中的CascadeClassifier類Haar分類器,實(shí)現(xiàn)人臉檢測(cè)功能,檢測(cè)實(shí)現(xiàn)功能準(zhǔn)確率約為98%,對(duì)于每一張采集的人臉圖片素材都進(jìn)行了訓(xùn)練,識(shí)別數(shù)據(jù)與準(zhǔn)確率很高,能夠?qū)崿F(xiàn)識(shí)別功能,具體的工作流程如圖3所示。
圖3 Haar分類器工作流程
1.2.3 人臉識(shí)別
人臉識(shí)別采用基于線性子空間方法,主要方法有以主成分分析(pricipal component analysis,PCA)和線性判別式分析(linear discriminant analysis,LDA)以及局部二值模式(local binary patterns,LBP)算法。
設(shè)計(jì)采用LBP算法。LBP是指在像素3×3鄰域內(nèi)的,以鄰域中心像素為閾值,將相鄰的8個(gè)像素的灰度值與其進(jìn)行比較,如果周圍像素值大于中心像素值,則該像素點(diǎn)的位置被標(biāo)記為1,否則為0。這樣,3×3鄰域內(nèi)的8個(gè)點(diǎn)經(jīng)比較可產(chǎn)生8位二進(jìn)制數(shù)(通常轉(zhuǎn)換為十進(jìn)制數(shù)即LBP碼,共256種),即得到該鄰域中心像素點(diǎn)的LBP值,并用這個(gè)值來反映該區(qū)域的紋理信息,如圖4所示。
圖4 LBP特征提取
用公式來定義:
每個(gè)像素都會(huì)根據(jù)鄰域信息得到一個(gè)LBP值,以圖像形式顯示LBP對(duì)光照有較強(qiáng)的魯棒性,如圖5所示。
圖5 光照下LBP算法的魯棒性測(cè)試
在LBP的應(yīng)用中,如紋理分析、人臉分析等,LBP圖譜一般都不作為特征向量用于分類識(shí)別,而是采用LBP特征譜的統(tǒng)計(jì)直方圖作為特征向量用于分類識(shí)別。
1.2.4 人臉訓(xùn)練及人臉特征提取
通過對(duì)每張人臉圖像進(jìn)行編碼并且將人臉的相關(guān)信息和編號(hào)保存起來,模仿機(jī)器學(xué)習(xí)過程。當(dāng)加載訓(xùn)練模板之后,識(shí)別器會(huì)主動(dòng)將人臉信息和人臉圖像通過編號(hào)逐一關(guān)聯(lián)。檢測(cè)到的人臉通過識(shí)別算法,對(duì)訓(xùn)練過的人臉圖像中的各個(gè)特征點(diǎn)進(jìn)行評(píng)估后,從訓(xùn)練庫中選取匹配率最高的人臉圖像并輸出該圖像對(duì)應(yīng)的人臉信息,且此匹配率均達(dá)到95%以上。
1)保存人臉圖像
在.Net4.0框架下,微軟提供了一個(gè)System.Drawing.dll的程序集文件,通過使用當(dāng)中的Image類 的Save(Stream stream,ImageFormat format) 方法,輸入保存路徑以及保存的圖片格式,便可實(shí)現(xiàn)圖像的保存。其中,format為保存的格式。一般可以選擇JPEG、ICON、GIF、PNG、TIFF、WMF以及BMP圖標(biāo)圖像。在這里我們選擇ImageFormat.JPEG,將BMP圖像以JPEG的圖像格式保存(見圖6)。
圖6 保存后的JPEG人臉圖像
2)生成XML文件
首先使用System.IO命名空間下的FileStream類的OpenWrite方法,創(chuàng)建IO數(shù)據(jù)流,然后再對(duì)XML文件進(jìn)行相關(guān)的操作。生成XML文件需要用到XmlWriter的WriteStartDocument、WriteStartElement、WriteElementString、WriteEndElement以及WriteEnd-Document這5個(gè)方法。至于對(duì)XML文件的修改操作則需要使用XmlDocument類中的Save方法以及XmlElement類中的CreateElement方法創(chuàng)建各個(gè)根元素和使用AppendChild方法添加根節(jié)點(diǎn)。操作完成后必須使用Close方法關(guān)閉IO數(shù)據(jù)流。訓(xùn)練后XML文件內(nèi)容如下:
-
基于EmguCV的人臉識(shí)別系統(tǒng)如圖7所示,檢測(cè)與錄入狀態(tài)如圖8、9所示。
圖7 人臉識(shí)別檢測(cè)狀態(tài)
圖8 人臉識(shí)別錄入狀態(tài)
圖9 系統(tǒng)實(shí)測(cè)人臉JPEG圖像
EmguCV是.NET平臺(tái)下對(duì)OpenCV(Open Source Computer Vision Library)圖像處理庫的封裝,也就是C#版OpenCV視覺開發(fā)包。除此之外,OpenCV還支持在C#、VB、VC++等編譯語言下使用開發(fā)[10?12]。本設(shè)計(jì)主要選用C#作為編寫程序語言,調(diào)用EmguCV里的函數(shù)來完成對(duì)數(shù)字圖像的處理以及實(shí)現(xiàn)人臉識(shí)別。
項(xiàng)目調(diào)用EnguCV庫函數(shù)作為主要檢測(cè)函數(shù),運(yùn)行軟件,程序自動(dòng)進(jìn)入人臉檢測(cè)環(huán)節(jié),對(duì)無信息的人臉執(zhí)行提示功能,僅需添加一次信息,軟件會(huì)自動(dòng)多次添加人臉數(shù)據(jù),再次檢測(cè)訓(xùn)練時(shí),檢測(cè)出人臉信息,調(diào)用合成語音函數(shù)發(fā)出語音歡迎功能,程序支持多人臉同時(shí)檢測(cè),并有語音讀出信息功能。函數(shù)訓(xùn)練功能代碼如下所示:
if(trainingImages.ToArray().Length!=0)
{
//TermCriteria for face recognition with numbers of trained images like max Iteration MCvTermCriteria termCrit=new MCvTermCriteria(ContTrain,0.001);
//Eigen face recognizer EigenObjectRecognizer recognizer=new EigenObjectRecognizer(
trainingImages.ToArray(),
labels.ToArray(),
5000,
Ref termCrit);
}
Name=recognizer.Recognize(result);
foundPeople[name]=f.rect;
項(xiàng)目調(diào)用SpeechSynthesizer類,提供對(duì)已安裝的語音合成引擎的功能的訪問,實(shí)現(xiàn)語音合成播報(bào)功能。創(chuàng)建新的SpeechSynthesizer對(duì)象時(shí),將使用默認(rèn)系統(tǒng)語音。配置SpeechSynthesizer時(shí)使用其中安裝的語音合成(文本到語音),使用Select-Voice或SelectVoiceByHints方法。語音獲取安裝,使用GetInstalledVoices和VoiceInfo類方法的信息[13?15]。
每次釋放對(duì)SpeechSynthesizer的最后一個(gè)引用前,均應(yīng)調(diào)用Dispose。否則,在垃圾回收器調(diào)用SpeechSynthesizer對(duì)象的Finalize方法之前,該對(duì)象所使用的資源將不會(huì)被釋放,項(xiàng)目語音代碼如下所示:
語音播報(bào)
Private void SpeedSound(){
if(string.IsNu110rEmpty(label4.Text))
{
Return;
}
SpeechSynthesizer sp=new SpeechSynthesizer();
if(names==)
{
Thread.Sleep(2500);
if(foundPeople.Count==1)
sp.SpeakAsync(label4.Text+“你好”);
if(foundPeople.Count>1)
sp.SpeakAsync(label4.Text+“你們好”);
}
names==null;
th.Abort();
本設(shè)計(jì)基于原有WinFrom平臺(tái),對(duì)原有的服務(wù)機(jī)器人(圖10)的內(nèi)置系統(tǒng)進(jìn)行了改造優(yōu)化。服務(wù)機(jī)器人的原有系統(tǒng)是基于C#語言編寫,即與EmguCV的使用語言相同,因此將本人臉識(shí)別系統(tǒng)直接并入開機(jī)程序中,做到機(jī)器人開機(jī)自動(dòng)啟動(dòng)識(shí)別程序,服務(wù)機(jī)器人在與不同用戶交流時(shí),實(shí)時(shí)智能識(shí)別人物對(duì)象身份,自動(dòng)做出交流互動(dòng)的主題,并針對(duì)不同用戶介紹不同的產(chǎn)品,人機(jī)對(duì)話準(zhǔn)確率達(dá)到了98%,大大提高了智能化水平。
圖10 智能服務(wù)機(jī)器人
程序自動(dòng)調(diào)用遷入設(shè)備的攝像裝置,進(jìn)行圖像處理、灰度轉(zhuǎn)換、降噪、均衡化處理等。通過對(duì)LBP人臉識(shí)別算法的反復(fù)實(shí)驗(yàn),發(fā)現(xiàn)光照越不均勻,識(shí)別器的識(shí)別速度越有所下降,但仍具有較高的穩(wěn)定性和識(shí)別率,最終實(shí)現(xiàn)多人實(shí)時(shí)的人臉識(shí)別功能,并在智能服務(wù)機(jī)器人中應(yīng)用。
對(duì)于傳統(tǒng)機(jī)器人與人臉識(shí)別系統(tǒng)的整合設(shè)計(jì),需要多方面考慮。人臉識(shí)別對(duì)用戶圖像的精準(zhǔn)依賴性強(qiáng),需要機(jī)器本身自帶較好的攝影攝像頭,且關(guān)于人臉識(shí)別的計(jì)算與訓(xùn)練并不會(huì)與所有計(jì)算流程或傳感反饋同步執(zhí)行,而是以異步形式運(yùn)行,如圖11所示。機(jī)器人對(duì)于人臉識(shí)別訓(xùn)練后,就會(huì)對(duì)人物開始服務(wù)向?qū)?,并針?duì)性做出對(duì)應(yīng)的業(yè)務(wù)場(chǎng)景服務(wù)。類似歡迎動(dòng)作,在檢測(cè)到人物時(shí)會(huì)有對(duì)應(yīng)的歡迎動(dòng)作并播報(bào)語音功能,這一系列都是異步處理。且為避免機(jī)器人對(duì)人的傷害,機(jī)器本身都做了傳感檢測(cè),并將檢測(cè)級(jí)別設(shè)為高級(jí),當(dāng)檢測(cè)到有人或物品靠近并越過設(shè)定的安全距離時(shí),將主動(dòng)關(guān)閉其他正在執(zhí)行的線程作業(yè)。
圖11 人臉識(shí)別系統(tǒng)
系統(tǒng)進(jìn)行訓(xùn)練測(cè)試后所得的數(shù)據(jù)(系統(tǒng)識(shí)別率),與常規(guī)人臉識(shí)別算法所測(cè)試的相關(guān)數(shù)據(jù)進(jìn)行比較,如表1所示。由表中數(shù)據(jù)可得LBP算法對(duì)比其他常規(guī)算法而言穩(wěn)定性較強(qiáng),且對(duì)環(huán)境的變化與多人(本實(shí)驗(yàn)的測(cè)試人數(shù)為50人)人臉識(shí)別的情況下均能做到很好的支持。
表1 LBP算法與常規(guī)算法的系統(tǒng)識(shí)別率 %
在基于EmguCV的人臉識(shí)別方法,包含人臉檢測(cè)與人臉識(shí)別進(jìn)行了分析研究,通過對(duì)LBP人臉識(shí)別算法的反復(fù)實(shí)驗(yàn),修改編程設(shè)計(jì),同時(shí)運(yùn)用Haar特征對(duì)圖像進(jìn)行人臉檢測(cè)處理,設(shè)計(jì)出基于EmguCV的智能服務(wù)機(jī)器人人臉識(shí)別系統(tǒng)。在本研究中,得出以下結(jié)論:
1)對(duì)圖像進(jìn)行灰度轉(zhuǎn)換、降噪和圖像的均衡化處理,提高了人臉識(shí)別能力;
2)簡(jiǎn)化代碼,提高了容錯(cuò)率;添加語音互動(dòng)系統(tǒng),提高人機(jī)交互能力;
3)對(duì)機(jī)器設(shè)置高級(jí)別傳感檢測(cè),保證了安全距離。
機(jī)器人能夠直接通過設(shè)備調(diào)用進(jìn)行人臉檢測(cè),能夠在多個(gè)環(huán)境下應(yīng)用,對(duì)生物特征鑒定技術(shù)有一定幫助,對(duì)大量同類問題的解決有著相互啟發(fā)和相互推動(dòng)的現(xiàn)實(shí)意義。