本發(fā)明涉及計(jì)算機(jī)視覺與深度學(xué)習(xí)領(lǐng)域,具體涉及一種三維手勢姿態(tài)估計(jì)方法。
背景技術(shù):
近幾年,隨著虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)技術(shù)的逐漸普及以及不可估量發(fā)展前景,作為人機(jī)交互的一種重要手段,手勢識(shí)別技術(shù)一直受到計(jì)算機(jī)視覺領(lǐng)域的高度關(guān)注,由于人手關(guān)節(jié)較多、形狀較復(fù)雜、自由度較高且容易出現(xiàn)遮擋現(xiàn)象,迅速且精確的識(shí)別出手勢位置及手勢動(dòng)作一直是一個(gè)難題。
傳統(tǒng)的手勢姿態(tài)估計(jì)方法通??梢苑殖蓛煞N:基于傳感器和基于圖像?;趥鞲衅鞯氖謩葑藨B(tài)估計(jì)技術(shù),是指通過在人手掌及手指特定的部位固定加速度計(jì)、角速度計(jì)等傳感器,以通過所穿戴的傳感器設(shè)備獲取人手特定部位的位置與運(yùn)動(dòng)狀態(tài)信息,進(jìn)而通過運(yùn)用運(yùn)動(dòng)學(xué)的方法解算出人手手掌及手指的狀態(tài),從而達(dá)到手勢姿態(tài)估計(jì)的目的。這種方法由于要穿戴傳感器設(shè)備,對(duì)手勢檢測局限性很大,而且受傳感器本身精度與穿戴位置變化等因素的影響,通常檢測誤差會(huì)較大。另一種基于圖像的手勢姿態(tài)估計(jì)方法,通常是通過對(duì)rgb相機(jī)拍攝到的包含人手的圖像使用邊緣檢測、膚色檢測等基于邊緣或者區(qū)域檢測的方法,首先確定人手在圖像中的大致區(qū)域,進(jìn)而通過圖像分割等手段分割出手指、手腕等細(xì)節(jié)信息。由于普通相機(jī)拍攝到包含手的圖片,通常只能反映場景的平面信息,如果手指間出現(xiàn)遮擋,便無法識(shí)別出遮擋手指的動(dòng)作細(xì)節(jié),因此也存在較大誤差。
近年來,隨著深度學(xué)習(xí)在計(jì)算機(jī)視覺領(lǐng)域的應(yīng)用,也有不少人提出采用深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行手勢識(shí)別的方法,但這些方法仍存在諸多缺點(diǎn),例如:由于采集到的rgb圖像存在手部光線強(qiáng)弱差別、膚色差別等,識(shí)別的準(zhǔn)確度因此下降;所采用的卷積神經(jīng)網(wǎng)絡(luò)待訓(xùn)練的參數(shù)較多,訓(xùn)練和測試速度較慢。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種基于深度圖以及全卷積神經(jīng)網(wǎng)絡(luò)的三維手勢姿態(tài)估計(jì)方法,以克服現(xiàn)有的采用深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行手勢識(shí)別的方法所存在的識(shí)別精度不高、卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練參數(shù)多、訓(xùn)練和測試速度慢的問題。
本發(fā)明為達(dá)上述目的而提出的技術(shù)方案如下:
一種三維手勢姿態(tài)估計(jì)方法,包括以下步驟:
s1、獲取多張手勢深度圖,并對(duì)各手勢深度圖進(jìn)行手勢前景與背景的分割,以得到多張手勢前景圖并隨機(jī)分為訓(xùn)練集和測試集;
s2、按照一預(yù)定的手勢模型圖,構(gòu)建各手勢前景圖的實(shí)際標(biāo)簽圖,所述實(shí)際標(biāo)簽圖包含手勢前景圖中代表人手各參考辨識(shí)點(diǎn)的多個(gè)坐標(biāo)點(diǎn),每個(gè)坐標(biāo)點(diǎn)的值包含對(duì)應(yīng)的參考辨識(shí)點(diǎn)的坐標(biāo)值和深度值;
s3、選取訓(xùn)練集中的多張手勢前景圖輸入到一全卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行手勢特征的訓(xùn)練,以提取人手辨識(shí)點(diǎn)及其坐標(biāo)值和深度值,并對(duì)應(yīng)地輸出多個(gè)預(yù)測標(biāo)簽圖;
s4、對(duì)步驟s3中選取的各手勢前景圖,分別將各自的所述實(shí)際標(biāo)簽圖與所述預(yù)測標(biāo)簽圖進(jìn)行比較求偏差,并依據(jù)所述偏差更新所述全卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練參數(shù);
s5、重復(fù)步驟s3和s4以進(jìn)行不斷的迭代,直至所述偏差不再下降時(shí),保存當(dāng)前訓(xùn)練參數(shù)作為全卷積神經(jīng)網(wǎng)絡(luò)的最終參數(shù);其中,每迭代預(yù)定次數(shù),則選取測試集中的手勢前景圖輸入到所述全卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行測試;
s6、將待估計(jì)的手勢深度圖輸入到具有所述最終參數(shù)的全卷積神經(jīng)網(wǎng)絡(luò)中,輸出所述待估計(jì)的手勢深度圖所對(duì)應(yīng)的標(biāo)簽圖。
本發(fā)明提出的上述三維手勢姿態(tài)估計(jì)方法,將深度圖用于全卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,全卷積神經(jīng)網(wǎng)絡(luò)只包含線性的、參數(shù)少的卷積層,不包含非線性的、參數(shù)多的全連接層,本發(fā)明使用卷積層替代全連接層,使得需要訓(xùn)練的參數(shù)大大減少、訓(xùn)練速度提升,可以達(dá)到快速收斂的效果。經(jīng)過步驟s1至s5的訓(xùn)練所得到的全卷積神經(jīng)網(wǎng)絡(luò),即可用于三維手勢姿態(tài)的估計(jì),將待估計(jì)的手勢深度圖輸入到該具有最終參數(shù)的全卷積神經(jīng)網(wǎng)絡(luò)中,即可輸出對(duì)應(yīng)的標(biāo)簽圖,該標(biāo)簽圖即為三維手勢姿態(tài)估計(jì)的結(jié)果。因此采用本發(fā)明的三維手勢姿態(tài)估計(jì)方法,能夠快速、準(zhǔn)確地進(jìn)行手勢識(shí)別。
更進(jìn)一步地,所述估計(jì)方法還包括:將所述預(yù)測標(biāo)簽圖輸入到一反卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行逆向復(fù)原,以得到對(duì)應(yīng)的模擬手勢深度圖加入到所述訓(xùn)練集中;其中,所述反卷積神經(jīng)網(wǎng)絡(luò)具有與所述卷積神經(jīng)網(wǎng)絡(luò)完全對(duì)稱的架構(gòu)。本優(yōu)選的方案中,用于訓(xùn)練全卷積神經(jīng)網(wǎng)絡(luò)的深度圖,部分來源于反卷積神經(jīng)網(wǎng)絡(luò)所復(fù)原出的模擬手勢深度圖,而所復(fù)原出的模擬手勢深度圖具有更加簡潔的特征,因此在用于全卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時(shí),更容易提取特征,所得到的標(biāo)簽圖更加準(zhǔn)確,進(jìn)而使得全卷積神經(jīng)網(wǎng)絡(luò)收斂得更好,如此,通過多次迭代訓(xùn)練全卷積神經(jīng)網(wǎng)絡(luò)和反卷積神經(jīng)網(wǎng)絡(luò),不斷更新參數(shù),使得最終進(jìn)行三維手勢姿態(tài)估計(jì)時(shí),其估計(jì)結(jié)果更加接近真實(shí)手勢。
更進(jìn)一步地,所述全卷積神經(jīng)網(wǎng)絡(luò)包括卷積層和池化層,所述反卷積神經(jīng)網(wǎng)絡(luò)包括反卷積層和反池化層;其中,所述卷積層與所述反卷積層具有相同的卷積核尺寸和互逆的參數(shù);所述池化層和所述反池化層具有相同大小的池化區(qū)域和步長。本優(yōu)選的方案中,通過反卷積神經(jīng)網(wǎng)絡(luò)對(duì)全卷積神經(jīng)網(wǎng)絡(luò)的輸出進(jìn)行復(fù)原,在經(jīng)過池化層和反池化層后,可以大大減少原手勢深度圖中的干擾信息,從而復(fù)原的所述模擬手勢深度圖具有更加簡潔的特征,后續(xù)再輸入到全卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練時(shí),更容易提取特征,所得到的標(biāo)簽圖更加準(zhǔn)確,進(jìn)而使得全卷積神經(jīng)網(wǎng)絡(luò)收斂得更好。
更進(jìn)一步地,步驟s1具體包括:
s11、采用深度相機(jī)拍攝不同人的多張手勢深度圖并進(jìn)行仿射變換處理,以使所述多張手勢深度圖具有相同的尺寸;
s12、對(duì)步驟s11得到的手勢深度圖,采用隨機(jī)森林分類器進(jìn)行手勢前景與背景的分割,得到多張手勢前景圖;
s13、將步驟s12得到的多張手勢前景圖隨機(jī)分為數(shù)量較多的訓(xùn)練集和數(shù)量較少的測試集。
更進(jìn)一步地,步驟s5中進(jìn)行測試的具體過程是:選取測試集中的部分手勢前景圖作為測試圖片,輸入到所述全卷積神經(jīng)網(wǎng)絡(luò)中,對(duì)應(yīng)輸出測試圖片的預(yù)測標(biāo)簽圖;將測試圖片的預(yù)測標(biāo)簽圖與對(duì)應(yīng)的實(shí)際標(biāo)簽圖進(jìn)行比較求偏差,以評(píng)價(jià)全卷積神經(jīng)網(wǎng)絡(luò)當(dāng)前的訓(xùn)練效果。事先將手勢深度圖分為訓(xùn)練集和測試集,訓(xùn)練集用于訓(xùn)練網(wǎng)絡(luò),而測試集用于測試網(wǎng)絡(luò)的準(zhǔn)確度,采用測試集中的深度圖訓(xùn)練了一定的次數(shù)后,可以對(duì)網(wǎng)絡(luò)進(jìn)行測試,以模擬實(shí)際中使用該網(wǎng)絡(luò)去識(shí)別新的手勢深度圖,從而來評(píng)價(jià)目前的網(wǎng)絡(luò)訓(xùn)練效果如何,以指導(dǎo)后續(xù)的訓(xùn)練。
更進(jìn)一步地,所述預(yù)定的手勢模型圖繪示有標(biāo)注出所述參考辨識(shí)點(diǎn)的人手模型,所述參考辨識(shí)點(diǎn)至少包括手指關(guān)節(jié)點(diǎn)、指尖點(diǎn)、手腕關(guān)鍵點(diǎn)以及手掌中心點(diǎn)。
更進(jìn)一步地,步驟s2中的所述坐標(biāo)值為二維坐標(biāo)值。
更進(jìn)一步地,步驟s4中所述偏差為error,計(jì)算方法如下:
j'為預(yù)測標(biāo)簽圖中坐標(biāo)點(diǎn)ji'的集合,由(j1',j2',…,jn')構(gòu)成,ji'=(xi',yi',di');
j為實(shí)際標(biāo)簽圖中坐標(biāo)點(diǎn)ji的集合,由(j1,j2,…,jn)構(gòu)成,ji=(xi,yi,di);
上述n為坐標(biāo)點(diǎn)的數(shù)量,i∈1,2,…,n;x、y為橫、縱坐標(biāo),d為深度值;依據(jù)所述偏差更新所述全卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練參數(shù)的方法為:
附圖說明
圖1是本發(fā)明一種優(yōu)選的三維手勢姿態(tài)估計(jì)方法的流程圖;
圖2是本發(fā)明全卷積神經(jīng)網(wǎng)絡(luò)的示意圖;
圖3是本發(fā)明反卷積神經(jīng)網(wǎng)絡(luò)的示意圖;
圖4是手勢模型圖。
具體實(shí)施方式
下面結(jié)合附圖和優(yōu)選的實(shí)施方式對(duì)本發(fā)明作進(jìn)一步說明。
本發(fā)明的具體實(shí)施方式提出了一種三維手勢姿態(tài)估計(jì)方法,該估計(jì)方法包括以下步驟s1至s6:
s1、獲取多張手勢深度圖,并對(duì)各手勢深度圖進(jìn)行手勢前景與背景的分割,以得到多張手勢前景圖并隨機(jī)分為訓(xùn)練集和測試集。步驟s1的具體過程包括:采用深度相機(jī)拍攝不同人的多張手勢深度圖并進(jìn)行仿射變換處理,以使所述多張手勢深度圖具有相同的尺寸;采用隨機(jī)森林分類器進(jìn)行手勢前景與背景的分割,得到多張手勢前景圖;將多張手勢前景圖隨機(jī)分為數(shù)量較多的訓(xùn)練集和數(shù)量較少的測試集。
s2、按照一預(yù)定的手勢模型圖,構(gòu)建各手勢前景圖的實(shí)際標(biāo)簽圖,所述實(shí)際標(biāo)簽圖包含手勢前景圖中代表人手各參考辨識(shí)點(diǎn)的多個(gè)坐標(biāo)點(diǎn),每個(gè)坐標(biāo)點(diǎn)的值包含對(duì)應(yīng)的參考辨識(shí)點(diǎn)的坐標(biāo)值和深度值。其中,預(yù)定的手勢模型圖的其中兩種示例如圖4中(a)和(b)所示,繪示有標(biāo)注出所述參考辨識(shí)點(diǎn)10的人手模型,所述參考辨識(shí)點(diǎn)包括但不限于手指關(guān)節(jié)點(diǎn)、指尖點(diǎn)、手腕關(guān)鍵點(diǎn)以及手掌中心點(diǎn)。構(gòu)建各手勢前景圖的實(shí)際標(biāo)簽圖,可以采用人工標(biāo)注,在每張手勢前景圖中按照如圖4中任一種模型標(biāo)注出各個(gè)參考辨識(shí)點(diǎn)及其坐標(biāo)值和深度值,然后置于一參考坐標(biāo)系中并去掉手模型的部分,只留下參考辨識(shí)點(diǎn),形成所述實(shí)際標(biāo)簽圖(實(shí)際標(biāo)簽圖中各坐標(biāo)點(diǎn)依據(jù)實(shí)際人手連接,即是一個(gè)人手的骨架)。
s3、選取訓(xùn)練集中的多張手勢前景圖輸入到一全卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行手勢特征的訓(xùn)練,以提取人手辨識(shí)點(diǎn)(通過人手辨識(shí)點(diǎn)可大致地描繪出手勢輪廓)及其坐標(biāo)值和深度值,并對(duì)應(yīng)地輸出多個(gè)預(yù)測標(biāo)簽圖。所述全卷積神經(jīng)網(wǎng)絡(luò)的示意圖如圖2所示,用于訓(xùn)練的手勢前景圖100(每次訓(xùn)練輸入多張手勢前景圖)作為輸入,手勢前景圖100進(jìn)入全卷積神經(jīng)網(wǎng)絡(luò)后,依次經(jīng)過卷積層201、池化層301、卷積層201、池化層302、……,卷積層和池化層的數(shù)量都不限于圖2中所示的。經(jīng)全卷積網(wǎng)絡(luò)后,輸出所對(duì)應(yīng)的預(yù)測標(biāo)簽圖400。
s4、對(duì)步驟s3中選取的各手勢前景圖,分別將各自的所述實(shí)際標(biāo)簽圖與所述預(yù)測標(biāo)簽圖進(jìn)行比較求偏差error,并依據(jù)所述偏差更新所述全卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練參數(shù)。所述偏差采用歐式距離進(jìn)行量化,具體的求解方法如下:
j'為預(yù)測標(biāo)簽圖中坐標(biāo)點(diǎn)ji'的集合,由(j1',j2',…,jn')構(gòu)成,ji'=(xi',yi',di');
j為實(shí)際標(biāo)簽圖中坐標(biāo)點(diǎn)ji的集合,由(j1,j2,…,jn)構(gòu)成,ji=(xi,yi,di);
上述n為坐標(biāo)點(diǎn)的數(shù)量,i∈1,2,…,n;x、y為橫、縱坐標(biāo),d為深度值;
依據(jù)所述偏差更新所述全卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練參數(shù)的方法為:
s5、重復(fù)步驟s3和s4以進(jìn)行不斷的迭代,直至所述偏差不再下降時(shí),即網(wǎng)絡(luò)的參數(shù)達(dá)到收斂,保存當(dāng)前訓(xùn)練參數(shù)作為全卷積神經(jīng)網(wǎng)絡(luò)的最終參數(shù);其中,每迭代預(yù)定次數(shù),則選取測試集中的手勢前景圖輸入到所述全卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行測試。步驟s5中進(jìn)行測試的具體過程是:選取測試集中的部分手勢前景圖作為測試圖片,輸入到所述全卷積神經(jīng)網(wǎng)絡(luò)中,對(duì)應(yīng)輸出測試圖片的預(yù)測標(biāo)簽圖;將測試圖片的預(yù)測標(biāo)簽圖與實(shí)際標(biāo)簽圖進(jìn)行比較求偏差,以評(píng)價(jià)全卷積神經(jīng)網(wǎng)絡(luò)當(dāng)前的訓(xùn)練效果。
s6、將待估計(jì)的手勢深度圖輸入到具有所述最終參數(shù)的全卷積神經(jīng)網(wǎng)絡(luò)中,輸出所述待估計(jì)的手勢深度圖所對(duì)應(yīng)的標(biāo)簽圖。經(jīng)過步驟s1至s5進(jìn)行網(wǎng)絡(luò)訓(xùn)練后,所得到的具有所述最終參數(shù)的全卷積神經(jīng)網(wǎng)絡(luò),即可作為本發(fā)明中進(jìn)行三維手勢姿態(tài)估計(jì)所用的估計(jì)模型,實(shí)際使用時(shí),只要將待估計(jì)的手勢深度圖輸入到該估計(jì)模型中,所輸出的標(biāo)簽圖即是估計(jì)結(jié)果,即可實(shí)現(xiàn)手勢識(shí)別。
在一種更加優(yōu)選的實(shí)施例中,所述估計(jì)方法的流程圖如圖1所示,還包括:將全卷積神經(jīng)網(wǎng)絡(luò)所輸出的預(yù)測標(biāo)簽圖輸入到一反卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行逆向復(fù)原,以得到對(duì)應(yīng)的模擬手勢深度圖,并將這些模擬手勢深度圖加入到所述訓(xùn)練集中,也用于全卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。
其中,如圖2和圖3所示,所述反卷積神經(jīng)網(wǎng)絡(luò)具有與所述卷積神經(jīng)網(wǎng)絡(luò)完全對(duì)稱的架構(gòu),所述全卷積神經(jīng)網(wǎng)絡(luò)包括卷積層(例如圖2中的201、202)和池化層(例如圖2中的301、302);具體地,進(jìn)行訓(xùn)練時(shí),手勢前景圖100經(jīng)過卷積層時(shí)具有如下的變化,隨之圖片也以像素為單位按照一定的規(guī)則增加/刪減,此為公知技術(shù),在此不進(jìn)行贅述。例如,假設(shè)輸入卷積層的尺寸為l*l,選取k個(gè)尺寸相同、像素值不同的方陣作為卷積核,則卷積核的尺寸可以表示為k*c*c,其中k為卷積核的數(shù)量,c為卷積核每一維參數(shù)的個(gè)數(shù)。每張手勢前景圖100分別與k個(gè)卷積核進(jìn)行卷積操作,分別得到k個(gè)尺寸完全相同,但像素點(diǎn)不完全相同的新圖片。新圖片具有新尺寸lc*lc大小如下公式所示:
lc*lc=(l-c+1)*(l-c+1)
如圖3所示,所述反卷積神經(jīng)網(wǎng)絡(luò)包括反卷積層601、602和反池化層501、502,但圖3僅是一種示例,網(wǎng)絡(luò)層數(shù)的多少僅僅是示例性的,并不用于限制本發(fā)明的保護(hù)范圍;其中,所述卷積層與所述反卷積層具有相同的卷積核尺寸和互逆的參數(shù);所述池化層和所述反池化層具有相同大小的池化區(qū)域和步長。圖片在網(wǎng)絡(luò)經(jīng)過池化層時(shí)具有如下的變化:假設(shè)圖片進(jìn)入池化層前的尺寸為l'*l'。池化即用一個(gè)尺寸為p*p的區(qū)域每次以f步長在圖片上滑動(dòng),每次滑動(dòng),在該區(qū)域中選出一個(gè)像素代表該區(qū)域的所有像素,則每張圖片經(jīng)過池化層后具有新尺寸lp*lp:
lp*lp=((l'-(f-p))/f)*((l'-(f-p))/f)
從圖2的全卷積神經(jīng)網(wǎng)絡(luò)輸出的預(yù)測標(biāo)簽圖400,作為輸入進(jìn)入圖3所示的反卷積神經(jīng)網(wǎng)絡(luò)中,依次經(jīng)過反池化層501、反卷積層601、反池化層502、反卷積層602、……,最終復(fù)原出模擬手勢深度圖700。所復(fù)原出的模擬手勢深度圖也加入到所述訓(xùn)練集中作為訓(xùn)練所述全卷積神經(jīng)網(wǎng)絡(luò)用的圖片。所復(fù)原出的模擬手勢深度圖具有更加簡潔的特征,因此在用于全卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時(shí),更容易提取特征,所得到的標(biāo)簽圖更加準(zhǔn)確,進(jìn)而使得全卷積神經(jīng)網(wǎng)絡(luò)收斂得更好,如此,通過多次迭代訓(xùn)練全卷積神經(jīng)網(wǎng)絡(luò)和反卷積神經(jīng)網(wǎng)絡(luò),不斷更新參數(shù),使得最終進(jìn)行三維手勢姿態(tài)估計(jì)時(shí),其估計(jì)結(jié)果更加接近真實(shí)手勢。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干等同替代或明顯變型,而且性能或用途相同,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。