本發(fā)明涉及圖像處理、物體檢索領(lǐng)域,尤其涉及一種基于深度殘差網(wǎng)絡(luò)的手勢(shì)識(shí)別方法。
背景技術(shù):
目前,基于視覺(jué)的手勢(shì)交互已經(jīng)被國(guó)內(nèi)外廣泛的研究,但由于手勢(shì)本身所具有的多義性、時(shí)空差異性以及手的高緯度、多自由度及視覺(jué)問(wèn)題本身的不適應(yīng)性,基于手勢(shì)識(shí)別的人工交互平臺(tái)一直是一個(gè)固有挑戰(zhàn)性的研究課題。該課題主要解決的核心點(diǎn)在于對(duì)手的形狀的識(shí)別和對(duì)手勢(shì)的跟蹤。在傳統(tǒng)方法上主要有兩個(gè)方向:(1)基于隱馬爾可夫鏈的方法:grobel從帶顏色手套的飾演者的記錄視頻中提取特征,采用隱馬爾夫模型(hiddenmarkovmodel,hmm)識(shí)別了261個(gè)鼓勵(lì)測(cè)繪,其正確率達(dá)到了91.3%;(2)基于幾何特征的手勢(shì)識(shí)別。但這兩種方法和之后所衍生出來(lái)的一些其他算法都極大程度上依賴于計(jì)算機(jī)的處理能力,而且在數(shù)據(jù)的擬合上存在很大的問(wèn)題,同時(shí)很難達(dá)到對(duì)于大數(shù)據(jù)的信息源進(jìn)行處理。
由于手具有高度時(shí)空性,以及手勢(shì)變換種類十分復(fù)雜,因此在訓(xùn)練過(guò)程中網(wǎng)絡(luò)結(jié)構(gòu)的好壞在很大程度上決定了訓(xùn)練出來(lái)的網(wǎng)絡(luò)模型對(duì)于手勢(shì)的識(shí)別精度。在人工智能迅速發(fā)展的今天,大部分人都采用深度學(xué)習(xí)中的cnn或者rcnn來(lái)對(duì)手勢(shì)識(shí)別進(jìn)行改進(jìn),在一定程度上提升了準(zhǔn)確率。但隨著cnn網(wǎng)絡(luò)的發(fā)展,尤其是vgg網(wǎng)絡(luò)的提出,在網(wǎng)絡(luò)層數(shù)增加到一個(gè)臨界點(diǎn)后梯度消失或彌散問(wèn)題隨之而來(lái),與此同時(shí)網(wǎng)絡(luò)精度達(dá)到飽和后迅速下降。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種基于深度殘差網(wǎng)絡(luò)的手勢(shì)識(shí)別方法,該方法能有效解決梯度彌散和網(wǎng)絡(luò)精度問(wèn)題,同時(shí)對(duì)于精度下降的問(wèn)題有效的進(jìn)行了遏制,降低了深度網(wǎng)絡(luò)的訓(xùn)練難度,極大的提升了手勢(shì)識(shí)別的精度,為之后手勢(shì)識(shí)別甚至圖像檢測(cè)、物體識(shí)別領(lǐng)域提供了一種新的解決方法;同時(shí)該方法通過(guò)輸入多維數(shù)據(jù),以保證手勢(shì)識(shí)別的精確度,而且對(duì)于輸入數(shù)據(jù)以及數(shù)據(jù)格式的普適性更加強(qiáng)大,有效解決了輸入的手勢(shì)數(shù)據(jù)只能為1維的局限。
為達(dá)上述目的,本發(fā)明所采用的技術(shù)方案為:
一種基于深度殘差網(wǎng)絡(luò)的手勢(shì)識(shí)別方法,其步驟包括:
步驟1.獲取手勢(shì)的原始數(shù)據(jù)信息,并將其進(jìn)行n點(diǎn)標(biāo)記得到2n維的原始標(biāo)簽數(shù)據(jù);其中n≥1;
步驟2.對(duì)上述原始數(shù)據(jù)信息及2n維的標(biāo)簽數(shù)據(jù)進(jìn)行預(yù)處理;
步驟3、將上述預(yù)處理后的原始數(shù)據(jù)信息與轉(zhuǎn)化為hdf5格式的2n維的的原始標(biāo)簽數(shù)據(jù)作為原始訓(xùn)練數(shù)據(jù),輸入到深度殘差網(wǎng)絡(luò)中訓(xùn)練網(wǎng)絡(luò)參數(shù),得到手勢(shì)識(shí)別模型;
步驟4、將待識(shí)別手勢(shì)數(shù)據(jù)做與步驟1)相同的n點(diǎn)標(biāo)記得到2n維的待識(shí)別標(biāo)簽數(shù)據(jù);
步驟5、對(duì)上述待識(shí)別手勢(shì)數(shù)據(jù)及2n維的標(biāo)簽數(shù)據(jù)進(jìn)行預(yù)處理,并將預(yù)處理后的手勢(shì)數(shù)據(jù)與轉(zhuǎn)化為hdf5格式的2n維的待識(shí)別標(biāo)簽數(shù)據(jù),輸入到上述手勢(shì)識(shí)別模型中進(jìn)行識(shí)別,得到識(shí)別結(jié)果。
進(jìn)一步地,所述手勢(shì)的原始數(shù)據(jù)信息與所述待識(shí)別手勢(shì)數(shù)據(jù)是指收集的各類手勢(shì)圖片。
進(jìn)一步地,所述原始數(shù)據(jù)信息、2n維的原始標(biāo)簽數(shù)據(jù)、待識(shí)別手勢(shì)數(shù)據(jù)和2n維的待識(shí)別標(biāo)簽數(shù)據(jù)進(jìn)行預(yù)處理,包括圖像正則化、先驗(yàn)條件約束、數(shù)據(jù)格式及對(duì)應(yīng)圖像轉(zhuǎn)換操作。
進(jìn)一步地,所述的預(yù)處理是指利用matlab將手勢(shì)圖片的大小進(jìn)行歸一化。
進(jìn)一步地,步驟3)中所述的構(gòu)建的深度殘差網(wǎng)絡(luò)具體如下:
所述的深度殘差網(wǎng)絡(luò)訓(xùn)練時(shí)采用自下上升的監(jiān)督學(xué)習(xí)方式,具體包括一輸入層、一初始卷積層、多個(gè)殘差模塊、一全連接層和一輸出層;
所述初始卷積層用于對(duì)輸入的原始訓(xùn)練數(shù)據(jù)進(jìn)行卷積;
所述多個(gè)殘差模塊用于提取上述卷積后的數(shù)據(jù)的卷積特征;
所述全連接層包括多個(gè)節(jié)點(diǎn),用于將上述卷積特征進(jìn)行分類。
更進(jìn)一步地,所述每個(gè)殘差模塊在一開(kāi)始分為一條主徑和一條捷徑,并在結(jié)束時(shí)重新疊加整合。
更進(jìn)一步地,在第一個(gè)殘差模塊前存在一個(gè)max-pooling(最大池化)操作,用于壓縮維度,減小卷積層數(shù)誤差造成估計(jì)均值的偏移,更多的保留紋理信息,提高模型的泛化能力;
在所述全連接層之后存在一mean-pooling(平均池化)操作,以降低鄰域大小受限造成的估計(jì)值方差增大所造成的的影響。
更進(jìn)一步地,在每個(gè)殘差模塊中的每個(gè)卷積層和池化層之后存在batchnormaliztion(批歸一化)操作,以使提取后的特征均值為0,方差為1。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下特點(diǎn):
第一,本發(fā)明采用的是普通手勢(shì)的rgb手勢(shì)圖片,在適用上具有很強(qiáng)的廣泛性。
第二,傳統(tǒng)的手勢(shì)識(shí)別是基于隱馬爾可夫鏈和基于幾何特征的手勢(shì)識(shí)別,數(shù)據(jù)運(yùn)算十分復(fù)雜,而且準(zhǔn)確率難以達(dá)到要求,而對(duì)于機(jī)器學(xué)習(xí)尤其是深度學(xué)習(xí)來(lái)說(shuō),通過(guò)卷積、池化、正則化等操作,將原本在源空間的特征變換到新的空間,實(shí)現(xiàn)高維到低維的降維效果,自動(dòng)地學(xué)習(xí)得到層次化的特征表示,從而更加有利于智能化的檢測(cè)和分類。同時(shí)手勢(shì)識(shí)別在處理數(shù)據(jù)方面由于信息源眾多,數(shù)據(jù)量巨大,人工方法早已不能滿足需求。在人工智能飛速發(fā)展的今天,深度學(xué)習(xí)無(wú)疑是解決這類問(wèn)題的一把利劍。
第三,一般來(lái)說(shuō),隨著網(wǎng)絡(luò)層數(shù)的增加,所得到的識(shí)別模型的精確度也越高,但隨著網(wǎng)絡(luò)層數(shù)的增加,梯度消失或者彌散的問(wèn)題也隨著而來(lái),這導(dǎo)致訓(xùn)練難以熟練。同時(shí),隨著網(wǎng)絡(luò)深度的增加,網(wǎng)絡(luò)精度達(dá)到飽和之后,會(huì)產(chǎn)生迅速下滑的現(xiàn)象,然而這并不是過(guò)擬合所導(dǎo)致的。除此之外,目前的網(wǎng)絡(luò)訓(xùn)練都采用反饋的訓(xùn)練方法即反向傳播的概念,通過(guò)對(duì)比輸出和標(biāo)簽之前的誤差,將誤差逐層向上反饋調(diào)整整個(gè)網(wǎng)絡(luò)的參數(shù)權(quán)重。而殘差有逐層遞減的特點(diǎn),在網(wǎng)絡(luò)層數(shù)足夠大時(shí),會(huì)發(fā)生權(quán)值無(wú)法調(diào)整,使網(wǎng)絡(luò)深度失去意義的現(xiàn)象。本發(fā)明在每個(gè)殘差模塊都增加了一條捷徑,并在捷徑中加了卷積等處理,而不是簡(jiǎn)單的一層卷積層,一層簡(jiǎn)單的卷積層雖然在一定程度上有助于殘差的向上傳播,但對(duì)于高精度作業(yè)來(lái)說(shuō)可能精度還是有所欠缺。而通過(guò)在捷徑中加入這些處理一方面有利于網(wǎng)絡(luò)對(duì)于手勢(shì)特征的提取,另一方面對(duì)于殘差在反向傳播時(shí)優(yōu)化能夠更加的明顯。因此,該捷徑使整個(gè)網(wǎng)絡(luò)的權(quán)值都能夠得以調(diào)整,達(dá)到整個(gè)深度殘差網(wǎng)絡(luò)達(dá)到全局最優(yōu)解,同時(shí)整個(gè)網(wǎng)絡(luò)泛化能力提升,得到精度更高效果更好的網(wǎng)絡(luò)模型。
第四,普通手勢(shì)數(shù)據(jù)輸入為1維數(shù)據(jù),而且由于leveldb和lmdb只能使用1維數(shù)據(jù)作為輸入,這樣經(jīng)過(guò)網(wǎng)絡(luò)獲得的信息不準(zhǔn)確,得到的結(jié)果也過(guò)于單一,而本發(fā)明采用的深度殘差網(wǎng)絡(luò)在數(shù)據(jù)處理上使用hdf5格式的數(shù)據(jù),其能夠支持多維數(shù)據(jù)輸入,且并不像現(xiàn)有技術(shù)使用分類的手勢(shì)圖片,這在手勢(shì)識(shí)別上還是首例,對(duì)于整個(gè)網(wǎng)絡(luò)以及之后網(wǎng)絡(luò)模型的應(yīng)用存在很強(qiáng)的普適性。同時(shí),本發(fā)明可使用多達(dá)152層的網(wǎng)絡(luò)結(jié)構(gòu),使得lossfunction(損失函數(shù))降到很小,使得精度能夠得到滿足。
附圖說(shuō)明
圖1是本發(fā)明基于深度殘差網(wǎng)絡(luò)的手勢(shì)識(shí)別方法的流程圖。
圖2是本發(fā)明手勢(shì)圖片標(biāo)記的具體示意圖。
圖3是本發(fā)明深度殘差網(wǎng)絡(luò)的總體結(jié)構(gòu)圖。
其中卷積層和殘差模塊括號(hào)內(nèi)三個(gè)數(shù)字分別表示輸入維數(shù),卷積核大小,步長(zhǎng);max-pooling和mean-pooling括號(hào)內(nèi)數(shù)字為卷積核大小和步長(zhǎng)。
圖4是本發(fā)明一實(shí)施例的殘差模塊內(nèi)部結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的上述特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉實(shí)施例,并配合所附圖作詳細(xì)說(shuō)明如下。
本發(fā)明提供一種基于深度殘差網(wǎng)絡(luò)的手勢(shì)識(shí)別方法,如圖1所示,該方法包括訓(xùn)練階段和識(shí)別階段;所述訓(xùn)練階段包括如下步驟:
第一步,獲取手勢(shì)的原始數(shù)據(jù)信息,其中本發(fā)明獲取了5000張作為手勢(shì)識(shí)別的初期數(shù)據(jù)庫(kù);且在初期收集各類手勢(shì)圖片后,對(duì)每張手勢(shì)圖片進(jìn)行n點(diǎn)標(biāo)記得到2n維的標(biāo)簽數(shù)據(jù),并將手勢(shì)圖片保存為jpg格式,其中n≥1,且n的取值主要由標(biāo)記人員來(lái)確定;本發(fā)明手勢(shì)圖片標(biāo)記的具體示意圖如圖2所示,該圖中取21個(gè)節(jié)點(diǎn)(即n=21)一方面是由于手具有21個(gè)主要關(guān)節(jié)節(jié)點(diǎn),另一方面是取上述節(jié)點(diǎn)能夠在手勢(shì)不明確的情況下(比如拳頭或者手背物體遮擋)提升手勢(shì)識(shí)別的精度,提高手勢(shì)識(shí)別的泛化能力。
第二步,對(duì)上述原始數(shù)據(jù)信息及42維的標(biāo)簽數(shù)據(jù)進(jìn)行預(yù)處理操作,包括圖像正則化、先驗(yàn)條件約束、數(shù)據(jù)格式及對(duì)應(yīng)圖像轉(zhuǎn)換等操作,以提升之后深度殘差網(wǎng)絡(luò)的擬合精度;進(jìn)一步說(shuō)明需要對(duì)手勢(shì)圖片進(jìn)行預(yù)處理,即利用matlab將手勢(shì)圖片的大小歸一化為256*256,以減小圖片不一致所帶來(lái)的誤差;同時(shí)42維標(biāo)簽數(shù)據(jù)轉(zhuǎn)換成hdf5格式,從而使之能夠作為輸入而輸入到深度殘差網(wǎng)絡(luò)中訓(xùn)練;
第三步,將5000張手勢(shì)圖片預(yù)處理后的數(shù)據(jù)及轉(zhuǎn)化為hdf5格式的42維的標(biāo)簽數(shù)據(jù)作為原始的訓(xùn)練數(shù)據(jù);
第四步,將上述訓(xùn)練數(shù)據(jù)輸入深度殘差網(wǎng)絡(luò)中訓(xùn)練網(wǎng)絡(luò)參數(shù)。所述深度殘差網(wǎng)絡(luò)主要是利用了y=f(x,{wi})+x,其中x表示經(jīng)過(guò)捷徑的輸出,wi表示本層的權(quán)重,f(x,{wi})為經(jīng)過(guò)主徑所得到的輸出,y即為主徑和捷徑得到的輸出之和。所述深度殘差網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,整個(gè)網(wǎng)絡(luò)有152層,圖3畫出的只是其中的一部分。在初始卷積層之后,分為50個(gè)殘差模塊。每個(gè)殘差模塊在一開(kāi)始分為一條主徑和一條捷徑,其中主徑上分為3個(gè)小模塊,前兩個(gè)模塊包含convolution、batchnormalization、scale和relu4層結(jié)構(gòu),而在最后模塊中只存在convolution、batchnormalization和scale3層結(jié)構(gòu),且3個(gè)模塊用于提取手勢(shì)的各類深層特征同時(shí)歸類;捷徑上只存在一個(gè)模塊(只包含convolution、batchnormalization和scale3層結(jié)構(gòu))或者可以不存在模塊,以方便訓(xùn)練時(shí)殘差向上傳播。其中convolution實(shí)現(xiàn)高維到低維的降維功能;batchnormalization使提取后的特征均值為0,方差為1;scale為處理偏置項(xiàng)和縮放因子;relu提取樣本特征。主徑和捷徑得到的特征在每個(gè)殘差模塊結(jié)束時(shí)重新經(jīng)過(guò)eltwise和relu疊加整合,進(jìn)入下一個(gè)階段。最后部分是1000的節(jié)點(diǎn),將之前的卷積特征進(jìn)行分類,以lossfunction的形式得出輸出結(jié)果。
請(qǐng)參考圖4,該圖為本發(fā)明一實(shí)施例的殘差模塊內(nèi)部結(jié)構(gòu)示意圖。在輸入特征層數(shù)為a,特征長(zhǎng)度為b的情況下,首先經(jīng)過(guò)步長(zhǎng)為2的max-pooling層,得到特征層數(shù)為a,特征長(zhǎng)度為b/2的輸入層。之后殘差模塊分為兩條路徑,其中主徑為3層卷積層,且卷積核大小分別為1*1、3*3、1*1,之后得到的特征層數(shù)為4a,特征長(zhǎng)度為b/2;捷徑為1層卷積層,卷積核大小為1*1,之后得到的特征層數(shù)為4a,特征長(zhǎng)度為b/2。將主徑得到的結(jié)果和捷徑得到的結(jié)果經(jīng)過(guò)融合層,得到的特征層數(shù)為4a,特征長(zhǎng)度為b/2。
在第一個(gè)殘差模塊前存在一個(gè)max-pooling的操作,用于壓縮維度,減小卷積層數(shù)誤差造成估計(jì)均值的偏移,更多的保留紋理信息,提高模型的泛化能力;在全連接層之后存在一mean-pooling操作,以降低鄰域大小受限造成的估計(jì)值方差增大所造成的的影響。
在每個(gè)殘差模塊中的每個(gè)卷積層和池化層之后存在batchnormaliztion,使得提取后的特征均值為0,方差為1,用于加速訓(xùn)練和優(yōu)化結(jié)果。
訓(xùn)練深度殘差網(wǎng)絡(luò)時(shí)采用自下上升的監(jiān)督學(xué)習(xí)方式,即先用預(yù)處理的圖片和數(shù)據(jù)作為輸入訓(xùn)練第一隱含層(即將其輸入到初始卷積層),訓(xùn)練時(shí)先學(xué)習(xí)第一隱含層的參數(shù);進(jìn)一步,由于網(wǎng)絡(luò)的限制、稀疏性約束以及先驗(yàn)條件的約束,使網(wǎng)絡(luò)結(jié)構(gòu)得到比數(shù)據(jù)本身更有表征能力的特征;在學(xué)習(xí)得到第n-1層后,將n-1層的輸出作為第n層的輸入,訓(xùn)練第n層,由此分別得到各層的參數(shù);對(duì)于本實(shí)施例采用152層隱含層的深度殘差網(wǎng)絡(luò),即將學(xué)習(xí)得到的前一隱含層的輸出作為下一隱含層的輸入,依次完成152層訓(xùn)練,以分別得到各隱含層的相應(yīng)參數(shù)。
第五步,保存調(diào)整后的參數(shù),得到手勢(shì)識(shí)別模型。
請(qǐng)繼續(xù)參考圖3,所述識(shí)別階段包括如下步驟:
第一步,將待識(shí)別手勢(shì)數(shù)據(jù)或者測(cè)試數(shù)據(jù)(1000張手勢(shì)圖片)作為來(lái)測(cè)試上述訓(xùn)練階段得到的手勢(shì)識(shí)別模型的準(zhǔn)確率,對(duì)上述手勢(shì)圖片進(jìn)行21點(diǎn)標(biāo)記得到共42維的標(biāo)簽數(shù)據(jù)并將手勢(shì)圖片保存為jpg格式;
第二步,對(duì)上述待識(shí)別手勢(shì)數(shù)據(jù)或者測(cè)試數(shù)據(jù)及42維的標(biāo)簽數(shù)據(jù)進(jìn)行預(yù)處理操作,包括圖像正則化、先驗(yàn)條件約束、數(shù)據(jù)格式及對(duì)應(yīng)圖像轉(zhuǎn)換等操作,以提升之后的深度殘差網(wǎng)絡(luò)的擬合精度;進(jìn)一步說(shuō)明需要對(duì)手勢(shì)圖片進(jìn)行預(yù)處理,即利用matlab將圖片的大小歸一化為256*256,同時(shí)42維標(biāo)簽數(shù)據(jù)轉(zhuǎn)換成hdf5格式,從而使之能夠作為輸入而輸入到上述手勢(shì)識(shí)別模型中進(jìn)行識(shí)別;
第三步,將上述預(yù)處理后的手勢(shì)數(shù)據(jù)或者測(cè)試數(shù)據(jù)及轉(zhuǎn)化為hdf5格式的42維的標(biāo)簽數(shù)據(jù)輸入到上述得到的手勢(shì)識(shí)別模型中進(jìn)行識(shí)別,得到識(shí)別結(jié)果。
以上實(shí)施僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,本領(lǐng)域的普通技術(shù)人員可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求書所述為準(zhǔn)。