杭州蕭山技師學院 張 祺
針對傳統的人與機器人交互方式存在操作不便、效率低、難以滿足行動不便及失語人群等缺陷,設計出一種具有面部表情控制的作業型移動機器人。首先,結合運動學原理,設計和搭建了以NI MyRio為核心控制器的移動機器人運動平臺,實現移動機器人的水平移動、旋轉和機械手臂伸縮、旋轉、升降、抓取功能;其次,采集人臉圖像進行預處理,采用AdaBoost算法實現人臉檢測,訓練人臉數據,采用主成分分析法實現人臉識別,識別出特定的人臉信息,獲取人臉位置信息,訓練人臉表情數據,采用支持向量機算法,識別出三種類型的表情。最后,將人臉表情信息和數據無線傳輸給移動機器人,實現表情控制。實驗結果表明,移動機器人能夠跟隨特定的人臉進行移動,能夠判斷出三種表情,控制移動機器人機械手臂的旋轉、伸縮和停止,具有較好的應用價值和研究前景。
隨著醫療水平和科學技術的提高,越來越多先進的機器人技術、人機交互技術在醫療領域得以廣泛應用。移動機器人由于其承載力大、可重復性強、誤差小、成本低的優點,正逐步應用于醫療領域,但目前老人、重病患者和失語人群等弱勢群體由于身體原因不能操作移動機器人上的實體按鍵和觸屏,或通過語音識別控制機器人,不能享受移動機器人所帶來的便利。
因此,我們逐漸把目光集中到移動機器人視覺領域,通過視覺采集技術和圖像處理技術對外界信息進行收集與分析,向移動機器人發送控制指令做出相應的動作反應,讓移動機器人能夠像人一樣“看到”物體并作出決策。
心理學家Mehrabian曾指出:人與人之間的交流一半以上的信息都是通過面部表情來表達。由此可見,面部信息在人與人交流過程中占有主導地位,通過準確分析面部信息,可以分辨身份,了解人的內心情緒波動。如果機器人能夠通過視覺技術進行人臉識別,同時能夠捕捉人的面部表情,則可以根據人的面部信息來分析人類的意圖,幫助人類完成工作和任務,此技術將會提升人與機器人交流的智能化水平,使弱勢群體能夠更方便地使用移動機器人等現代科技。
表情識別是集計算機技術、圖像處理技術和模式識別技術于一體的綜合領域,將表情識別應用到移動機器人領域當中,可以豐富人與移動機器人的交流方式。因此,本文基于機器學習、模式識別等核心算法以及移動機器人運動控制,將人臉檢測、人臉識別、表情識別等技術應用到移動機器人控制方式當中,讓移動機器人能識別出面部信息、表情變化,進而幫助行動不便或者感知障礙的人群使用移動機器人 完成目標任務,提升弱勢群體的生活便利性。
本文系統設計方案流程如圖1所示,具體實現步驟如下:

圖1 系統設計方案流程圖
(1)數據收集與訓練:收集人臉數據和表情數據,結合數據庫,采用主成分分析法和支持向量機對數據進行分類訓練,在程序中調用訓練好的模型。
(2)圖像采集:采用攝像頭對待識別場景進行數據采集。
(3)圖像預處理:將圖像采集的數據經過灰度預處理、圖像歸一化、直方圖修正和圖像去噪,減少由于角度、尺寸和光照等外界噪聲造成的干擾。
(4)表情識別:識別出圖像中的人臉,判斷人臉是否為特定人臉,獲取特定人臉的位置數據,識別出人臉表情的類別。
(5)數據傳輸:將特定人臉的位置數據和人臉表情的類別編號通過藍牙通訊,傳輸給移動機器人控制器。
(6)移動機器人控制:移動機器人接收到數據,根據人臉的位置數據控制移動機器人前后、左右移動,實現人臉跟隨,根據人臉表情類別編號,控制移動機器人機械手旋轉、伸縮和停止。
AdaBoost算法是一種基于統計理論的自適應提升算法,它可以通過學習數據樣本,讓機器提取樣本的主要特征,基于AdaBoost人臉檢測方法的主要步驟是:使用Haar-like矩形特征表示人臉信息,采用“積分圖”快速計算特征向量,將特征值標準化,根據AdaBoost算法選擇最主要的特征,構成弱分類器,通過賦予不同權值組成強分類器。
級聯分類器是將多個強分類器組合在一起,進一步提高系統檢測能力,待檢測圖像經過每一級強分類器分類檢測后,仍然屬于設定的人臉圖像標準,那么待檢測圖像大概率即為最終的設定圖像。
人臉圖像屬于高維數據,在進行信息處理時比較復雜,主成分分析法首先將訓練集中的人臉數據進行圖像預處理,求出總體樣本均值,即平均臉;其次,通過差值臉和協方差矩陣將特征值分揀,求出特征向量,構建變換矩陣;再次,通過K-L變換選取主成分,求出特征向量在空間的投影,構建人臉特征庫;最后求出待測人臉圖像的差值臉,通過變換矩陣將人臉圖像投影到特征空間,與之前訓練的人臉數據庫作對比,若小于設定的閾值,則屬于人臉庫數據信息,若大于設定的閾值,則不屬于人臉庫數據信息。
支持向量機是一種基于統計的機器學習算法,它通過核函數把人臉表情數據投射到高維空間,在高維空間中構造具有低VC維的最優超平面,并將其作為判決面,對于一些樣本少、維數高、非線性的問題具有良好的解決能力,因此在機器學習、表情識別等將數據分類的研究領域占有越來越重要的地位。
支持向量機首先通過由核函數定義的非線性變換,將輸入樣本空間轉換到一個高維空間,然后在這個新的空間中求解最優分類面。如圖2為支持向量機表情識別流程圖,首先,選取合適的表情數據,進行歸一化預處理;其次,選擇模型參數,構建SVM模型;再次,進行模型初始化,通過輸入訓練樣本進行SVM訓練;最后,輸入測試樣本,進行SVM模型測試。

