孫 康 王 琪 岳琪琪 金琦淳
( 1 江蘇科技大學(xué)張家港校區(qū)機(jī)電與動力工程學(xué)院,江蘇張家港, 215600;2 江蘇科技大學(xué)蘇州理工學(xué)院機(jī)電與動力 工程學(xué)院,江蘇張家港,215600)
隨著機(jī)器人技術(shù)日臻成熟,應(yīng)用領(lǐng)域不斷擴(kuò)展, 迎賓機(jī)器人開始出現(xiàn)在人們的視野中[1]。迎賓機(jī)器人的主要功能是代替人類作為場館的導(dǎo)游,這樣不僅可以節(jié)省人力成本,還能吸引參觀者的注意力并增強和參觀者之間互動,促進(jìn)參觀者深入了解當(dāng)前參訪目標(biāo)。人臉識別作為迎賓機(jī)器人的重要功能,其設(shè)計至關(guān)重要。
人臉識別是神經(jīng)解剖學(xué)、計算機(jī)視覺、圖像處理、模式識別、機(jī)器學(xué)習(xí)等多學(xué)科交叉的且以特征鑒別為目的的研究領(lǐng)域[2]。人臉識別作為人體特征識別的一種,相比其他特征識別,具有自然性和隱蔽性的優(yōu)點。在樣本獲取方面,人臉識別取樣可以不接觸目標(biāo),取樣更方便,因此其研究的實際意義重大,也具有更加廣泛的應(yīng)用領(lǐng)域。
人臉識別研究最早始于20 世紀(jì)50 年代,在80 年代后期引入了神經(jīng)生理學(xué)、腦神經(jīng)學(xué)、視覺知識等,人臉識別的研究又重新活躍起來。國外對于人臉識別的研究較早,其中包括麻省理工學(xué)院、康奈爾大學(xué)等著名大學(xué),國內(nèi)也有許多科研機(jī)構(gòu)、院校從事這方面研究,如清華大學(xué)、浙江大學(xué)等,其中,由清華大學(xué)研制的大型人臉識別系統(tǒng)應(yīng)用于2008 年北京奧運會[3],并取得良好效果。
人臉識別在圖像采集和樣本比對等過程中會受到很多因素的干擾。其中,人臉圖像的識別受圖像質(zhì)量、尺寸、背景復(fù)雜程度、人臉表情多樣性、外界光照強度、人臉旋轉(zhuǎn)、姿勢變換等因素的影響。因此實現(xiàn)人臉圖像識別的挑戰(zhàn)性很大。
本文主要針對迎賓機(jī)器人對參觀游客的面部識別進(jìn)行研究。由于人臉識別的干擾因素太多,且圖像表示與特征提取較為復(fù)雜,系統(tǒng)選擇在檢測到人臉后針對特定區(qū)域作識別處理,因此不支持單一圖像中的多人臉檢測與識別。
人臉檢測是計算機(jī)視覺領(lǐng)域研究的熱點問題[4]。本文人臉檢測主要是利用Haar 級聯(lián)特征檢測器對圖像進(jìn)行檢測,該檢測器是用來確定一個對象是否存在于圖像中的一系列對比檢查,其檢測環(huán)節(jié)主要包括:基于Haar-like 特征值的檢測[5]、使用積分圖加快檢查速度、采用Adaboost算法訓(xùn)練建立有效識別人臉和非人臉的強分類器、級聯(lián)各分類器加強篩選以提高準(zhǔn)確率等,如圖1 所示。
圖1 人臉檢測環(huán)節(jié)
本文采用的正面人臉探測器,共有25 個檢查階段,每個階段都包含數(shù)百個分塊的檢查,Haar 級聯(lián)的運行速度快,因為只有在上一個階段通過后才會進(jìn)行下一階段的評估。探測器采用積分圖的數(shù)據(jù)結(jié)構(gòu),以便在恒定時間內(nèi)快速執(zhí)行每個區(qū)域的對比檢查??紤]到基于局部二值模式(LBP)的人臉識別算法使用的圖像格式,采集的圖像格式設(shè)置為灰度圖[6]。
人臉識別系統(tǒng)主要由4 個模塊組成:圖像預(yù)處理模塊、人臉檢測模塊、圖像表示與特征提取模塊、人臉識別模塊,如圖2 所示。
圖2 人臉識別系統(tǒng)組成
自芬蘭奧盧大學(xué)機(jī)器視覺組提出基于LBP 的人臉識別方法后,該方法目前已成為紋理分類和人臉識別領(lǐng)域特征提取的主要方法之一[7],其具有高效、魯棒性強、允許快速提取特征等優(yōu)點。
進(jìn)行人臉識別前需要創(chuàng)建人臉識別庫。由于人臉識別算法運行時占用大量內(nèi)存,故對人臉庫中圖片的大小和格式要求較高。OpenMV 可編程攝像頭模塊在獲取SD 卡存儲的識別庫中的圖像時,需將其儲存在MicroPython 堆中而不是幀緩沖區(qū),因而圖像副本大小需要嚴(yán)格控制。結(jié)合待識別人在圖像中的成像大小和LBP 算子的特征提取要求,本文選擇識別庫中圖像的分辨率為92×112 像素,圖像格式為PGM。
人臉檢測完成后,截取圖像中的人臉區(qū)域作為待識別圖像,與識別庫中各組圖像比對計算相似度距離,最后根據(jù)各組匹配距離判斷人臉身份。
完成人臉識別后,系統(tǒng)根據(jù)面部所處圖像的位置控制舵機(jī)旋轉(zhuǎn),使得攝像頭對準(zhǔn)移動的人臉,以增強參觀者體驗并提高趣味性。舵機(jī)的驅(qū)動控制采用PID 算法,該算法通過誤差信號控制被控量,PID 控制器是比例、積分和微分3 個環(huán)節(jié)的加和[8],如圖3 所示。
圖3 PID 控制器結(jié)構(gòu)原理
本文使用的PID 控制算法編寫設(shè)計為獨立模塊存儲在SD 卡中,使用時可直接導(dǎo)入,增強了系統(tǒng)的可移植性和可讀性,簡化了主函數(shù)的設(shè)計。當(dāng)舵機(jī)的初始化完成后,由人臉檢測算法獲取到人臉位置,根據(jù)其偏離圖像中心線的程度,采用PID 算法計算獲取輸出值,即控制舵機(jī)偏轉(zhuǎn)的PWM。常規(guī)的舵機(jī)在固定中值基礎(chǔ)上根據(jù)偏差偏轉(zhuǎn),本文設(shè)計的舵機(jī)前一次偏轉(zhuǎn)的大小直接影響當(dāng)前偏轉(zhuǎn)的大小,故舵機(jī)的基礎(chǔ)值當(dāng)以每次偏轉(zhuǎn)后的值為準(zhǔn)。
人臉識別系統(tǒng)硬件主要包括OpenMV3 CamM7、S-D5舵機(jī)、1.8 英寸TFT 液晶顯示屏、Micro SD 卡、電源和穩(wěn)壓模塊等。其中,OpenMV3 CamM7 包括OV7725 攝像頭模塊、2 個紅外LED、1 個彩色LED、Micro SD 卡卡座、高速USB 接口和9 個外接I/O 口等。
OpenMV3 CamM7 使用的單片機(jī)型號為STM32F765VIT6,STM32F7 系列是ST 推出的基于ARM Cortex M7 內(nèi)核的處理器,性能遠(yuǎn)優(yōu)于STM32F4 系列,其中,STM32F76x系列擁有更先進(jìn)的內(nèi)核、更豐富的外設(shè)、更高的性能。
OV7725 圖像傳感器是一款封裝尺寸較小的低電壓的CMOS 設(shè)備,可以提供單片VGA 攝像頭和影像處理器的所有功能。該傳感器采用特制的傳感器技術(shù),可降低或清除如固定圖案噪聲、浮散等光學(xué)及其他方面的瑕疵,以提高圖像質(zhì)量,獲取清晰穩(wěn)定的圖像。
系統(tǒng)電路連接采用Fritzing 開源電路設(shè)計軟件繪制,如圖4 所示。其中TFT 液晶顯示屏以SPI 串口的方式與單片機(jī)連接。
圖4 人臉識別系統(tǒng)接線示意圖
系統(tǒng)的PID 算法模塊、主函數(shù)、人臉識別庫等均存儲在Micro SD 卡中,系統(tǒng)上電后,將自動加載SD 卡,讀取存儲數(shù)據(jù)后自動運行。
識別系統(tǒng)功能模塊通過驅(qū)動舵機(jī)帶動攝像頭對準(zhǔn)移動的人臉,其實現(xiàn)主要基于PID 算法??紤]到主函數(shù)的簡潔性和程序的可移植性,本系統(tǒng)所用的PID 算法編寫為一個獨立于系統(tǒng)的模塊。
PID 控制器分為比例、積分、微分3 個環(huán)節(jié),模擬PID 表達(dá)式為:
其中, 為輸出信號, 為偏差信號, 為比例系數(shù), 為積分時間常數(shù), 為微分時間常數(shù)。
在嵌入式開發(fā)應(yīng)用中,需將模擬量轉(zhuǎn)化為數(shù)字量處理,將式(1)變換可得位置式數(shù)字PID 表達(dá)式:
其中, 為采樣周期。
根據(jù)式(2)可編寫PID 算法模塊,其設(shè)計流程如圖5 所示。
圖5 PID 算法設(shè)計流程
系統(tǒng)主函數(shù)傳遞的參數(shù)為當(dāng)前偏差值與設(shè)定值,其中設(shè)定值為常數(shù),即圖像橫向分辨率的一半;隨后函數(shù)讀取當(dāng)前時間并計算偏差的差值,即和調(diào)用時間差,即 ,根據(jù) 的大小判斷是否對微分控制項和積分控制項處理;最后根據(jù)式(2)計算輸出參數(shù)并返回。
圖6 主函數(shù)程序流程圖
人臉識別系統(tǒng)主函數(shù)的設(shè)計主要包括模塊導(dǎo)入及初始化、全局變量定義與初始化、圖像采集與顯示、人臉檢測與標(biāo)記、人臉識別與顯示、舵機(jī)轉(zhuǎn)動對準(zhǔn)人臉等。主函數(shù)程序流程如圖6 所示。
系統(tǒng)啟動后首先導(dǎo)入各個功能模塊,然后對LED、攝像頭模塊、LCD、UART(通用異步收發(fā)傳輸器,即串口)、舵機(jī)、時鐘、PID 參數(shù)等進(jìn)行初始化,并定義全局變量。
其中,攝像頭模塊的設(shè)置至關(guān)重要。人臉追蹤圖像的最佳設(shè)置是大小為HQVGA、格式為灰度圖,其中,HQVGA 分辨率為240×160 像素。對于1.8 寸的LCD,采集的圖像超過其128×160 像素的顯示范圍,LCD 無法完全顯示,因此,設(shè)置LCD 感興趣區(qū)即顯示區(qū)域為采集圖像的中間區(qū)域;設(shè)置舵機(jī)相關(guān)參數(shù),包括舵機(jī)頻率、中值、最大值以及最小值,最值的設(shè)置需要考慮到安裝時的視覺死區(qū)、防止轉(zhuǎn)角過大損壞舵機(jī)等問題。
人臉檢測通過Haar 級聯(lián)特征檢測器來實現(xiàn),首先利用構(gòu)造函數(shù)載入Haar 級聯(lián)特征檢測器,檢查過程分多個階段,后一階段的運行以上一個階段的完成為前提。對比檢查并不復(fù)雜,類似于檢查圖像的中心垂直是否比邊緣更輕微的過程等。前期階段進(jìn)行大范圍的檢查,后期進(jìn)行更多、更小區(qū)域的檢查。本文采用正面人臉模型,構(gòu)造函數(shù)將正臉Haar 級聯(lián)導(dǎo)入到內(nèi)存中,對比階數(shù)設(shè)置為25,降低對比階數(shù)值可加快匹配速度,但會降低檢測結(jié)果的準(zhǔn)確率;圖像采集完成后利用特征搜索函數(shù)查找人臉,函數(shù)中的匹配閾值越大,則匹配速度越快,同時錯誤率也會上升,函數(shù)中的尺度因子可以縮放被匹配特征的大小,考慮到人臉識別距離與內(nèi)存限制,其值可以適當(dāng)減??;找到目標(biāo)特征后,利用矩形繪制函數(shù)框選出人臉特征。
本文仿照ORL(Olivetti Research Laboratory)人臉庫創(chuàng)建的識別庫包含20 個不同主體(個人)的10 幅不同的圖像,其中,面部表情(眼睛睜/閉、微笑/不笑),面部細(xì)節(jié)(戴眼鏡/不戴眼鏡)和比例(差異最高可達(dá)10%)都不相同;所有圖像都在同一個白色背景下拍攝,主體處于直立、正面的位置,對某些傾斜和旋轉(zhuǎn)的可包容角度可達(dá)20°左右,如圖7 所示。
圖7 識別庫第一組人臉圖像
人臉識別主要基于LBP 算子來實現(xiàn)。首先,將人臉檢測環(huán)節(jié)所框選的人臉區(qū)域保存為待識別圖像;然后利用LBP 特征值提取函數(shù)計算待識別圖像的特征值,并提取識別庫中每組圖像的特征值;接著利用距離度量函數(shù)計算待識別圖像與庫中每組圖像的符合程度(對于LBP 描述符,函數(shù)返回的是一個體現(xiàn)2 個描述符之間區(qū)別的整數(shù),該距離測度是對相似度的一個度量,測度值越接近0,LBP 特征點匹配得就越好);對識別庫中的每組人臉圖像測度完成后,計算各組的平均距離,根據(jù)平均距離,完成人臉識別與標(biāo)定。具體標(biāo)定方法為:查找平均測度值最小的匹配組,然后計算剩余各組平均測度值的平均值,根據(jù)兩者差值大小,判斷是否需要查找結(jié)果或直接丟棄。當(dāng)差值超過閾值時,將測度值最小的匹配組對應(yīng)的身份信息使用串口發(fā)送給上位機(jī),并在液晶屏上輸出標(biāo)記結(jié)果,完成本次識別。圖8 為人臉識別功能的程序流程圖。
系統(tǒng)的隨動功能主要基于位置式PID 算法來實現(xiàn)。人臉檢測完成后會框選出人臉區(qū)域,根據(jù)框選的感興趣區(qū),獲取目標(biāo)值,即人臉中心在圖像中的橫向位置。為減小誤差,取近10 次的加權(quán)平均值作為有效值。由于系統(tǒng)啟動時目標(biāo)值數(shù)組未更新造成有效值過?。繕?biāo)值數(shù)組賦初值為0),從而引起舵機(jī)偏轉(zhuǎn)過大,故設(shè)置當(dāng)數(shù)組更新6 次后開始輸出PWM。由于取加權(quán)平均值可近似看作積分處理,且舵機(jī)的轉(zhuǎn)動實時性較高,故PID 算法中不再添加積分項。對輸出值限幅后利用PWM 輸出函數(shù)完成對舵機(jī)的驅(qū)動控制。
圖8 人臉識別功能程序流程圖
系統(tǒng)的電路連接與程序編寫完成后,將主函數(shù)、各功能模塊及識別庫圖像存儲到Micro SD 卡中,運行程序完成對實時人臉的識別標(biāo)記以檢驗識別結(jié)果。
圖像尺度大小的標(biāo)準(zhǔn)根據(jù)待識別區(qū)域的分辨率和識別庫中圖像分辨率的比值來確定,從表1 可以看出,采集的圖像中目標(biāo)太大或太小都會給識別帶來困難;深度旋轉(zhuǎn)是指頭部繞頸部的轉(zhuǎn)動,這樣會造成人臉特征的缺失,給識別帶來更大的困難。這主要是由于單片機(jī)本身處理性能的限制,導(dǎo)致識別的準(zhǔn)確率并不算高。圖9 為系統(tǒng)識別完成后輸出的兩幀已標(biāo)記結(jié)果的圖像。
表1 識別結(jié)果
圖9 標(biāo)記識別結(jié)果的輸出圖像
本文介紹了迎賓機(jī)器人人臉識別系統(tǒng)的整體設(shè)計及軟硬件設(shè)計方案,并測試了該系統(tǒng)的人臉識別率。測試結(jié)果表明,該系統(tǒng)具有較高的識別率和較強的魯棒性,能夠準(zhǔn)確、實時地驅(qū)動舵機(jī)對準(zhǔn)移動的人臉,增強參觀者的體驗;其人臉檢測、人臉識別、舵機(jī)驅(qū)動、串口發(fā)送、LCD顯示等功能均能正常使用。