智能移動人臉辨識系統——跟我走機器人
摘要: 本文以發展具有人臉辨識和運動跟蹤功能的智能機器人為目標。機器人的名稱為“跟我走機器人”。它能夠根據人臉辨識的結果,判斷用戶的身份,并跟隨該用戶。系統的開發建基于英特爾 XScale PXA270 微處理器平臺、Linux操作系統和 QT/Embedded 圖形使用者接口。為了建構一個智能機器人,我們在系統上加入了基于彈性圖匹配 (EBGM) 的人臉辨識程序,運用了塊匹配算法的運動跟蹤功能。系統提供了簡易的用戶介面,方便管理和下達指令。“跟我走機器人” 除了應用于娛樂外,亦可勝任各種工業應用。
關鍵詞: PXA270;嵌入式Linux;機器人;人臉辨識;彈性圖匹配;運動跟蹤;塊匹配
前言
機器人在社會中的重要性與日俱增,原因在于我們每日所完成的許多工作都是按部就班進行的,無需思慮。這些工作可以由一個機器人來輕松地完成,有時候,機器人的表現要遠遠優于人類的表現。隨著SONY“機器狗”[1]的流行,近年來涌現出一類新的機器人。這類能模仿人類行為的新型機器人在國際玩具市場上目前極為流行。
為了將這種智能玩具技術推向更高的發展水平,我們開發了“跟我走”機器人,它擁有能識別人并跟蹤人的新功能。面部識別的功能使得機器人更為人性化,能辨認出不同的人。這一功能使得機器人在很大程度上實現了人性化,主人的家庭可以輕松地接納它為家庭中的一員。我們選擇人臉作為驗證的依據,因為它的可分辨性好,而且難以為其他人所復制。此外,與虹膜識別和指紋識別相比,用戶在進行人臉識別時所費的周章更少,而且用戶不那么容易察覺到識別過程的存在。
在本系統中,我們選用了彈性圖匹配(Elastic Bunch Graph Matching,EBGM)方法作為識別時的面部辨認算法。該算法的細節將在后面詳細解釋。運動跟蹤功能也是機器人的一項基本功能,它可以使機器人自動跟隨主人,從而增強了系統的可移動性。
在人臉識別方面存在的主要困難,是如何確定圖像中人臉的位置。本系統的解決之道是多次采集用戶的圖像,并要求用戶眨眼睛以便能找到眼睛的所在。這種方法也防止了其他人拿著用戶的相片來欺騙系統。
擁有XScale處理器PXA270的LIOD系統成為我們所研制的這款機器人的內核。Xscale處理器的軟件經過了優化,使得它能夠瞬時執行面部識別算法和運動跟蹤功能。XScale PXA270處理器對我們的應用來說已經足夠了,因為我們的系統所用的EBGM算法針對運行時間的需求進行了優化,它適合于移植到嵌入式系統。
在本文的余下部分,我們將逐步闡述我們的思想和實現方法,展示系統整體的工作流程,軟件和硬件之間的協同以及本項目的實驗結果。
這是一個精簡版的報告,完整版本可以從如下網址下載:http://pc89225.cse.cuhk.edu.hk/intelcup/。
系統描述
總體結構
本項目需要采用的一個主要部件就是攝像機。一旦系統啟動,攝像機就必須完成初始化。
圖1示出了系統的總體工作流程。系統由3個部分組成,包括“識別”,“登記”和“運動跟蹤”。用戶在啟動任何其他流程前應該啟動“識別模式”。這可以確保機器人能夠在執行任何功能前識別出合法主人。如果驗證后沒有指令發送到系統中,它會保持在“空閑模式”。
圖1 系統工作原理圖
處于“空閑模式”時,系統連續捕捉和顯示圖像,同時等待進一步指令。用戶此時可以選擇“登記模式”還是“運動跟蹤模式”。
“登記模式”允許有新用戶添加到系統中。在“運動跟蹤”模式中,機器人將自動跟蹤它的主人。下面,我們將依次討論這3個部分。
識別/登記模式
“識別模式”和“登記模式”基本上是類似的。
為了執行“識別/登記步驟”,系統必須首先通過基于圖像差異技術的“眼部檢測算法”來獲取眼睛的位置。當用戶眨眼睛時,在由攝像機連續捕捉到的圖像上,除了其眼睛位置出現差異外,其余部分將始終保持不變。于是,一旦用戶進入“識別/登記模式”,系統將連續捕捉圖像,并傳遞給“眼睛捕捉算法”,以找出眼睛的位置。如果系統能正確找出眼睛的位置,用戶可以選擇進入“識別”或是登記步驟,這將觸發彈性圖匹配(EBGM)算法。
“眨眼”判斷法利用了網絡攝像頭可以輕松捕捉多幅圖像的特點,可以讓用戶參與到驗證過程中,從而增強了機器人的可交互特性。
在“登記步驟”中將存儲一個記錄,以備進一步的匹配。對于“識別步驟”來說,它是一個“1對N”的過程。系統將對每項記錄進行比較,如果用戶與那些已登記的圖像一致,則顯示一個記號。這一工作流程的優點在于,在傳遞到“識別/登記步驟”(人臉識別算法)之前,對眼睛位置的識別的正確性得到了保證。該工作流程提高了人臉識別算法的檢測成功率。
運動跟蹤模式
當運動跟蹤功能啟動時,程序以固定的間隔連續運行。為了實現圖像的平滑顯示,一旦用戶進入“運動跟蹤模式”,程序控制就轉回主程序執行。“以QT捕捉和顯示”則與“運動跟蹤步驟”并行執行。不利之處在于“運動跟蹤步驟”可能會丟棄部分圖像。系統可能無法保持對微小運動的敏感性。但是,這樣的安排仍然適合于我們的應用,能夠跟蹤人的移動。
具體實現
硬件
*總體結構
圖2示出了系統的總體架構。我們下面將對這些部件逐個進行討論。
圖2 硬件之間的交互關系
*機器人(見圖3)
圖3 機器人設計的總體框圖
87C552微控制器
87C552微控制器起到PXA270開發板與電機驅動之間的橋梁作用。我們之所以選用87C552,是因為它支持一個集成化的脈寬調制(PWM)模塊,它可以提供2個8bit PWM通道。MCU接收來自于PXA270板的控制指令,從而產生輸出到L298電機驅動器的PWM信號。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
linux相關文章:linux教程
脈寬調制相關文章:脈寬調制原理
評論