吳晶瑩
(中北大學(xué)理學(xué)院,山西太原,030051)
在人口密度大、就餐時(shí)間規(guī)律的大型場(chǎng)所,用餐環(huán)境的特性是在固定的用餐時(shí)間都會(huì)有人流的激增,造成短時(shí)間內(nèi)的擁堵,服務(wù)員忙碌不能及時(shí)提供服務(wù)。本設(shè)計(jì)可以自動(dòng)巡邏式檢測(cè)人臉,當(dāng)發(fā)現(xiàn)目標(biāo)人臉對(duì)其眨眼,機(jī)器得到指令給用戶提供所需。本項(xiàng)目是基于人臉檢測(cè)系統(tǒng)上的智能化用餐服務(wù)配發(fā)設(shè)備,搭載上智能車平臺(tái),按需移動(dòng)實(shí)現(xiàn)移動(dòng)式配發(fā)。
本設(shè)計(jì)的重點(diǎn)也是核心是人臉檢測(cè)系統(tǒng),首先需要搭建完成人臉檢測(cè)系統(tǒng)。對(duì)于人臉檢測(cè)的系統(tǒng)主要有兩種設(shè)想,一是通過搭建神經(jīng)網(wǎng)絡(luò)來對(duì)人臉及動(dòng)作進(jìn)行檢測(cè),二是通過Haar Cascade分類器來進(jìn)行人臉檢測(cè),動(dòng)作識(shí)別則需要其他算法來求解或者尋找其他辦法來進(jìn)行確認(rèn)。此外便是搭建移動(dòng)式平臺(tái),本設(shè)計(jì)因需要具有略大負(fù)載能力的智能車,此處便選擇了恩智浦智能車競(jìng)賽里越野組所用的 L型車模??傮w實(shí)現(xiàn)的流程圖如圖1所示。
圖1 總體實(shí)現(xiàn)流程圖
人臉檢測(cè)是指對(duì)電子設(shè)備采集到的圖像進(jìn)行搜索,找到所有可能是人臉的位置,并返回人臉位置和大小的過程。在這個(gè)過程中,系統(tǒng)的輸入是一張可能含有人臉的圖片或者視頻輸入,輸出是人臉位置的矩形框。獲得包含人臉的矩形框后,第二步要做的就是人臉對(duì)齊(Face Alignment)。原始圖片中人臉的姿態(tài)、位置可能較大的區(qū)別,為了之后統(tǒng)一處理,要把人臉“擺正”。為此,需要檢測(cè)人臉中的關(guān)鍵點(diǎn)(Landmark),如眼睛、鼻子、嘴巴的位置、臉的輪廓點(diǎn)等。通過Python自帶的FacialLandmark Detection功能,它可以檢測(cè)出面部的68個(gè)關(guān)鍵點(diǎn),如下圖2所示。
圖2 人臉68個(gè)關(guān)鍵點(diǎn)
根據(jù)這些關(guān)鍵點(diǎn)可以使用仿射變換將人臉統(tǒng)一校準(zhǔn),以盡量消除姿勢(shì)不同帶來的誤差。識(shí)別人臉可以使用機(jī)器學(xué)習(xí)算法和工具Dlib,也可以使用OpenCV,通過實(shí)際操作情況可得OpenCV識(shí)別的速度比Dlib要快得多,但是OpenCV的識(shí)別正確率較低,所以,經(jīng)過綜合考慮,采用Dlib對(duì)人臉進(jìn)行識(shí)別。利用OpenCV對(duì)檢測(cè)到的人臉畫出方框進(jìn)行反饋。上述過程的實(shí)現(xiàn)效果如下圖3所示。
圖3 實(shí)現(xiàn)效果圖
由于顏色信息對(duì)于人臉檢測(cè)沒有影響,且為了減小條帶失真和減少計(jì)算量要將圖片灰度化。對(duì)每個(gè)像素以及其周圍的像素進(jìn)行分析,依據(jù)明暗度畫一個(gè)箭頭,重復(fù)操作,這些像素將會(huì)被箭頭即梯度(gra-dients)所取代。最終將原始圖像轉(zhuǎn)換成一個(gè)非常簡(jiǎn)單的HOG表達(dá)形式,便于捕獲面部的基本結(jié)構(gòu)。如圖4所示。
圖4 圖像HOG轉(zhuǎn)換
針對(duì)人臉面部動(dòng)作——眨眼識(shí)別。本設(shè)計(jì)采用的是Soukupová和Cech發(fā)表的論文《使用面部標(biāo)志實(shí)時(shí)眼睛眨眼檢測(cè)》推導(dǎo)出反映這種關(guān)系的方程,稱為眼睛縱橫比(EAR)。
這個(gè)方法與傳統(tǒng)的計(jì)算眨眼圖像處理方法是不同的,使用眼睛的長(zhǎng)寬比是更為簡(jiǎn)潔的解決方案,它涉及到基于眼睛的面部標(biāo)志之間的距離比例是一個(gè)非常簡(jiǎn)單的計(jì)算。其中p1,p2,p3,p4,p5,p6是2D面部地標(biāo)位置如圖5(a)所示,圖5(b)是閉眼地標(biāo)所在位置。
圖5
通過觀察繪出的眼縱橫比隨時(shí)間的視頻剪輯的曲線圖,如下圖6所示??芍劬v橫比是恒定的,然后迅速下降到接近零,然后再增加,表明進(jìn)行一次眨眼。
圖6 人眼眨眼檢測(cè)數(shù)據(jù)
在上一步檢測(cè)的基礎(chǔ)上我們已經(jīng)得到了68個(gè)面部特征,從這些特征點(diǎn)可以很容易的計(jì)算出眼睛縱橫比,這時(shí)主要的程序循環(huán)部分已經(jīng)出來了,也就是說,通過while循環(huán)從攝像頭部分讀取每一幀,在檢測(cè)部分中將其轉(zhuǎn)化為灰度圖并檢測(cè)人臉。通過遍歷臉部,在每個(gè)臉部應(yīng)用面部標(biāo)志檢測(cè)得到68個(gè)關(guān)鍵位置,然后提取左眼和右眼的坐標(biāo)來計(jì)算長(zhǎng)寬比,以檢查眼睛長(zhǎng)寬比是否低于我們的眨眼閾值,如果是,則表示正在進(jìn)行眨眼;否則,我們將處理眼睛寬高比不低于眨眼閾值的情況,并檢查是否有足夠數(shù)量的連續(xù)幀包含低于預(yù)定義閾值的眨眼速率。因?yàn)槭且糜诓途叻畔聲r(shí)的確認(rèn)工作,此時(shí)的“眨眼”應(yīng)為有確認(rèn)意義的“閉眼”,一幀時(shí)間為1 /12s,而眨眼一次時(shí)間為0.2到0.4s,所以只需要判斷大于5幀或者保險(xiǎn)起見大于6、7幀的“眨眼”就可作為確認(rèn)信號(hào)了。
實(shí)現(xiàn)人臉檢測(cè)的流程主要包括人臉Haar—like特征提取、AdaBoost級(jí)聯(lián)分類器生成以及人臉檢測(cè)結(jié)果三個(gè)環(huán)節(jié)。adaboost算法首先使用haar-like特征表示出人臉,但是此時(shí)得到的人臉特征值并不精確,然后通過增加閾值的方式設(shè)計(jì)出弱分類器,對(duì)特征值進(jìn)行篩選,此時(shí)得到的人臉特征值還是比較粗糙,因此將弱分類器并聯(lián)起來組成強(qiáng)分類器,經(jīng)過強(qiáng)分類器篩選之后的特征值非常接近真實(shí)的人臉特征值,為了增加檢測(cè)速度,以級(jí)聯(lián)的形式將已獲得的強(qiáng)分類器串聯(lián)成最終的分類器,Rainer Lienhart和Jochen Maydt兩位將這個(gè)進(jìn)行了擴(kuò)展,最終形成了OpenCV現(xiàn)在的Haar分類器。經(jīng)過長(zhǎng)時(shí)間的改進(jìn),我們利用Haar特征分類器來檢測(cè)人臉并利用眼睛的位置判斷動(dòng)作。
基礎(chǔ)系統(tǒng)構(gòu)成包括基于ARM11的嵌入式系統(tǒng)開發(fā)板樹莓派(Raspberry Pi)3B+、CSI視頻接口攝像頭元件、顯示屏。因?yàn)樵撈脚_(tái)開始處理圖像時(shí)視頻幀數(shù)會(huì)極低,極大地影響到正常動(dòng)作識(shí)別,成功率也因此大大降低。為此我們選用了新的開發(fā)平臺(tái)——Nvidia JETSON Nano,如下圖7所示。
圖7 Nvidia JETSON Nano
Jetson Nano提供472 GFLOP,用于快速運(yùn)行現(xiàn)代AI算法。它可以并行運(yùn)行多個(gè)神經(jīng)網(wǎng)絡(luò),同時(shí)處理多個(gè)高分辨率傳感器,非常適合入門級(jí)網(wǎng)絡(luò)硬盤錄像機(jī)(NVR)、家用機(jī)器人以及具備全面分析功能的智能網(wǎng)關(guān)等應(yīng)用。利用Linux+Python的編程環(huán)境和Python語言的可跨平臺(tái)特性,代碼的移植沒有太多障礙,輔以O(shè)penCV這一開源計(jì)算機(jī)視覺庫,來進(jìn)行基本的圖像處理。
底部的智能車選用的是競(jìng)賽用的恩智浦智能車L型車模,因?yàn)槠湄?fù)載能力大,在越野組的競(jìng)賽中表現(xiàn)優(yōu)異,故將其作為移動(dòng)式平臺(tái)。我們用基于ARM Cortex-M4內(nèi)核、帶有高級(jí)外設(shè)的節(jié)能型MCU的LPC54606搭建了一個(gè)遙控L車來進(jìn)行測(cè)試。使用逐飛的LPC普通組主板+LPC核心板+MOS單驅(qū)搭建的測(cè)試平臺(tái)對(duì)車模進(jìn)行控制。通過采集接收機(jī)的PWM占空比信號(hào),解析出遙控器的動(dòng)作。并使用LPC控制電機(jī)以及舵機(jī)動(dòng)作。工作時(shí):通過藍(lán)牙模塊接受上位機(jī)的跑位信號(hào),在固定的路線慢速巡航配發(fā),當(dāng)接收到緊急信號(hào)的時(shí)候迅速跑到感應(yīng)器位置進(jìn)行工作。該機(jī)器人設(shè)計(jì)工作流程如下圖8所示。
圖8 機(jī)器人工作流程圖
該智能服務(wù)設(shè)計(jì)旨在方便用戶,在用餐高峰期有效識(shí)別用戶以機(jī)器視覺的形式進(jìn)行用餐。該裝置可擴(kuò)展性很高,在此基礎(chǔ)上可以增加餐具回收或者餐具消毒功能。目前這款裝置的缺陷在于,若用餐者佩戴眼睛裝飾品比如眼鏡的時(shí)候,面部特征標(biāo)記的68個(gè)點(diǎn)位置偏差較大,在光線過于明亮的環(huán)境中,眼鏡的反光會(huì)使眼部特征無法檢測(cè)與辨認(rèn)。但總體而言,在條件合適的工作場(chǎng)景下,該配發(fā)裝置具有較高的工作效率,可以緩解日常餐廳就餐使得人流擁堵現(xiàn)象。