劉德發(fā)
(西京學(xué)院 信息工程學(xué)院,陜西西安,710000)
隨著科學(xué)技術(shù)的飛速發(fā)展,計(jì)算機(jī)在科學(xué)技術(shù)領(lǐng)域發(fā)揮著愈加重要的能力。相應(yīng)地,計(jì)算機(jī)的交互性改善日益成為科學(xué)研究領(lǐng)域的熱點(diǎn)之一,在這種技術(shù)要求的背景下,研究的主要目的就是創(chuàng)建一個(gè)和諧自然的人機(jī)交互自然環(huán)境,讓用戶即時(shí)地與設(shè)備進(jìn)行通信,讓計(jì)算機(jī)可以準(zhǔn)確表達(dá)出各種人類的表情及情緒。
而今,通過手勢(shì)來賦予計(jì)算機(jī)簡(jiǎn)單指令的交互形式已經(jīng)成為計(jì)算機(jī)的一個(gè)重要研究領(lǐng)域。手勢(shì)主要由手部動(dòng)作組成,作為人類社會(huì)理解和表達(dá)的一部分,不同于與鍵盤和鼠標(biāo)之間的交互,手勢(shì)檢測(cè)中對(duì)人們使用計(jì)算機(jī)中和網(wǎng)絡(luò)來說更容易、更高效。本文基于Mediapipe 框架,利用OpenCV 視覺庫(kù)實(shí)現(xiàn)了一種數(shù)字手勢(shì)識(shí)別的方法,能有效識(shí)別手部的一些簡(jiǎn)單手勢(shì),且響應(yīng)較快,具有較高性能。
作為谷歌學(xué)術(shù)研究部所開發(fā)的一個(gè)開源框架,基于圖形數(shù)據(jù)處理的目的,MediaPipe 主要用于處理構(gòu)建使用了多種形式的數(shù)據(jù)源(如視頻、音頻和各種其它傳感器數(shù)據(jù)和時(shí)間序列數(shù)據(jù))[1]。MediaPipe 具有跨平臺(tái)操作的優(yōu)勢(shì),能在多個(gè)平臺(tái)上運(yùn)行,并支持計(jì)算機(jī)使用GPU 處理。通過MediaPipe,待處理的圖像可以被分解成由圖形模塊表示的多個(gè)數(shù)據(jù)流管道,具有很高的性能。

圖1 Mediapipe 姿態(tài)預(yù)測(cè)流程
Mediapipe 手勢(shì)識(shí)別的部分都是使用內(nèi)部Bazel 工具構(gòu)建的。用戶可以免費(fèi)使用這個(gè)跨平臺(tái)構(gòu)建工具。同時(shí),Mediapipe 利用Machine Learning 技術(shù)從一幀中推斷出手部21 個(gè)3D 地標(biāo),實(shí)時(shí)性能較高,還可以針對(duì)多手識(shí)別的情況進(jìn)行處理。

圖2 手部關(guān)鍵點(diǎn)坐標(biāo)
借助MediaPipe,能夠把數(shù)據(jù)流構(gòu)建成模塊化的組圖,將視頻或者音頻流數(shù)據(jù)輸入到圖形中,利用各個(gè)功能模塊構(gòu)建的圖形模型管道對(duì)這些數(shù)據(jù)進(jìn)行相關(guān)處理,并從圖形中輸出最終結(jié)果數(shù)據(jù)[2]。使得整體處理流程更加流暢。因此,開發(fā)人員可以將MediaPipe 用作迭代優(yōu)化改進(jìn)其應(yīng)用程序的環(huán)境,最終得到的結(jié)果也能在不同的設(shè)備和平臺(tái)上重現(xiàn)。
在本文的實(shí)驗(yàn)中,原始模型是通過計(jì)算機(jī)攝像頭捕捉到的實(shí)時(shí)視頻作為輸入,利用MediaPipe 框架中的檢測(cè)模塊跟蹤手部動(dòng)作并識(shí)別手勢(shì)。根據(jù)官方文件,手勢(shì)識(shí)別的平均準(zhǔn)確率為95.7%。為了更好地覆蓋手掌位置并額外監(jiān)控手掌的幾何特性,我們?cè)诓煌尘跋逻M(jìn)行了實(shí)驗(yàn),具體實(shí)驗(yàn)過程如下:

圖3 實(shí)驗(yàn)流程圖
(1)創(chuàng)建手部檢測(cè)模型。該部分由Mediapipe 模塊中的手掌檢測(cè)模型BlazePalm Detector 直接實(shí)現(xiàn),BlazePalm 可以高效識(shí)別手的整體輪廓和運(yùn)動(dòng)方向,具有較大的覆蓋范圍和較高的檢測(cè)精度,適用于不同場(chǎng)景中不同大小的手部檢測(cè)。

圖4 手部檢測(cè)代碼部分
(2)手部關(guān)鍵點(diǎn)定位。Mediapipe 配備了Hand Landmark 模型,用于識(shí)別3D 手節(jié)點(diǎn)。操作手掌檢測(cè)模型Blazepalm 定義的手部圖像區(qū)域,可以高精度地返回手部關(guān)鍵點(diǎn)。在識(shí)別出的手部區(qū)域,該模型通過回歸算法將關(guān)鍵點(diǎn)精確定位在手部的三維關(guān)節(jié)坐標(biāo)上,并且對(duì)部分可見和遮擋的手部動(dòng)作具有很高的魯棒性。