圖2 支持向量機表情識別流程圖
進行人臉檢測和人臉識別的過程中,首先,收集不同場景、不同人臉的數據信息,本文采用的是ORL人臉數據庫;其次,采用AdaBoost算法采集自己的人臉信息,OpenCV提供了多種分類器用于正面人臉檢測,為了提高檢測精度的同時兼顧到檢測速度,采用“haarcascade_frontalface_alt.”進行人臉檢測;最后,當檢測到環境中出現人臉圖像時,對人臉圖形進行灰度化和尺寸歸一化,并將采集的不同表情不同角度的人臉圖像保存在文件目錄下。
使用Dlib庫進行人臉68點的標定操作,主要是通過68點的模型進行提取臉部的68點的特征值。首先,打開攝像頭,加載需要的臉部識別和姿態估計的模型,將文件中的模型放置在pos_model中;其次,處理通過攝像頭獲取的每一幀的圖片,將其中轉化為RGB圖片,通過模型進行特征點捕捉,用點標出特征點,并用數字顯示出具體數值;最后,將采集的特征點存入TXT文檔中,將三種不同表情的特征點的TXT文檔放置到不同的文件夾當中。
采用CSV文件讀取文件夾中所有的人臉數據,CSV文件通常由要讀取的文件名稱和所識別種類的標簽構成,同一個人臉的標簽名稱相同,用名字或編號作為我們要識別的人臉的標簽。使用openCV中有關人臉識別的類文件進行訓練,Facerecognizer類包含了常用的人臉識別模型,采用“createEigenFaceRecognizer”PCA主成分分析法,先讀取訓練圖像和標簽,存在容器中,接著移除最后一張圖片以便測試模型,再進行模型訓練,保存為“MyFacePCAModel.xml”,最后進行模型測試,如圖3為人臉識別測試結果,系統可以檢測出環境中的人臉,并用框圖定位,識別出兩個人的身份,并將顯示被識別者的名字。

圖3 人臉識別測試圖
加載支持向量機訓練模型,通過支持向量機分類器進行數據分類,訓練采集到的特征點數據,將訓練好的模型存入“SVM_DATA.xml”,加載人臉檢測模型和訓練好的表情識別模型,利用測試數據進行表情識別測試,測試結果如圖4所示,系統識別出不同類型的表情。

圖4 表情識別測試圖
移動機器人人臉跟隨:求出識別出的特定人臉的中心點坐標,將中心點坐標通過藍牙發送到移動機器人端,移動機器人接收到信息后對數據進行處理,判斷人臉中心在整個圖像區域水平方向上的位置,將位置數據轉化為左右方向速度控制量,控制移動機器人跟隨人臉的左右移動而移動。同理,移動機器人接收來自PC端的人臉區域的面積值,人臉越靠近攝像頭面積值越大,將面積值轉化為前后方向速度控制量,控制移動機器人跟隨人臉前后移動而運動。移動機器人人臉跟隨效果圖如圖5所示。

圖5 移動機器人人臉追蹤效果圖
移動機器人機械手臂表情識別控制:將識別出的表情類別編號通過藍牙傳輸至移動機器人控制器,當面部表情為“happy”類別時,移動機器人手臂旋轉運動,當面部表情為“sad”類別時,移動機器人手臂前后伸縮運動,當面部表情為“calmness”類別時,移動機器人停止動作,移動機器人表情識別控制機械手臂效果圖如圖6所示。

圖6 表情識別控制機械手臂效果圖
結語:本文根據基于人臉表情識別的移動機器人設計需求,提出具體的系統架構和研究方案,將人臉識別技術、表情識別技術應用到移動機器人的控制中,通過人臉識別,完成人臉定位,設計移動機器人模型,建立合理通訊方式,實現移動機器人跟隨人臉的功能。通過表情識別,判斷出三種不同的表情,控制機械手臂的旋轉、伸縮和停止,并完成系統測試。同時優化移動機器人的控制方案,建立穩定的運行平臺,通過設計與調試、已經基本實現基于視覺的移動機器人人臉跟隨,表情識別控制機械手臂動作的任務。