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