圖5 手部關(guān)鍵點(diǎn)坐標(biāo)檢測(cè)代碼部分


圖6 手部關(guān)鍵點(diǎn)標(biāo)注代碼部分
(3)構(gòu)建數(shù)字手勢(shì)識(shí)別模塊。在得到手部關(guān)鍵點(diǎn)的坐標(biāo)后,MediaPipe 通過內(nèi)置算法來推斷手勢(shì)動(dòng)作。我們可以通過手指的彎曲角度來確定手勢(shì)的狀態(tài),將這組狀態(tài)映射到內(nèi)置的一系列預(yù)定義的手勢(shì)進(jìn)行匹配,從而實(shí)現(xiàn)數(shù)字手勢(shì)的簡(jiǎn)單識(shí)別。通過這種簡(jiǎn)單直接的方法,我們可以有效評(píng)估基礎(chǔ)的數(shù)字手勢(shì),并通過響應(yīng)速度來驗(yàn)證檢測(cè)的質(zhì)量。

圖7 數(shù)字手勢(shì)推導(dǎo)代碼部分
本文識(shí)別實(shí)驗(yàn)在Windows 10 平臺(tái)上運(yùn)行,使用的開發(fā)語(yǔ)言為 Python,輔助的視覺庫(kù)為OpenCV。在本文實(shí)驗(yàn)中,初步對(duì)單手?jǐn)?shù)字0~5 的手勢(shì)進(jìn)行了測(cè)試識(shí)別,通過交互實(shí)時(shí)的響應(yīng)速度來檢驗(yàn)實(shí)驗(yàn)質(zhì)量。
起初,我們利用MediaPipe 內(nèi)置的手部檢測(cè)模型Blazepalm Detector 創(chuàng)建一個(gè)針對(duì)手部檢測(cè)的模塊,然后利用Hand Landmark Model 進(jìn)行手部的定位,以此得到手部21 個(gè)關(guān)鍵點(diǎn)的坐標(biāo)。通過觀察,我們可以發(fā)現(xiàn)針對(duì)除大拇指外的其余四根手指,在正常情況下指尖的縱坐標(biāo)大于指腹的縱坐標(biāo),而在閉合的情況下卻小于指腹的縱坐標(biāo)。因此通過一個(gè)簡(jiǎn)單的坐標(biāo)比較我們可以判斷出食指、中指、無名指、小指的狀態(tài)。而針對(duì)大拇指而言,觀察可以得到,大拇指豎起與放下時(shí)指尖與指腹的坐標(biāo)大小剛好相反。還可以利用大拇指與其他手指間的角度來進(jìn)行判斷。這里我們采用的是比較其指尖與指腹的橫坐標(biāo)來判斷其狀態(tài)的變化。實(shí)驗(yàn)結(jié)果如圖9 所示。

圖8 待識(shí)別數(shù)字手勢(shì)

圖9 數(shù)字手勢(shì)識(shí)別實(shí)驗(yàn)
由上述實(shí)驗(yàn)可知,基于MediaPipe 框架的手勢(shì)識(shí)別能夠有效地針對(duì)手的局部運(yùn)動(dòng)進(jìn)行識(shí)別判定。在響應(yīng)速度方面,識(shí)別響應(yīng)時(shí)間及時(shí),實(shí)驗(yàn)過程中FPS 保持在20~30 左右。同時(shí)在實(shí)驗(yàn)中出現(xiàn)多只手識(shí)別的情況下,MediaPipe 能夠很好地避免無關(guān)手的干擾,使目標(biāo)的輸入盡可能為所要求手的信息,具有一定的抗干擾性能。由于數(shù)據(jù)的輸入為連續(xù)的視頻流,從而導(dǎo)致在實(shí)驗(yàn)過程中仍存在少許的誤識(shí)別的現(xiàn)象,同時(shí)該方案適用局限性大,在一些復(fù)雜手勢(shì)的識(shí)別上效果仍有待提高。
本文簡(jiǎn)要討論了在MediaPipe 框架下實(shí)現(xiàn)的簡(jiǎn)單數(shù)字手勢(shì)識(shí)別。對(duì)整體檢測(cè)流程做了基礎(chǔ)性描述,該框架對(duì)于手部的局部運(yùn)動(dòng)可以有效識(shí)別,且識(shí)別性能較高。手勢(shì)識(shí)別由于其方便簡(jiǎn)潔的特點(diǎn)在人類與計(jì)算機(jī)的交互中具有良好的研究前景。在不遠(yuǎn)的未來,相信研究人員會(huì)進(jìn)一步深入地研究手勢(shì)識(shí)別領(lǐng)域,將識(shí)別準(zhǔn)確率提高,加快手勢(shì)的識(shí)別速度,擴(kuò)展其手勢(shì)庫(kù),并實(shí)現(xiàn)更高效更靈活的發(fā)展。

圖10 多手識(shí)別結(jié)果