肖 金,翟 倩,陳永樂(lè),張 彬,陳偉全,嚴(yán)繼超,李武初
(廣東工業(yè)大學(xué)華立學(xué)院,廣州 511325)
手部交互是目前計(jì)算機(jī)圖像處理中的重要研究?jī)?nèi)容。手語(yǔ)識(shí)別,社交互動(dòng),虛擬現(xiàn)實(shí)和增強(qiáng)現(xiàn)實(shí)中,手是人機(jī)交互的主要輸入設(shè)備[1-2]。目前的二維手部關(guān)鍵點(diǎn)識(shí)別及手部姿態(tài)追蹤相關(guān)研究已日趨成熟。如過(guò)去通過(guò)傳統(tǒng)圖像算法,如膚色分割,掌心分割等來(lái)實(shí)現(xiàn)手部區(qū)域的分割,但這種處理方法的依賴靜態(tài)的圖像處理,對(duì)圖像的彩色空間(RGB,HSI)等要求甚高。其次是依賴特征點(diǎn)提出,通過(guò)提出手部相關(guān)特征進(jìn)行識(shí)別,一旦手部特征缺失,識(shí)別準(zhǔn)確度就大幅下降[3]。并且這類傳統(tǒng)的手勢(shì)識(shí)別算法對(duì)雙手遮擋交互、障礙物遮擋、夜間、強(qiáng)光照等環(huán)境下的識(shí)別問(wèn)題難以解決。隨著人工智能的發(fā)展,越來(lái)越多的手勢(shì)識(shí)別算法引入了深度神經(jīng)網(wǎng)絡(luò),通過(guò)各種環(huán)境下采集的數(shù)據(jù)集進(jìn)行訓(xùn)練,大幅度提高了在遮擋,日夜光線等苛刻環(huán)境下的識(shí)別準(zhǔn)確度,由此二維的手部追蹤算法日趨完善[4-5]。但是二維的手部追蹤僅有兩個(gè)維度的信息,交互僅停留在平面階段,從而無(wú)法實(shí)現(xiàn)在空間中對(duì)手部的位置進(jìn)行定位,而許多手部的交互動(dòng)作是縱深的,如手語(yǔ)交流中的許多動(dòng)作,影音娛樂(lè)中的動(dòng)作捕捉,虛擬現(xiàn)實(shí)中的交互等,二維手部追蹤中缺失的第三維度信息就難以解決這些問(wèn)題。而且通過(guò)二維的圖像去預(yù)測(cè)三維的手部姿態(tài)非常困難,因?yàn)槭植康哪w色相似,從三維空間中辨認(rèn)手部關(guān)鍵點(diǎn)非常困難,其次手部動(dòng)作中非常容易產(chǎn)生遮擋問(wèn)題[6-8]。許多非視覺(jué)的研究中研究采用慣性傳感器解決遮擋問(wèn)題,但在普通RGB相機(jī)中就非常困難[9]。
由于實(shí)現(xiàn)具備空間定位及SLAM 信息的三維手部模型重建需要三維度數(shù)據(jù),而普通的RGB 相機(jī)僅能獲取二維數(shù)據(jù)。本文對(duì)普通RGB相機(jī)如何實(shí)現(xiàn)二維升三維的重建及對(duì)某一特征的識(shí)別與追蹤進(jìn)行研究,從而實(shí)現(xiàn)了三維視覺(jué)手部追蹤。
圖1 神經(jīng)網(wǎng)絡(luò)架構(gòu)圖
如圖1所示,整個(gè)神經(jīng)網(wǎng)絡(luò)由3個(gè)網(wǎng)絡(luò)塊構(gòu)建成,輸入的圖像在手部位置分割網(wǎng)絡(luò)中定位手部在整個(gè)圖像中的位置,然后將輸出圖像經(jīng)過(guò)裁剪和尺寸變換并將手部位置放大輸入到下層的二維手部關(guān)鍵點(diǎn)識(shí)別網(wǎng)絡(luò)中。放大后的手部圖輸入到二維手部關(guān)鍵點(diǎn)識(shí)別網(wǎng)絡(luò)中,經(jīng)過(guò)計(jì)算輸出圖像中的手部21 個(gè)骨骼關(guān)鍵點(diǎn)的位置,在手勢(shì)識(shí)別的相關(guān)研究中,得出通過(guò)手部21 個(gè)關(guān)鍵點(diǎn)即可確定手部的位置。第3 層的二維轉(zhuǎn)三維網(wǎng)絡(luò)是整個(gè)神經(jīng)網(wǎng)絡(luò)的核心,它需要兩個(gè)輸入:第一個(gè)輸入是原圖像通過(guò)雙目立體匹配算法計(jì)算后轉(zhuǎn)換的深度圖,圖像中包含深度數(shù)據(jù),可以通過(guò)矩陣變換轉(zhuǎn)換成距離信息;第二個(gè)輸入是二維手部關(guān)鍵點(diǎn)識(shí)別的結(jié)果。通過(guò)兩個(gè)輸入,將手部關(guān)鍵點(diǎn)結(jié)果賦值在深度圖上,輸出21個(gè)關(guān)鍵點(diǎn)的深度信息,然后在網(wǎng)絡(luò)中進(jìn)行匹配運(yùn)算,預(yù)測(cè)在三維空間中最有可能的關(guān)鍵點(diǎn)坐標(biāo)位置(xi,yi,zi),然后將這些坐標(biāo)位置通過(guò)矩陣變換進(jìn)行三維重建,得到三維空間中的手部位置。
手部位置分割網(wǎng)絡(luò)是圖像分割網(wǎng)絡(luò),原理主要是通過(guò)一些手部姿態(tài)數(shù)據(jù)訓(xùn)練集進(jìn)行訓(xùn)練,這些被當(dāng)成是圖像位置切割的樣本,在圖像輸入的時(shí)候,檢測(cè)輸入圖像中手部位置并將其分割出來(lái)。
該網(wǎng)絡(luò)中的輸入主要是經(jīng)普通圖像輸入后矩陣變換處理后的張量,數(shù)據(jù)類型為tf.float32,及訓(xùn)練中用于判斷真假的樣本權(quán)重train。網(wǎng)絡(luò)的輸出為輸入圖像中分割出來(lái)手部位置的得分圖,輸出得分最高的手部位置float32 張量,并且將其分割出來(lái)生成新圖像輸入到下層網(wǎng)絡(luò)中。
二維手部關(guān)鍵點(diǎn)識(shí)別網(wǎng)絡(luò)是圖像識(shí)別網(wǎng)絡(luò),原理主要是通過(guò)一些標(biāo)注好的帶關(guān)鍵點(diǎn)的二維手部姿態(tài)數(shù)據(jù)集進(jìn)行訓(xùn)練,讓網(wǎng)絡(luò)不僅可以識(shí)別手部圖像的關(guān)鍵點(diǎn),還可以從某個(gè)關(guān)鍵點(diǎn)的位置在推理出其他關(guān)鍵點(diǎn)的的位置可能性信息。從上層分割出來(lái)的手部位置圖輸入后,通過(guò)訓(xùn)練中用于判斷真假的樣本權(quán)重train 進(jìn)行檢測(cè),并且輸出二維手部關(guān)鍵點(diǎn)的得分圖,輸出每個(gè)得分最高,即置信度最高的關(guān)鍵點(diǎn)到下層網(wǎng)絡(luò)中。需要注意的是,這里輸出的得分圖為[B,256,256,21],包含手部骨骼21個(gè)關(guān)鍵點(diǎn)的得分。
二維升三維網(wǎng)絡(luò)是這個(gè)神經(jīng)網(wǎng)絡(luò)的核心。在得到手部21個(gè)關(guān)鍵點(diǎn)的位置及深度數(shù)據(jù)后,首先是根據(jù)這些數(shù)據(jù)判斷該手型是左手還是右手,通過(guò)訓(xùn)練中用于判斷真假的的樣本權(quán)重train 進(jìn)行檢測(cè),估計(jì)最有可能的空間手部三維姿態(tài),并且輸出標(biāo)準(zhǔn)化的三維坐標(biāo)點(diǎn),格式為[21,3],意為輸出21個(gè)關(guān)鍵點(diǎn)的三維坐標(biāo)。
如圖2 所示,硬件模塊由成像模塊,主板模塊及AI 芯片模塊組成。攝像頭模塊通過(guò)單目/雙目/TOF攝像頭采集圖像/視頻并且輸入到主板處理。算法模塊進(jìn)行算法運(yùn)算,該過(guò)程由AI 芯片模塊對(duì)其進(jìn)行加速,首先將原始圖像的手部位置分割出來(lái),輸入的圖像在手部位置分割網(wǎng)絡(luò)中定位手部在整個(gè)圖像中的位置,然后將輸出圖像經(jīng)過(guò)裁剪和尺寸變換并將手部位置放大輸入到下層的二維手部關(guān)鍵點(diǎn)識(shí)別網(wǎng)絡(luò)中,經(jīng)過(guò)計(jì)算輸出圖像中的手部21個(gè)骨骼關(guān)鍵點(diǎn)的位置,這與人體生理及運(yùn)動(dòng)學(xué)有關(guān),在手勢(shì)識(shí)別的相關(guān)研究中,得出通過(guò)手部21個(gè)關(guān)鍵點(diǎn)即可確定手部的位置。
第3 層的二維轉(zhuǎn)三維網(wǎng)絡(luò)是整個(gè)神經(jīng)網(wǎng)絡(luò)的核心,它需要兩個(gè)輸入:第一個(gè)輸入是原圖像通過(guò)雙目立體匹配算法計(jì)算后轉(zhuǎn)換的深度圖,圖像中包含深度數(shù)據(jù),可以通過(guò)矩陣變換轉(zhuǎn)換成距離信息;第二個(gè)輸入是二維手部關(guān)鍵點(diǎn)識(shí)別的結(jié)果。通過(guò)兩個(gè)輸入,將手部關(guān)鍵點(diǎn)結(jié)果賦值在深度圖上,輸出21個(gè)關(guān)鍵點(diǎn)的深度信息,然后在網(wǎng)絡(luò)中進(jìn)行匹配運(yùn)算,預(yù)測(cè)在三維空間中最有可能的關(guān)鍵點(diǎn)坐標(biāo)位置(xi,yi,zi),然后將這些坐標(biāo)位置通過(guò)矩陣變換進(jìn)行三維重建,得到三維空間中的手部位置。
圖2 硬件模塊設(shè)計(jì)
在公開(kāi)數(shù)據(jù)集上實(shí)驗(yàn)之前,這里先抽選了來(lái)自不同程度,不同環(huán)境下的一些圖片,這些圖片部分來(lái)源于純手部圖像,來(lái)自網(wǎng)絡(luò)的人像寫真,一些隨機(jī)搜索的包含手的圖像。從“相機(jī)角度”、“光源強(qiáng)度”、“膚色”、“復(fù)雜環(huán)境”、“手部遮擋”來(lái)測(cè)試該神經(jīng)網(wǎng)絡(luò)在應(yīng)對(duì)各種苛刻環(huán)境下的泛化性,為了排除可能會(huì)出現(xiàn)的偶然性和相似性,每組有3張程度因素從小到大的圖像集,一共7 組數(shù)據(jù),包含21 張測(cè)試圖。測(cè)試集的圖像數(shù)據(jù)如圖3所示。
圖3 測(cè)試集范例
為了驗(yàn)證實(shí)驗(yàn)結(jié)果,同時(shí)也為了方便觀察每一層神經(jīng)網(wǎng)絡(luò)輸出圖像是否滿足需求和及時(shí)觀察到可能出現(xiàn)的識(shí)別錯(cuò)誤,這里將每層神經(jīng)網(wǎng)絡(luò)輸出的結(jié)果都作為實(shí)驗(yàn)結(jié)果。測(cè)試集上的原圖經(jīng)過(guò)該三維手部追蹤神經(jīng)網(wǎng)絡(luò)中,首先經(jīng)過(guò)第一層“手部位置分割網(wǎng)絡(luò)”將手部位置從整張圖片中分割出來(lái),輸出到第二層“二維關(guān)鍵點(diǎn)識(shí)別網(wǎng)絡(luò)”中,通過(guò)分割出來(lái)的手部圖像,識(shí)別二維中的21個(gè)手部骨骼關(guān)鍵點(diǎn),并且為了方便可視化效果,通過(guò)人體關(guān)節(jié)點(diǎn)間的生理學(xué)連接,進(jìn)行matplotlib 畫圖連線,渲染出來(lái)。此時(shí)可看到二維圖像的識(shí)別效果。輸出的二維關(guān)鍵點(diǎn)結(jié)果及雙目立體匹配得到的該位置的深度信息將會(huì)輸出到第三層“二維轉(zhuǎn)三維”網(wǎng)絡(luò)中,通過(guò)該層網(wǎng)絡(luò)預(yù)測(cè)缺失的第三維度信息,最終經(jīng)過(guò)手掌根部root點(diǎn)確定,標(biāo)準(zhǔn)化坐標(biāo)處理等過(guò)程輸出在三維空間中的21個(gè)手部關(guān)鍵點(diǎn)三維坐標(biāo),通過(guò)matplotlib中的3D畫圖庫(kù),在三維空間中進(jìn)行生成。圖4所示為測(cè)試集的輸出效果圖。
圖4 范例實(shí)驗(yàn)結(jié)果
可以看到,在大部分約束條件下,該網(wǎng)絡(luò)的識(shí)別準(zhǔn)確率都比較可觀,除了一些手部信息缺失過(guò)多的圖像發(fā)生了關(guān)鍵點(diǎn)丟失,錯(cuò)亂等情況;同時(shí)也有部分圖像關(guān)鍵點(diǎn)位置不明確,稍微扭曲。因?yàn)檫@些測(cè)試集來(lái)源都大相徑庭,圖像的尺寸差異巨大,輸入到神經(jīng)網(wǎng)絡(luò)中的圖像最終會(huì)被縮放,裁剪成同一尺寸,這些圖像因?yàn)槟承┏叽绫壤年P(guān)系,經(jīng)過(guò)縮放后比例失調(diào),例如手掌變寬,手指壓長(zhǎng)等扭曲現(xiàn)象,因此關(guān)鍵點(diǎn)發(fā)生了位置不明確的問(wèn)題。
但在實(shí)時(shí)攝像頭測(cè)試中,因?yàn)閿z像頭輸入尺寸是每幀固定的,因此實(shí)時(shí)效果良好,整體實(shí)驗(yàn)效果可以基本滿足手部追蹤的效果,同時(shí),及時(shí)在某幀中發(fā)現(xiàn)識(shí)別錯(cuò)誤,關(guān)鍵點(diǎn)連線錯(cuò)亂等情況,在第三層中也會(huì)在預(yù)測(cè)過(guò)程中根據(jù)來(lái)自真實(shí)的三維數(shù)據(jù)進(jìn)行修正,簡(jiǎn)單來(lái)說(shuō),就是盡管手部識(shí)別效果異常“扭曲”、“不似人形”也會(huì)因?yàn)榈谌龑拥挠?xùn)練數(shù)據(jù)是來(lái)自真實(shí)的“手”,因此會(huì)強(qiáng)行將異常的數(shù)據(jù)轉(zhuǎn)換為正常數(shù)據(jù),不會(huì)出現(xiàn)在三維重建中手部形象“畸形”的情況出現(xiàn)。
由收集的測(cè)試數(shù)據(jù)集范例和公開(kāi)測(cè)試集的實(shí)驗(yàn)結(jié)果來(lái)看,可以看到,該網(wǎng)絡(luò)在應(yīng)對(duì)各種復(fù)雜條件下的泛化能力比較高,即使實(shí)驗(yàn)場(chǎng)景包含可能的各種條件約束,成功實(shí)現(xiàn)手部位置分割的成功率達(dá)到了78%,同時(shí)二維關(guān)鍵點(diǎn)識(shí)別達(dá)到60%,這相對(duì)第一層中必然是更低的,因?yàn)槭紫染W(wǎng)絡(luò)需要分割出手部的位置圖像,才能進(jìn)一步對(duì)其進(jìn)行關(guān)鍵點(diǎn)識(shí)別,雖然60%并不是十分優(yōu)秀的結(jié)果,但足以證明該網(wǎng)絡(luò)在應(yīng)對(duì)復(fù)雜環(huán)境下的能力,它包含的是圖像背景復(fù)雜,存在多個(gè)檢測(cè)角色,光源復(fù)雜,圖像存在關(guān)鍵位置遮擋等約束條件。而在三維重建中成功率達(dá)到了72%,即使在某幀中發(fā)現(xiàn)關(guān)鍵點(diǎn)識(shí)別錯(cuò)誤、連線錯(cuò)亂等情況,在第三層也會(huì)根據(jù)來(lái)自真實(shí)的已訓(xùn)練三維數(shù)據(jù)進(jìn)行修正。
進(jìn)一步分析觀察,簡(jiǎn)單背景(男性)的數(shù)據(jù)集中三層網(wǎng)絡(luò)的準(zhǔn)確率達(dá)到了90%、80%、86.7%,說(shuō)明該網(wǎng)絡(luò)的訓(xùn)練結(jié)果良好,應(yīng)對(duì)實(shí)驗(yàn)室簡(jiǎn)單背景環(huán)境的識(shí)別性能相對(duì)較高;而簡(jiǎn)單背景(女性)中三層網(wǎng)絡(luò)的識(shí)別準(zhǔn)確率達(dá)到了90%、80%、90%,這樣的對(duì)比結(jié)果也說(shuō)明了,該網(wǎng)絡(luò)應(yīng)對(duì)異性的能力是相似的,同時(shí)這兩組數(shù)據(jù)的相似性,也排除了簡(jiǎn)單背景(男性)中的實(shí)驗(yàn)結(jié)果的偶然性。因?yàn)檫@兩組數(shù)據(jù)的背景不一樣,足以驗(yàn)證該網(wǎng)絡(luò)在簡(jiǎn)單背景下的識(shí)別能力。
本文提出了一種從普通RGB圖像中預(yù)測(cè)三維空間手部姿態(tài)并實(shí)現(xiàn)實(shí)時(shí)手部追蹤的神經(jīng)網(wǎng)絡(luò)。這個(gè)神經(jīng)網(wǎng)絡(luò)分為三層,首先通過(guò)一個(gè)神經(jīng)網(wǎng)絡(luò)進(jìn)行手部位置的識(shí)別與分割,第二層網(wǎng)絡(luò)結(jié)構(gòu)基于上一層輸入的二維手部分割裁剪后的手型圖,這層的處理主要是實(shí)現(xiàn)識(shí)別二維圖像中的21個(gè)手部骨骼關(guān)鍵點(diǎn)。第三層網(wǎng)絡(luò)首先通過(guò)一個(gè)隱式的合成三維手部模型數(shù)據(jù)和三維手部數(shù)據(jù)集進(jìn)行訓(xùn)練,訓(xùn)練后的網(wǎng)絡(luò)模型就可以實(shí)現(xiàn)從二維的手部關(guān)鍵點(diǎn)中與前置訓(xùn)練的三維手部數(shù)據(jù)集進(jìn)行匹配,估計(jì)缺失的第三維度信息,這樣就可以獲得手部骨骼關(guān)鍵點(diǎn)的三維數(shù)據(jù),進(jìn)而可以通過(guò)OpenGL 或者M(jìn)atplotlib等進(jìn)行實(shí)時(shí)三維重建,將二維的手部追蹤進(jìn)行升維。簡(jiǎn)而言之,整個(gè)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)分為三層,最終的目的是從普通的RGB相機(jī)中實(shí)現(xiàn)三維的手部姿態(tài)估計(jì)。