郭順超 元艷香
【摘 要】鑒于Face++在人臉檢測與識別領(lǐng)域的巨大成功,針對目前手勢識別應用研究偏少的情況,本文將Face++人體識別中的手勢識別方法加以應用,設計并實現(xiàn)了基于Face++的手勢識別系統(tǒng)。該系統(tǒng)首先利用手勢樣本庫圖片或者攝像機實時采集的手勢圖片作為待識別樣本,接著將樣本作為一個參數(shù),通過Post調(diào)用方法調(diào)用Face++指定的URL接口,最后解析通過接口調(diào)用返回的Json串并使用OpenCV庫函數(shù)將識別結(jié)果顯示給用戶。實驗結(jié)果表明,使用Face++手勢識別方法識別靜態(tài)手勢,系統(tǒng)具有識別率高、實時性好、魯棒性佳的優(yōu)點。
【關(guān)鍵詞】手勢識別;Face++;Json;OpenCV
中圖分類號: TP391.41 文獻標識碼: A 文章編號: 2095-2457(2018)33-0019-002
DOI:10.19694/j.cnki.issn2095-2457.2018.33.008
【Abstract】Considering the great success of Face++ in the field of face detection and recognition, in view of the current lack of research on gesture recognition applications, this paper applies the gesture recognition method in Face++ human body recognition, and then designs and implements the gesture recognition system based on Face++. Firstly, the system uses the gesture pictures which from sample library or been captured by the camera in real time as the samples to be identified; Secondly, the system takes one of the sample as a parameter, calls the URL interface which is specified by Face++ through the Post calling method; Finally, the system parses the Json string which is returned by the interface called and then uses OpenCV functions to display the recognition result to the users. The experimental results show that using Face++ gesture recognition method to identify static gestures, the system has the advantages of high recognition rate, good real-time performance and good robustness.
【Key words】Gesture recognition; Face++; Json; OpenCV
0 引言
手勢識別是計算機視覺的一個熱門研究領(lǐng)域[1],其核心是計算機根據(jù)采集的手勢樣本識別出其表達的特定含義,它是手勢交互的基礎(chǔ)。手勢識別的識別率和實時性均會對后續(xù)手勢交互相關(guān)應用產(chǎn)生直接影響,故而手勢識別算法的設計和優(yōu)化非常重要。目前,利用手勢識別進行系統(tǒng)設計的應用還不算多,一些研究人員借助Kinect[2]、Leap Motion[3]、超聲波[4]、MEMS傳感器[5]等設備進行手勢識別方面的應用設計與研究并取得了成功,但是這些設備配置相對復雜,使用相對不便。鑒于此,本文對借助普通攝像頭進行手勢識別方面開展研究與應用。
1 Face++簡介
Face++是北京曠視科技有限公司推出的、面向開發(fā)者的人工智能開放平臺[6]。該平臺以API或SDK的形式,將領(lǐng)先的、基于深度學習的計算機視覺技術(shù)開放給開發(fā)人員或者人工智能愛好者。產(chǎn)品包括人臉識別,人體識別、證件識別以及其他車牌、文字等其它類別的圖像識別。平臺的人臉識別技術(shù)在國內(nèi)得到了廣泛運用,例如,支付寶的刷臉驗證登錄技術(shù)、螞蟻金服的刷臉驗證技術(shù)等。
目前,F(xiàn)ace++手勢識別API已經(jīng)對開發(fā)人員免費開放,調(diào)用者通過提供圖片文件或者圖片URL,即可檢測圖片中出現(xiàn)的所有手部區(qū)域,并返回其在圖片中的矩形框位置以及相應的手勢含義,目前已支持識別 比心、OK、點贊、握拳等19種預定義手勢。對于單手的手勢,不區(qū)分左右手,即無論是左手還是右手擺出此手勢都會被準確識別??紤]到Face++手勢識別接口的開放性、精準性、易用性等優(yōu)勢,本文借助該平臺實現(xiàn)手勢識別系統(tǒng)中的手勢識別相關(guān)功能。
2 系統(tǒng)設計
按照流程,一個完整的手勢識別系統(tǒng)一般應包含手勢樣本的采集、手勢分割、特征提取、訓練和識別5個步驟。手勢樣本的獲取可以是通過手勢識別庫中下載獲取,也可以是通過攝像頭實時采集,樣本分為訓練樣本和測試樣本。手勢分割是指利用膚色模型或者其他模型找到樣本中手勢的感興趣區(qū)域以方便后續(xù)處理。特征提取一般提取手勢的指尖信息、輪廓信息、紋理信息等用以代表此樣本。手勢訓練是指利用模板匹配類、神經(jīng)網(wǎng)絡類、支持向量機類等方法對手勢訓練樣本的特征進行訓練得到手勢分類器模型。手勢識別則是將經(jīng)過手勢分割、特征提取后得到的測試樣本特征輸入手勢分類器模型中進行識別,最終得到手勢樣本的類別的過程。
本文設計的手勢識別系統(tǒng),采用Face++提供的接口,手勢分類器模型已經(jīng)提前獲得,手勢分割、特征提取、這些過程也交由Face++服務器完成,故而本系統(tǒng)的手勢識別核心功能包括手勢定義、手勢采集、手勢識別三大模塊。手勢定義模塊是用戶根據(jù)自身需要,對Face++平臺提供的手勢類別進行重新命名,得到一個新手勢名稱與原類別名稱的映射關(guān)系表,命名完成后,系統(tǒng)將該表存儲在XML文件中。手勢采集模塊,系統(tǒng)支持圖片庫文件上傳的方式,也支持攝像機實時采集后上傳的方式形成待識別手勢樣本。手勢識別模塊是指通過調(diào)用API接口URL地址,并給接口傳入指定的參數(shù),并對服務器返回值進行解析的一個過程。
3 核心算法實現(xiàn)
(1)登錄官網(wǎng),注冊賬號,進入開發(fā)者中心,注冊免費體驗版,https://console.faceplusplus.com.cn/register,然后創(chuàng)建應用程序,獲取秘鑰以及密碼。
(2)進入官網(wǎng),查看API文檔,參考https://console.faceplusplus.com.cn/documents/10065649,了解手勢識別相關(guān)URL接口,接口的入口地址是:https://api-cn.faceplusplus.com/humanbodypp/beta/gesture,調(diào)用方法是Post方法,傳入的請求參數(shù)包括api_key、api_secret、image_file和return_gesture,各參數(shù)的具體描述參見表1。
(3)調(diào)用URL接口,接口返回值為一串Json字符串,通過引入Python中自帶的Json模塊,調(diào)用相關(guān)函數(shù)對Json串進行解析得到gesture和hand_rectangle兩個參數(shù)的返回值。其中,gesture中包含了API提供的19種預定義手勢和未知手勢共計20個參數(shù),根據(jù)參數(shù)返回值大小,最大的即為系統(tǒng)識別出來的手勢;hand_rectangle代表的是識別出來的手勢在樣本中的坐標。
(4)使用OpenCV庫函數(shù)創(chuàng)建一個手勢識別窗口,將樣本圖片和hand_rectangle疊加顯示在窗口中。根據(jù)手勢預定義模塊中對API預定義的手勢進行重定義的對應關(guān)系,將手勢識別的最終結(jié)果顯示給用戶。
4 總結(jié)與展望
從結(jié)果上看,在網(wǎng)絡條件較好的情況下,服務器可以實時地將手勢測試樣本的識別結(jié)果返回,并且手勢在樣本中的區(qū)域位置一并反饋,這樣我們可以利用這兩個標識來完成我們想要的功能。經(jīng)過不同光照、不同拍攝角度條件下的反復測試實驗,證明本系統(tǒng)的手勢識別具有識別率高、實時性好、魯棒性佳的優(yōu)點。此外,本文手勢識別系統(tǒng)具有很強的可移植性,可以擴展應用到許多領(lǐng)域,如智能家居、交互游戲、視頻直播、在線教育等。
【參考文獻】
[1]易靖國,程江華,庫錫樹.視覺手勢識別綜述[J].計算機科學,2016,43(6A):103-108.
[2]楊瓊楠,張苗苗,楊聰錕等.基于Kinect手勢識別的智能小車控制系統(tǒng)設計[J].國外電子測量技術(shù),2018,37(9):85-89.
[3]王紅全,淮永建.基于Leap Motion手勢識別方法在樹木交互的應用[J].計算機應用與軟件,2018,35(10):153-158.
[4]楊建濤,李翔宇,王碩.用于手勢識別的超聲波收發(fā)器嵌入式系統(tǒng)設計[J].微電子學與計算機,2018,35(5):51-54,60.
[5]劉國慧.基于MEMS傳感器動態(tài)手勢識別系統(tǒng)設計與實現(xiàn)[D].南京:東南大學,2017.
[6]Face++官網(wǎng),https://www.faceplusplus.com.cn/.