王森寶 楊晉驍 王子昂 李世堯 秦娟 石艷梅
(天津理工大學(xué)集成電路科學(xué)與工程學(xué)院,天津 300384)
手勢(shì)可以表達(dá)豐富的含義,廣泛應(yīng)用于人們?nèi)粘I钪校S著機(jī)器學(xué)習(xí)的不斷發(fā)展,巧妙利用多媒體機(jī)器學(xué)習(xí)模型應(yīng)用框架并對(duì)其識(shí)別算法進(jìn)行改進(jìn)是現(xiàn)在手勢(shì)識(shí)別的一個(gè)大趨勢(shì)。手勢(shì)識(shí)別在現(xiàn)代社會(huì)中具有廣泛應(yīng)用,對(duì)于AR特效,可以進(jìn)行短視頻、直播等娛樂(lè)交互場(chǎng)景,基于指尖點(diǎn)檢測(cè)和指骨關(guān)鍵點(diǎn)檢測(cè),可實(shí)現(xiàn)手部特效、空間作畫(huà)等多種創(chuàng)意玩法,豐富交互體驗(yàn);在手勢(shì)進(jìn)行自定義識(shí)別的過(guò)程中,根據(jù)手部骨節(jié)坐標(biāo)信息,可靈活定義業(yè)務(wù)場(chǎng)景中需要用到的手勢(shì),例如面向智能家電、可穿戴等硬件設(shè)備的操控類(lèi)手勢(shì),面向內(nèi)容審核場(chǎng)景的特殊手勢(shì)等。
在傳統(tǒng)方法中,手勢(shì)識(shí)別算法通常依賴(lài)硬件設(shè)備或者基于視覺(jué)方法進(jìn)行識(shí)別[1]。Jayashree Pansare 等人創(chuàng)新性地采用網(wǎng)絡(luò)攝像機(jī)進(jìn)行實(shí)時(shí)手勢(shì)識(shí)別[2],潘志庚等人提出了基于Kinect 和膚色檢測(cè)算法結(jié)合的手勢(shì)識(shí)別系統(tǒng)[3],譚臺(tái)哲等人采用深度信息與膚色信息結(jié)合的方法[4],減少了硬件設(shè)備的影響,并且具有更高的魯棒性。此外,James Rwigema等人提出的一種差分進(jìn)化方法來(lái)優(yōu)化參數(shù)[5],但以上基于傳統(tǒng)模型的識(shí)別方法或多或少都有著受環(huán)境影響大、精度不夠高、識(shí)別速度慢等弊端。
針對(duì)以上問(wèn)題,本文基于魯棒預(yù)測(cè)控制的方法,使用手部關(guān)鍵點(diǎn)檢測(cè)迭代改進(jìn)算法,可以盡可能減少?gòu)?fù)雜環(huán)境的影響并實(shí)現(xiàn)具有較高精度的快速檢測(cè)。該方法采集包括指尖、各節(jié)指骨連接處等22個(gè)特征點(diǎn)的信息,其中包括精準(zhǔn)定位手部的21個(gè)主要骨節(jié)點(diǎn)描述指尖、各節(jié)指骨的坐標(biāo)信息,以及1個(gè)特征點(diǎn)標(biāo)記圖像采集獲取人手畫(huà)面的背景點(diǎn)。通過(guò)在標(biāo)準(zhǔn)數(shù)據(jù)集與自制數(shù)據(jù)集上進(jìn)行測(cè)試,該算法提高了有效性和精準(zhǔn)度。
在整個(gè)識(shí)別過(guò)程中需要對(duì)攝像頭所捕捉到的區(qū)域進(jìn)行信息的提取,只有提取到正確的信息才能進(jìn)一步判斷,并獲得輸出結(jié)果。信息的提取需要確定候選區(qū)域。對(duì)于候選區(qū)域的產(chǎn)生本文采用的方法是選擇性搜索[6]。
在圖像處理的過(guò)程中,當(dāng)獲取到的手勢(shì)信息轉(zhuǎn)換成可用計(jì)算機(jī)處理的數(shù)字圖像時(shí),其手勢(shì)圖像在生成、傳輸或變換過(guò)程中會(huì)受到各種因素的干擾和影響,其畫(huà)質(zhì)將會(huì)因噪聲而在不同程度上出現(xiàn)畸變[7],因此需要先對(duì)圖像進(jìn)行預(yù)處理。預(yù)處理是對(duì)圖像做一些諸如降維、降噪的操作,主要是為后續(xù)處理提供一個(gè)大小合適的、盡可能去除無(wú)用信息的圖像。本文對(duì)噪聲的處理是使用魯棒預(yù)測(cè)控制,進(jìn)行魯棒預(yù)測(cè)控制會(huì)大幅提高其精準(zhǔn)度[8],降低噪聲對(duì)獲取圖像的影響,就可以增加部分關(guān)鍵點(diǎn)難以檢測(cè)出來(lái)的手勢(shì)圖像,擴(kuò)充識(shí)別手勢(shì)庫(kù)。
手勢(shì)識(shí)別是整體設(shè)計(jì)中關(guān)鍵的一環(huán),手勢(shì)識(shí)別的方法有很多種,不同的識(shí)別方法所建立的模型不盡相同。相對(duì)于常見(jiàn)且較為耗時(shí)的神經(jīng)網(wǎng)絡(luò)法[9]以及傳統(tǒng)的模板匹配法[10],本文基于手掌二維定位向量法設(shè)計(jì)手腕定位方法[11],由于正常人的五指指根以及各個(gè)關(guān)節(jié)處到手掌中心之間的距離基本相等,因而可以手腕為原點(diǎn),定位手腕為原點(diǎn)坐標(biāo),通過(guò)各個(gè)關(guān)節(jié)與手腕的角度數(shù)學(xué)運(yùn)算,對(duì)伸直手指?jìng)€(gè)數(shù)進(jìn)行識(shí)別;通過(guò)角度運(yùn)算結(jié)果進(jìn)一步確定是哪根手指伸直或彎曲,由此判定相應(yīng)的手勢(shì)信息。此種方法最大的優(yōu)點(diǎn)是適用性強(qiáng),可準(zhǔn)確識(shí)別出多種手勢(shì)。
手勢(shì)圖像識(shí)別首先采集圖像,其次確定候選框,進(jìn)而應(yīng)用關(guān)鍵點(diǎn)進(jìn)行算法識(shí)別。
由于檢測(cè)圖像中存在的物體具有局部區(qū)域相似性(顏色、紋理等),所以適當(dāng)情況下需要進(jìn)行區(qū)域生長(zhǎng)(或合并),可以有效提取圖像中信息。使用攝像頭進(jìn)行圖像采集,常用的方法有滑動(dòng)窗口[12]與選擇性搜索。其中滑動(dòng)窗口法是通過(guò)對(duì)輸入圖像采用不同大小的窗口進(jìn)行滑動(dòng),并采用非極大值抑制的方法進(jìn)行篩選的全局性搜索算法。但是在本實(shí)驗(yàn)之中,進(jìn)行手勢(shì)識(shí)別具有較高的實(shí)時(shí)性,滑窗法有局限性,所以在此不適用。而選擇性搜索可為物體檢測(cè)算法提供候選區(qū)域,其速度快,召回率高。產(chǎn)生初始的分割區(qū)域,然后使用相似度計(jì)算方法合并一些小的區(qū)域。通過(guò)不斷地迭代,候選區(qū)域列表中的區(qū)域越來(lái)越大,進(jìn)而完成候選區(qū)域的選擇。本文采用選擇性搜索。其算法的具體流程如圖1所示。
圖1 圖像獲取流程
進(jìn)行相似度的衡量時(shí),算法主要考慮四種相似性度量,取值都在[0,1],值越大就說(shuō)明越相似。它們分別是顏色相似性scolour(ri,rj)、紋理相似性stexture(ri,rj)、尺寸相似性ssize(ri,rj)和重疊相似性sfill(ri,rj),合并只能在近鄰的兩個(gè)區(qū)域間進(jìn)行,遠(yuǎn)離的兩個(gè)區(qū)域不能合并(其中ri,rj分別是候選區(qū)域中各點(diǎn)的橫坐標(biāo)與縱坐標(biāo))。
最終相似度的度量總標(biāo)準(zhǔn)是上述四個(gè)度量的組合:
不斷進(jìn)行區(qū)域合并,直至候選區(qū)域選擇完畢,獲取候選區(qū)域中的圖像。
根據(jù)魯棒性的定義可知,控制系統(tǒng)由于工作狀況變動(dòng)、外部干擾以及建模誤差,會(huì)產(chǎn)生一定的不確定性,精準(zhǔn)性模型很難被獲取到。而基于手勢(shì)關(guān)鍵點(diǎn)的手勢(shì)識(shí)別對(duì)依據(jù)關(guān)鍵點(diǎn)而判斷出來(lái)的彎曲或伸直狀態(tài)是尤為重要的。原算法是將采集的圖像送入手部關(guān)鍵點(diǎn)檢測(cè)器,以得到許多粗略的關(guān)鍵點(diǎn)檢測(cè)結(jié)果,關(guān)鍵點(diǎn)的3D 位置被重新投影到2D 圖片,將其和關(guān)鍵點(diǎn)結(jié)合可以訓(xùn)練網(wǎng)絡(luò)。由于原方法中噪聲的影響降低了手勢(shì)圖像的檢測(cè)精確度,故本文采取魯棒預(yù)測(cè)控制,對(duì)訓(xùn)練網(wǎng)絡(luò)進(jìn)行降噪處理。關(guān)于有界噪聲問(wèn)題[13],外部噪聲的線(xiàn)性不確定系統(tǒng)可表示為:
其中xk是系統(tǒng)狀態(tài),xk∈Rn;uk是系統(tǒng)輸入uk∈Rm;ωk是外部噪聲,ωk∈Rr(其中Rn,Rm,Rr是取值空間)在這里外部噪聲大多來(lái)源于周?chē)h(huán)境噪聲,值雖然未知但是這里假定有界。
在整個(gè)迭代優(yōu)化過(guò)程中,對(duì)其進(jìn)行優(yōu)化控制處理[14],本文的優(yōu)化控制使用Min-max方法[15],考慮了由不確定性引起的“最壞”的情況,如果系統(tǒng)能在這種“最壞”的情況下穩(wěn)定運(yùn)行,則對(duì)于未來(lái)發(fā)生的任何一種不確定性,系統(tǒng)仍然可以穩(wěn)定運(yùn)行。其計(jì)算依據(jù):
其中xk+N是終端狀態(tài),xk+N∈XN為終端約束條件,JN(xk+N)為終端代價(jià)函數(shù),N為預(yù)測(cè)時(shí)域,Q,R分別為相關(guān)權(quán)重。
可以通過(guò)枚舉法得到W的頂點(diǎn),枚舉法列出所有頂點(diǎn)所要滿(mǎn)足的約束以保證“最壞”情況下約束滿(mǎn)足,但是約束數(shù)量會(huì)急劇增加,所以在經(jīng)典控制論中使用閉環(huán)回路往往可以實(shí)現(xiàn)更好的控制效果[16]。
本文的手勢(shì)識(shí)別的模型預(yù)測(cè)采用反饋校正的方法實(shí)現(xiàn)閉環(huán)回路[17]。反饋的關(guān)鍵是利用可測(cè)量的系統(tǒng)狀態(tài)信息,對(duì)原預(yù)測(cè)系統(tǒng)進(jìn)行校正。
基于手部關(guān)鍵點(diǎn)的手勢(shì)分類(lèi)識(shí)別由三個(gè)關(guān)鍵步驟組成,分別是:獲取二維角度、判斷手指是否彎曲、圖像識(shí)別結(jié)果輸出。本文以手勢(shì)分類(lèi)識(shí)別為主線(xiàn)將其設(shè)計(jì)的主要思想進(jìn)行詳細(xì)分析,其手勢(shì)分類(lèi)識(shí)別的流程如圖2所示。
圖2 手勢(shì)分類(lèi)識(shí)別流程圖
1962年,Hu首次提出圖像識(shí)別的幾何矩理論,并證明了所提出的7個(gè)矩對(duì)圖像的平移、旋轉(zhuǎn)和比例變化均保持不變,再根據(jù)Hu氏理論,通過(guò)各種不同級(jí)別的幾何矩的數(shù)學(xué)組合,得到7個(gè)特征量。
在識(shí)別中主要采用模板匹配法,將輸入圖像與模板(點(diǎn)、曲線(xiàn)或形狀)匹配,并根據(jù)匹配相似性進(jìn)行分類(lèi)。坐標(biāo)距離、點(diǎn)集距離等,輪廓邊緣匹配、彈性圖匹配等都可以用于匹配度計(jì)算。模板匹配法的優(yōu)點(diǎn)是在小樣本的情況下速度非??欤瑢?duì)于光照、背景變化的適應(yīng)性較好,應(yīng)用范圍廣,但分類(lèi)精度不高,可以識(shí)別手勢(shì)的類(lèi)型有限,適用于小樣本、形狀變化小等情形。
定義了輸入手勢(shì)圖像與10 個(gè)模板手勢(shì)圖像中任一手勢(shì)之間的距離DM。
其中,Gi為輸入手勢(shì)的7 個(gè)矩特征分量,為模板手勢(shì)的Hu矩特征分量,ωi為各特征分量的權(quán)值,為了調(diào)節(jié)特征向量中各矩分量數(shù)量級(jí)的不一致,在實(shí)際實(shí)驗(yàn)中取ωi的值為104、1010、1015、1016。DM即為輸入手勢(shì)與模板手勢(shì)的特征距距離,DM越小表示越接近識(shí)別結(jié)果,即找到與輸入手勢(shì)特征距離最小的模板手勢(shì),那么這個(gè)手勢(shì)即為識(shí)別結(jié)果。
將手部分為21個(gè)關(guān)鍵點(diǎn),如圖3所示。定義21個(gè)關(guān)鍵點(diǎn)進(jìn)行二維向量的角度計(jì)算,并且計(jì)算得到大拇指、食指、中指、無(wú)名指、小拇指五個(gè)手指的角度。
圖3 手部21個(gè)關(guān)鍵點(diǎn)
其中二維角度計(jì)算的具體算法步驟如下:首先設(shè)置兩個(gè)向量v1,v2并對(duì)兩個(gè)向量的x,y軸賦予初始值;然后對(duì)兩個(gè)向量運(yùn)算后的結(jié)果取反余弦弧度值和角度值。再對(duì)特定的手指進(jìn)行相應(yīng)的維度計(jì)算,最后將得到的結(jié)果替換第一步中設(shè)置的兩個(gè)向量的初始值,進(jìn)行相應(yīng)的角度求解,從而得到5個(gè)手指的相應(yīng)角度值。
在識(shí)別過(guò)程中每一個(gè)手指都最多有兩個(gè)狀態(tài),也就是彎和直。通過(guò)對(duì)不同手指是否彎曲進(jìn)行具體判決,并將五個(gè)手指不同的組合方式表達(dá)出不同意思。因此,所有可能的情況共計(jì):25=32 種。
經(jīng)過(guò)查閱相關(guān)手語(yǔ)資料[18],發(fā)現(xiàn)其中有16種組合是絕大多數(shù)群體所通用的手勢(shì),經(jīng)過(guò)識(shí)別之后在大眾生活中有較高的辨識(shí)度,可以進(jìn)行相對(duì)廣泛的應(yīng)用,表1 列出16 種手勢(shì)的中文含義、手指對(duì)應(yīng)彎直狀態(tài)。其手勢(shì)如圖4所示。
表1 識(shí)別手勢(shì)匯總表
圖4 手勢(shì)識(shí)別圖像
判斷是否彎曲,要定義相對(duì)應(yīng)的閾值,超過(guò)某個(gè)閾值就會(huì)判定為改變狀態(tài)。
余下16種手指彎直組合,是當(dāng)前社會(huì)中使用不太廣泛、群眾接受度不高的手勢(shì);但是仍然具有識(shí)別價(jià)值,在人工智能快速發(fā)展的背景下,豐富交互體驗(yàn)顯得尤為重要;在手勢(shì)進(jìn)行自定義識(shí)別的過(guò)程中,可靈活定義業(yè)務(wù)場(chǎng)景中需要用到的手勢(shì),并且也可以通過(guò)機(jī)器認(rèn)定的某些特性手勢(shì)進(jìn)行一些便捷操作和進(jìn)程控制。
使用者在鏡頭前擺出相關(guān)的手勢(shì)后,算法進(jìn)行檢測(cè),直到失去對(duì)手的跟蹤為止,初始狀態(tài)識(shí)別像素點(diǎn)上的基本信息,之后對(duì)原始圖像點(diǎn)的信息進(jìn)行綜合處理[19]。
計(jì)算機(jī)讀取輸入的圖像信息,在每個(gè)輸入圖像上運(yùn)行即進(jìn)行目標(biāo)檢測(cè),完成畫(huà)面捕捉,將捕捉的BGR格式圖像轉(zhuǎn)換為RGB 格式圖像。從RGB 格式圖像中提取使用者的手勢(shì),與手勢(shì)庫(kù)中手勢(shì)進(jìn)行對(duì)比,將識(shí)別結(jié)果返回到窗口,完成圖像識(shí)別。
在其中要設(shè)置手部檢測(cè)的最小置信度值,大于這個(gè)數(shù)值被認(rèn)為是成功的檢測(cè),默認(rèn)為0.5;同時(shí)還有目標(biāo)跟蹤模型的最小置信度值,大于這個(gè)數(shù)值將被視為已成功跟蹤的手部,這里也默認(rèn)為0.5。這里采用視頻流的方法來(lái)進(jìn)行圖像結(jié)果的輸出。
本次實(shí)驗(yàn)使用的計(jì)算機(jī)系統(tǒng)是windows10 運(yùn)行環(huán)境使用PyCharm社區(qū)版。
通過(guò)對(duì)10 名實(shí)驗(yàn)者每個(gè)手勢(shì)進(jìn)行30 次識(shí)別測(cè)試,獲得部分手勢(shì)識(shí)別結(jié)果數(shù)據(jù),將數(shù)據(jù)進(jìn)行統(tǒng)計(jì)與分析計(jì)算,獲得所定義手勢(shì)的平均識(shí)別率。手勢(shì)識(shí)別結(jié)果如表2所示。
表2 手勢(shì)識(shí)別結(jié)果
文獻(xiàn)[21]基于人體膚色的方法進(jìn)行的實(shí)時(shí)手勢(shì)識(shí)別,在復(fù)雜背景下容易跟丟,導(dǎo)致識(shí)別不理想。本文所提方法,在實(shí)際的環(huán)境中手勢(shì)識(shí)別成功率平均值在94.5%以上,基于手部關(guān)鍵點(diǎn)的二維向量角度精準(zhǔn),識(shí)別結(jié)果可信度高。該方法也存在手勢(shì)動(dòng)作不標(biāo)準(zhǔn)造成識(shí)別結(jié)果錯(cuò)誤的缺點(diǎn)。
本文是通過(guò)條件判斷組合來(lái)實(shí)現(xiàn)手勢(shì)的定義。在計(jì)算手勢(shì)角度值時(shí),由于實(shí)際的手差異性和角度范圍,導(dǎo)致最終角度計(jì)算的誤差,所以無(wú)法對(duì)手部的細(xì)微變化進(jìn)行檢測(cè)。在實(shí)驗(yàn)檢測(cè)過(guò)程中可能會(huì)出現(xiàn)由于角度計(jì)算精確度不夠而導(dǎo)致識(shí)別錯(cuò)誤,將會(huì)使得多種相近的手勢(shì)輸出同樣的結(jié)果,從而影響手勢(shì)庫(kù)的手勢(shì)數(shù)量,降低了代碼的實(shí)用性。
本文首先對(duì)手勢(shì)識(shí)別的基本原理進(jìn)行介紹,之后介紹了手勢(shì)識(shí)別的基本流程,同時(shí)對(duì)識(shí)別代碼中所涉及的具體手勢(shì)進(jìn)行詳細(xì)的介紹。最后通過(guò)實(shí)驗(yàn)者進(jìn)行識(shí)別測(cè)試實(shí)驗(yàn),根據(jù)實(shí)驗(yàn)數(shù)據(jù)分析出最終識(shí)別效果,以及目前該方法識(shí)別失敗的可能原因與局限性。
手勢(shì)識(shí)別作為機(jī)器與人類(lèi)交互的自然方式,應(yīng)用廣泛。下一步工作將開(kāi)展基于深度學(xué)習(xí)的手勢(shì)識(shí)別,進(jìn)一步提高手勢(shì)識(shí)別的成功率,做硬件移植應(yīng)用,并在保證成功率的前提下減少高計(jì)算成本和運(yùn)行時(shí)間,減少手勢(shì)識(shí)別的局限性。