郭 瑩,畢思曼
(沈陽(yáng)工業(yè)大學(xué)信息科學(xué)與工程學(xué)院,沈陽(yáng)110870)
近年來(lái),隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,人機(jī)交互逐漸滲透到人們的日常生活中。其中,手勢(shì)識(shí)別技術(shù)可以為人與機(jī)器提供更加自然且高效的交互方式,并在手語(yǔ)通信[1]、機(jī)器人[2]等領(lǐng)域中發(fā)揮重要作用。手勢(shì)可以分為靜態(tài)手勢(shì)和動(dòng)態(tài)手勢(shì),靜態(tài)手勢(shì)為某一時(shí)刻點(diǎn)上手的空間姿勢(shì),包括手型、朝向等,相對(duì)獨(dú)立,較為簡(jiǎn)單;動(dòng)態(tài)手勢(shì)大多指參數(shù)空間里的一條軌跡,增加了時(shí)間信息和動(dòng)作特征,但由于用戶每次動(dòng)作的幅度及速度不同,給識(shí)別造成了困難。為克服這一問(wèn)題,在此對(duì)動(dòng)態(tài)手勢(shì)的識(shí)別進(jìn)行了深入研究。根據(jù)動(dòng)態(tài)手勢(shì)采集方式的不同,識(shí)別方法可以分成基于設(shè)備的方法[3-4]和基于視覺(jué)的方法[5-6],前者通過(guò)設(shè)備上的傳感器來(lái)獲取手勢(shì)信息,相對(duì)而言成本昂貴,具有一定的局限性,難以大量推廣,且嚴(yán)格來(lái)說(shuō)不能算作是真正意義上的“手勢(shì)”識(shí)別。后者則直接以手勢(shì)作為輸入對(duì)象,通過(guò)攝像頭采集手勢(shì)信息,其優(yōu)點(diǎn)是對(duì)輸入設(shè)備要求低且較為便宜,簡(jiǎn)單易行,對(duì)用戶限制少,人手處于自然狀態(tài),使人能夠以自然的方式與機(jī)器進(jìn)行交互,是手勢(shì)識(shí)別技術(shù)發(fā)展的趨勢(shì)和目標(biāo)。故此研究?jī)?nèi)容為基于視覺(jué)的動(dòng)態(tài)手勢(shì)識(shí)別所展開(kāi)。
基于視覺(jué)的動(dòng)態(tài)手勢(shì)識(shí)別是指用攝像機(jī)采集包含動(dòng)態(tài)手勢(shì)的視頻圖像序列,然后分析提取圖像序列中的動(dòng)態(tài)手勢(shì),最后由計(jì)算機(jī)通過(guò)一定的模式識(shí)別技術(shù)對(duì)該動(dòng)態(tài)手勢(shì)進(jìn)行識(shí)別。目前對(duì)大多數(shù)動(dòng)態(tài)手勢(shì)的識(shí)別即為對(duì)手勢(shì)運(yùn)動(dòng)軌跡的識(shí)別,且由于手勢(shì)動(dòng)作與語(yǔ)音信號(hào)相似,因此語(yǔ)音識(shí)別中常用的方法被應(yīng)用到動(dòng)態(tài)手勢(shì)識(shí)別當(dāng)中。其中具有代表性的方法主要有隱式馬爾可夫模型[7-8](Hidden Markov Models,HMM)和動(dòng)態(tài)時(shí)間規(guī)整[9](Dynamic Time Warping,DTW)。HMM在訓(xùn)練階段需要大量的訓(xùn)練樣本數(shù)據(jù),并且需要通過(guò)反復(fù)計(jì)算才能得到模型參數(shù),計(jì)算量大;DTW則是一種非線性時(shí)間規(guī)整模式匹配方法,它無(wú)需大量的訓(xùn)練樣本,但由于沒(méi)有一個(gè)有效利用統(tǒng)計(jì)方法進(jìn)行訓(xùn)練的框架,因而算法適應(yīng)性不強(qiáng),當(dāng)樣本數(shù)量大時(shí)而不適合實(shí)時(shí)性識(shí)別。
在人類視覺(jué)系統(tǒng)稀疏機(jī)制的啟發(fā)下,稀疏表示可用較少的非零元素來(lái)揭示出事物的內(nèi)在結(jié)構(gòu)和本質(zhì)屬性,基于稀疏表示的分類識(shí)別算法受到了足夠的重視,在計(jì)算機(jī)視覺(jué)和模式識(shí)別中取得了良好的成果[10-12]。由于輸入信號(hào)可以由字典中的原子通過(guò)稀疏線性組合來(lái)判別性的表示,因此從訓(xùn)練樣本中學(xué)習(xí)出一個(gè)理想的字典在稀疏表示中顯得尤為重要。在過(guò)去的幾年里,已有許多字典學(xué)習(xí)算法被成功地提出,并應(yīng)用于各個(gè)領(lǐng)域中,如人臉識(shí)別[13]、圖像去噪[14]、聚類[15]、圖像超分辨率[16]等。雖然稀疏表示和字典學(xué)習(xí)已被應(yīng)用到多個(gè)領(lǐng)域,但卻甚少被應(yīng)用到基于視覺(jué)的動(dòng)態(tài)手勢(shì)識(shí)別當(dāng)中。對(duì)于動(dòng)態(tài)手勢(shì)識(shí)別,由于用戶每次動(dòng)作的幅度及速度都會(huì)變化,因此待測(cè)試的動(dòng)態(tài)手勢(shì)樣本一般很難通過(guò)原始訓(xùn)練樣本來(lái)很好地表示,然而字典學(xué)習(xí)可以有效針對(duì)這種變化進(jìn)行建模,從而使得測(cè)試樣本可以更好地被字典中的原子來(lái)表示。
在眾多的字典學(xué)習(xí)方法中,LC-KSVD(Label Consist K-SVD)已在很多領(lǐng)域中得到應(yīng)用[17-19],該方法旨在利用輸入信號(hào)的監(jiān)督信息來(lái)學(xué)習(xí)一個(gè)既具有表示能力又具有判別能力的字典;此法可以較好地適應(yīng)訓(xùn)練樣本的底層結(jié)構(gòu),并得到具有嚴(yán)格稀疏約束和判別性的稀疏編碼。本研究首次將該方法應(yīng)用于基于視覺(jué)的動(dòng)態(tài)手勢(shì)識(shí)別,有效地提高了識(shí)別準(zhǔn)確性并縮短了識(shí)別時(shí)間。
通過(guò)結(jié)合稀疏表示理論和LC-KSVD字典學(xué)習(xí)算法,實(shí)現(xiàn)了基于視覺(jué)的動(dòng)態(tài)手勢(shì)識(shí)別過(guò)程。所提出的識(shí)別方法有效地解決了手勢(shì)運(yùn)動(dòng)軌跡長(zhǎng)短不一的問(wèn)題,并通過(guò)增強(qiáng)手勢(shì)類別間的區(qū)分性和減少間內(nèi)差異性,提高了動(dòng)態(tài)手勢(shì)的識(shí)別效果,且縮短了識(shí)別時(shí)間,從而實(shí)現(xiàn)了魯棒的快速手勢(shì)識(shí)別。
具體的主要工作在于:
(1)在手勢(shì)分割階段,采用結(jié)合膚色信息和運(yùn)動(dòng)信息的方式實(shí)現(xiàn)手勢(shì)檢測(cè)與分割,有效地解決了臉部、手臂以及類膚色區(qū)域?qū)κ謩?shì)分割的干擾。
(2)在手勢(shì)跟蹤階段,在Camshift算法的基礎(chǔ)上加以改進(jìn),提出了基于背景差分和Kalman濾波器的Camshift手勢(shì)跟蹤算法。該方法將檢測(cè)到的手勢(shì)區(qū)域作為Camshift算法的初始搜索窗,從而實(shí)現(xiàn)了Camshift算法的全自動(dòng)跟蹤;此法在Camshift算法的基礎(chǔ)上,結(jié)合Kalman濾波器和背景差分法,有效地解決了當(dāng)手勢(shì)運(yùn)動(dòng)速度過(guò)快或者手與臉部相離較近時(shí)的跟丟問(wèn)題。
(3)在動(dòng)態(tài)手勢(shì)的字典構(gòu)造上,將每個(gè)手勢(shì)運(yùn)動(dòng)軌跡都表示成字典中的一個(gè)列向量,在表示過(guò)程中為實(shí)現(xiàn)平移不變性以及增強(qiáng)魯棒性,針對(duì)用戶每次動(dòng)作速度不同的問(wèn)題,做了線性插值處理;針對(duì)用戶每次動(dòng)作幅度不同的問(wèn)題,做了取均值處理。然后將處理完畢的手勢(shì)運(yùn)動(dòng)軌跡直接作為原始信號(hào)形成原始字典,利用字典的冗余性來(lái)捕捉原始信號(hào)的自然特征,省卻了傳統(tǒng)方法的特征提取過(guò)程。
(4)基于稀疏表示理論,提出一種基于字典學(xué)習(xí)的識(shí)別方法。該方法采用基于類別的字典學(xué)習(xí)方法來(lái)獲得初始化字典,使得字典在初始化階段便具有較強(qiáng)的表示能力;此法為每個(gè)動(dòng)態(tài)手勢(shì)添加一個(gè)唯一的類標(biāo)簽,并通過(guò)預(yù)定義的判別性稀疏編碼將標(biāo)簽信息與字典的原子項(xiàng)緊密關(guān)聯(lián),旨在利用標(biāo)簽信息來(lái)學(xué)習(xí)一個(gè)同時(shí)具有表示能力和分類判別能力的字典,以此加強(qiáng)手勢(shì)類別間的區(qū)分性,減少間內(nèi)的差異性,從而進(jìn)一步解決用戶在每次做動(dòng)作時(shí)其動(dòng)作幅度不同的問(wèn)題,提高了手勢(shì)識(shí)別的準(zhǔn)確性。
所提出的動(dòng)態(tài)手勢(shì)識(shí)別方法主要包含四個(gè)部分:手勢(shì)分割、手勢(shì)跟蹤、字典學(xué)習(xí)以及分類識(shí)別。具體過(guò)程如圖1所示。
圖1 動(dòng)態(tài)手勢(shì)識(shí)別過(guò)程
手勢(shì)識(shí)別的第一步便是將手從背景圖像中分離出來(lái),即手勢(shì)分割。在這一部分,采用計(jì)算機(jī)視覺(jué)中常用的結(jié)合膚色信息和運(yùn)動(dòng)信息的方法來(lái)進(jìn)行處理。圖2為手勢(shì)分割過(guò)程。
該過(guò)程包含三個(gè)部分,具體為:
圖2 手勢(shì)分割過(guò)程
1.對(duì)幀圖像做直方圖均衡化、中值濾波等預(yù)處理操作,以達(dá)到光照校正和去噪的目的。
2.融合基于YCbCr色彩空間上的膚色信息和混合高斯背景差分法的運(yùn)動(dòng)信息,得到粗糙的手勢(shì)區(qū)域。
3.對(duì)粗糙的手勢(shì)圖像,利用形態(tài)學(xué)中的開(kāi)閉操作及標(biāo)記連通區(qū)域等方法來(lái)填充孔洞以及去除小面積連通域,從而得到完整的手部區(qū)域。
該過(guò)程的核心部分是手勢(shì)區(qū)域的獲得,選擇的處理方式為將膚色信息與運(yùn)動(dòng)信息進(jìn)行結(jié)合。首先,在膚色檢測(cè)部分[20],先將RGB圖像轉(zhuǎn)換成YCbCr色彩空間,對(duì)于滿足77≤Cb≤127和133≤Cr≤173的像素值,判定為膚色區(qū)域,設(shè)置為1,否則為0。手勢(shì)分割過(guò)程如圖3所示:
圖3(a)為僅采用膚色信息的檢測(cè)結(jié)果,可以看到在檢測(cè)結(jié)果中仍存在人臉等膚色區(qū)域的干擾。故此采用背景差分法來(lái)獲得運(yùn)動(dòng)信息,并結(jié)合混合高斯模型(Gaussian Mixture Model,GMM)對(duì)背景圖像進(jìn)行實(shí)時(shí)更新,從而很好地抑制了背景中的動(dòng)態(tài)干擾[21]。圖3(b)為融合了膚色信息和運(yùn)動(dòng)信息的較為粗糙的手勢(shì)圖像。圖3(c)為經(jīng)過(guò)形態(tài)學(xué)處理后的完整手勢(shì)區(qū)域。最后將提取到的手勢(shì)位置信息返回給原始圖像,如此便實(shí)現(xiàn)了對(duì)原始圖像的手勢(shì)檢測(cè),返回結(jié)果如圖3(d)所示。
圖3 手勢(shì)分割過(guò)程實(shí)際效果圖
手勢(shì)跟蹤是指在每幀圖像序列中檢測(cè)到手勢(shì)的同時(shí)對(duì)其進(jìn)行準(zhǔn)確的定位。在這一部分,在傳統(tǒng)的Camshift跟蹤算法[22]的基礎(chǔ)上,提出了一個(gè)基于背景差分和Kalman濾波器的Camshift手勢(shì)跟蹤算法。該方法改進(jìn)的核心思想為:
1.Camshift算法是一個(gè)半自動(dòng)跟蹤算法,需要人為定位跟蹤目標(biāo)并初始化搜索窗口,這樣會(huì)在實(shí)際應(yīng)用中降低算法的效率并且引入主觀誤差。針對(duì)此問(wèn)題,將手勢(shì)進(jìn)入前景環(huán)境的第一幀圖像中的手勢(shì)檢測(cè)結(jié)果作為初始化搜索窗口(具體的檢測(cè)方法參見(jiàn)2.1節(jié)),有了初始化搜索窗口后便可以對(duì)后續(xù)圖像序列中的手勢(shì)進(jìn)行自動(dòng)跟蹤。圖4即為跟蹤結(jié)果,其中(a)為手勢(shì)未進(jìn)入環(huán)境的圖像,(b)為檢測(cè)到的手勢(shì)初始化搜索窗口,(c)為算法的自動(dòng)跟蹤結(jié)果。
圖4 手勢(shì)自動(dòng)化跟蹤結(jié)果
2.針對(duì)當(dāng)手勢(shì)運(yùn)動(dòng)速度較快或離臉部較近時(shí)的跟丟問(wèn)題,引入Kalman算法[23]以及背景差分法和膚色模型檢測(cè)。以Camshift算法迭代出的手勢(shì)質(zhì)心位置作為Kalman濾波器的觀測(cè)向量,再用Kalman濾波器來(lái)校正質(zhì)心位置,加強(qiáng)手勢(shì)跟蹤的魯棒性。但是當(dāng)手離臉部較近時(shí),CamShift算法通常會(huì)將人臉作為跟蹤對(duì)象,若再由CamShift算法輸出的結(jié)果作為觀測(cè)向量,顯然不可信,因此針對(duì)這種情況,加入了一個(gè)判定條件,即當(dāng)搜索窗內(nèi)的膚色面積發(fā)生劇烈改變時(shí),以初始化手勢(shì)搜索窗的方式來(lái)重新給出手勢(shì)區(qū)域,從而來(lái)保障手勢(shì)跟蹤的連續(xù)性和有效性。圖5給出了兩個(gè)視頻中的六幀跟蹤結(jié)果。
圖5 改進(jìn)的手勢(shì)跟蹤結(jié)果
手勢(shì)跟蹤模塊的流程示意圖如圖6所示。
圖6 手勢(shì)跟蹤流程圖
手勢(shì)在運(yùn)動(dòng)過(guò)程中往往伴隨著有意義的手勢(shì)運(yùn)動(dòng)和無(wú)意義的手勢(shì)運(yùn)動(dòng),而想要識(shí)別的其實(shí)是有意義的動(dòng)態(tài)手勢(shì),因此在實(shí)際的手勢(shì)跟蹤過(guò)程中,需要?jiǎng)澐殖鲇幸饬x的手勢(shì)運(yùn)動(dòng),即需要判定出有意義的動(dòng)態(tài)手勢(shì)的起止幀位置。
采用兩次靜止法來(lái)判定動(dòng)態(tài)手勢(shì)的起止幀位置。在連續(xù)三幀內(nèi)若手勢(shì)質(zhì)心點(diǎn)沒(méi)有移動(dòng),則標(biāo)記為kstart,繼續(xù)跟蹤,直到質(zhì)心再次靜止時(shí)標(biāo)記為kend,在kstart和kend間的動(dòng)作則認(rèn)為是一次有意義的動(dòng)態(tài)手勢(shì),如圖7即為所采用的確認(rèn)有意義動(dòng)態(tài)手勢(shì)起點(diǎn)和終點(diǎn)的方案。
圖7 動(dòng)態(tài)手勢(shì)的起止幀檢測(cè)方案
圖8為按照上述方式跟蹤得到的有意義的手勢(shì)運(yùn)動(dòng)軌跡示例。矩形標(biāo)示框?yàn)镃amshift算法的搜索窗口。kalman濾波器的預(yù)測(cè)結(jié)果,即跟蹤點(diǎn),可參見(jiàn)圖3~圖5中的十字標(biāo)識(shí)。
圖8 手勢(shì)軌跡跟蹤結(jié)果
基于稀疏表示的字典學(xué)習(xí)在著重于字典良好表示能力(或信號(hào)重構(gòu)能力)的同時(shí),也側(cè)重于字典的分類判別能力。稀疏表示分類可以看作是字典學(xué)習(xí)的一種特殊應(yīng)用形式,其中字典由原始訓(xùn)練數(shù)據(jù)生成。其中一個(gè)典型的字典學(xué)習(xí)算法[24],K-Singular Value Decomposition(K-SVD),旨在最小化重構(gòu)誤差并同時(shí)加強(qiáng)稀疏約束,但卻沒(méi)有考慮字典的分類判別能力,因此在K-SVD算法的基礎(chǔ)上,Discriminative K-SVD(D-KSVD)算法[25]和 LC-KSVD 算法[26]被相繼提出,來(lái)加強(qiáng)字典的分類能力和判別能力。這類方法的核心是將稀疏編碼直接作為分類器的特征來(lái)識(shí)別,并借由稀疏編碼的這種判別能力來(lái)傳播到整個(gè)字典當(dāng)中,而稀疏編碼的判別能力又取決于字典的質(zhì)量,因此這類方法的關(guān)鍵內(nèi)容即是如何完成對(duì)字典的構(gòu)造和學(xué)習(xí)。
對(duì)此,主要分為兩個(gè)步驟來(lái)完成:①動(dòng)態(tài)手勢(shì)的字典構(gòu)造;②基于LC-KSVD算法的字典學(xué)習(xí)。具體的過(guò)程如下:
第一步:動(dòng)態(tài)手勢(shì)的字典構(gòu)造
構(gòu)建冗余字典是整個(gè)稀疏表示理論中的第一步,也是十分重要的一步,若構(gòu)建出的原始冗余字典可以很好地表達(dá)出信號(hào)本身的特征,則會(huì)更有利于對(duì)信號(hào)的表示。首先將每個(gè)動(dòng)態(tài)手勢(shì)都表示為一個(gè)列向量,然后將所有這樣的列向量組成一個(gè)冗余字典即原始字典。具體表示過(guò)程如下:
假設(shè)將視頻轉(zhuǎn)換成圖像序列后共有N幀,每幀手勢(shì)的質(zhì)心點(diǎn)坐標(biāo)為(Xi,Yi),i=1,2,...,N,這樣便可得到兩個(gè)一維向量,X=[X1,X2,...,XN]和Y=[Y1,Y2,...,YN],為了實(shí)現(xiàn)平移不變性以及增強(qiáng)魯棒性,需要分別計(jì)算這兩個(gè)一維向量的均值,即和,之后再用X和Y分別減去各自的均值,如此便可得到兩個(gè)新的一維向量Xin=[X1-,X2-,...,XN-]和Yin=[Y1-,Y2-,...,YN-]。
由于不同人做的動(dòng)作其幅度和速度均不相同,這使得手勢(shì)軌跡向量具有不同的維數(shù)而字典矩陣要求所有的手勢(shì)軌跡向量具有相同的維數(shù),因而需要給向量Xin和Yin做線性插值處理,以獲得具有固定長(zhǎng)度M的手勢(shì)軌跡向量和,之后再將和交錯(cuò)寫(xiě)成一列得到具有固定長(zhǎng)度2M的一維向量v=,并以此來(lái)表示一個(gè)動(dòng)態(tài)手勢(shì)樣本。最后,將所有樣本按照上述方式組成一個(gè)字典,其中,C表示樣本類別的總數(shù),mC表示第C類手勢(shì)的樣本數(shù),vi,j表示第i類手勢(shì)中的第j個(gè)樣本。
第二步:基于LC-KSVD算法的字典學(xué)習(xí)
采用LC-KSVD算法進(jìn)行字典學(xué)習(xí),首先分別對(duì)每類動(dòng)態(tài)手勢(shì)訓(xùn)練樣本都通過(guò)K-SVD算法得到該類的過(guò)完備字典,然后再將這些學(xué)習(xí)過(guò)的字典拼接在一起組成一個(gè)冗余字典,即為初始化字典。這樣做的好處在于針對(duì)每個(gè)類進(jìn)行字典學(xué)習(xí)后構(gòu)成的過(guò)完備字典能更有效地表示該類,并每個(gè)類別的訓(xùn)練過(guò)程可以并行來(lái)完成;同時(shí)可以保證在最后形成的字典中的元素對(duì)每個(gè)類來(lái)說(shuō)都是均勻分布的。具體的學(xué)習(xí)過(guò)程如下所示:
1.基于類別的初始化字典學(xué)習(xí)
令G=[G1,G2,...,GC]表示 類動(dòng)態(tài)手勢(shì)的訓(xùn)練樣本,GC表示來(lái)自第C類手勢(shì)的所有樣本。對(duì)每類動(dòng)態(tài)手勢(shì)分別用K-SVD算法進(jìn)行字典學(xué)習(xí),得到對(duì)應(yīng)類別的子字典D1,D2,...,DC。K-SVD算法的目標(biāo)函數(shù)如下所示:
2.進(jìn)一步學(xué)習(xí)初始化字典
得到初始化字典D后,便可以進(jìn)入到下一步的字典學(xué)習(xí)當(dāng)中。首先,為每類動(dòng)態(tài)手勢(shì)即字典項(xiàng)都添加一個(gè)類別標(biāo)簽,第一類動(dòng)態(tài)手勢(shì)的所有樣本的類別標(biāo)簽為1,第二類動(dòng)態(tài)手勢(shì)的所有樣本的類別標(biāo)簽為2,依次類推,得到一個(gè)類標(biāo)簽矩陣H,在后續(xù)的字典學(xué)習(xí)中,字典項(xiàng)雖然被更新,但其標(biāo)簽將保持不變。然后,在接下來(lái)的字典學(xué)習(xí)中,引入稀疏編碼誤差項(xiàng)和分類器參數(shù)約束項(xiàng),則待優(yōu)化的目標(biāo)函數(shù)可以表示為:
其中,第二項(xiàng)為判別性稀疏編碼錯(cuò)誤項(xiàng),第三項(xiàng)為分類誤差項(xiàng),α是調(diào)節(jié)類標(biāo)簽一致正則化項(xiàng)與重構(gòu)誤差項(xiàng)的比例參數(shù),β是分類誤差項(xiàng)在目標(biāo)函數(shù)中的比重,W為分類器的參數(shù),是訓(xùn)練樣本G的判別性稀疏編碼,當(dāng)訓(xùn)練樣本列向量與字典原子項(xiàng)的類別標(biāo)簽一致時(shí),設(shè)置為1,否則為0。舉例說(shuō)明,假設(shè) D=[d1,d2,...,d6],G=[g1,g2,...,g6],g1、g2和 d1、d2同屬第一類,g3、g4和 d3、d4同屬第二類,g5、g6和d5、d6同屬第三類,則Q可以表示為:A為線性轉(zhuǎn)換矩陣,其作用是使得AX更加接近判別性稀疏編碼Q,進(jìn)而加強(qiáng)稀疏編碼的分類判別能力。
為便于優(yōu)化,將式(2)改寫(xiě)成式(4):
算法中的參數(shù)A和W需要進(jìn)行初始化,通過(guò)使用稀疏編碼矩陣X、判別性稀疏編碼Q以及類標(biāo)簽矩陣H按照下式進(jìn)行計(jì)算。
此時(shí),輸入待測(cè)試的動(dòng)態(tài)手勢(shì)樣本gi,先根據(jù)下式計(jì)算其對(duì)應(yīng)的稀疏編碼xi:
其中,l∈Rm為類標(biāo)簽向量。
采用普通的單目攝像頭獲取了10種類型的動(dòng)態(tài)手勢(shì),像素為1200萬(wàn),平均幀速率為30幀每秒,最大分辨率為720×1280。將攝像頭固定在電腦上,在攝像頭前做動(dòng)作,手勢(shì)視頻平均為5秒,保存為MP4格式。實(shí)驗(yàn)環(huán)境為64位的Windows 10操作系統(tǒng),研究平臺(tái)為MATLAB,版本為R2014a。
在實(shí)驗(yàn)中,所定義的數(shù)據(jù)庫(kù)共包含10種類型的動(dòng)態(tài)手勢(shì),具體的動(dòng)態(tài)手勢(shì)類別樣式如圖9所示。在收集過(guò)程中,首先按照預(yù)先設(shè)定的動(dòng)態(tài)手勢(shì)樣式在單目攝像機(jī)前執(zhí)行這10個(gè)動(dòng)作,其次將每個(gè)動(dòng)態(tài)手勢(shì)都記錄為視頻,然后按照3.2節(jié)所述的方法獲取有意義的手勢(shì)運(yùn)動(dòng)軌跡,再將這些軌跡按照3.3節(jié)所述的方法組合成一個(gè)冗余字典即動(dòng)態(tài)手勢(shì)樣本庫(kù),該樣本庫(kù)內(nèi)包括訓(xùn)練樣本庫(kù)和測(cè)試樣本庫(kù),且二者互不相關(guān)。圖8的示例也可作為此收集過(guò)程中的具體例子,從圖中可以看到,在實(shí)際應(yīng)用場(chǎng)合中的背景是復(fù)雜的,且受膚色影響較大,同時(shí)也存在因手勢(shì)運(yùn)動(dòng)速度較快而發(fā)生模糊的現(xiàn)象,此外,即使是同一類動(dòng)態(tài)手勢(shì),對(duì)于不同的樣本,其執(zhí)行的幅度及速度也不盡相同,因此可以認(rèn)為這個(gè)數(shù)據(jù)庫(kù)是有代表性的。
圖9 動(dòng)態(tài)手勢(shì)樣本集
在自定義的10類動(dòng)態(tài)手勢(shì)樣本集上做測(cè)試,將具有相似動(dòng)作的樣本視為同一類動(dòng)態(tài)手勢(shì),每一類動(dòng)態(tài)手勢(shì)包含140個(gè)樣本,總共1400份樣本,其中1000份樣本作為訓(xùn)練樣本集,其余的400份樣本作為測(cè)試樣本集。
實(shí)驗(yàn)主要分為兩個(gè)階段:①訓(xùn)練階段;②測(cè)試階段。首先在離線的訓(xùn)練階段中,采用LC-KSVD算法對(duì)訓(xùn)練樣本集進(jìn)行學(xué)習(xí),得到一個(gè)較小的且經(jīng)過(guò)優(yōu)化的過(guò)完備字典。其次在測(cè)試階段 (如3.4節(jié)所述),先輸入需測(cè)試的樣本,然后計(jì)算該測(cè)試樣本在已學(xué)習(xí)的過(guò)完備字典上的稀疏編碼,并將該稀疏編碼直接輸入到分類器當(dāng)中,從而得到識(shí)別結(jié)果。
在字典學(xué)習(xí)當(dāng)中,有兩個(gè)主要參數(shù):字典大小和稀疏因子。首先考慮字典的尺寸大小對(duì)識(shí)別算法的性能影響。表1為字典尺寸K取值分別為300、400和500時(shí)的識(shí)別率結(jié)果。從表中可以看出,隨著字典尺寸的增大(訓(xùn)練樣本數(shù)增多),算法的識(shí)別率也明顯提高,因?yàn)闃颖緮?shù)越多,其魯棒性也就越好,分類器的性能也得到加強(qiáng)。而該識(shí)別方法在字典尺寸較小時(shí)也可以獲得較高的識(shí)別率,這意味著在訓(xùn)練階段可以不需要大量的訓(xùn)練樣本,K的值越小,所構(gòu)成的冗余字典也越小,這樣可以減少時(shí)間復(fù)雜度的計(jì)算,也有利于手勢(shì)識(shí)別的實(shí)時(shí)性。
表1 不同字典尺寸下的識(shí)別率
其次,考慮稀疏因子T對(duì)識(shí)別率結(jié)果的影響。選用字典尺寸K=400來(lái)計(jì)算稀疏因子T分別為10、20和30時(shí)的識(shí)別率,其結(jié)果如表2所示,從表中可以看出,稀疏因子對(duì)手勢(shì)的識(shí)別結(jié)果影響不大。4.3 算法對(duì)比結(jié)果
表2 不同稀疏因子下的識(shí)別率
為驗(yàn)證LC-KSVD算法的識(shí)別性能,針對(duì)手勢(shì)數(shù)據(jù)集中的10類手勢(shì),每類手勢(shì)選取40份樣本組成測(cè)試集,并在字典尺寸為K=200/400/600/800/1000上進(jìn)行測(cè)試,通過(guò)與稀疏領(lǐng)域的SRC算法、KSVD算法以及D-KSVD算法相比較,來(lái)說(shuō)明LCKSVD算法的識(shí)別性能。為公平起見(jiàn),在各個(gè)算法中選取的參數(shù)均相同。對(duì)比結(jié)果如圖10所示。
圖10(a)為各個(gè)算法的識(shí)別率對(duì)比結(jié)果,可以看出,在基于視覺(jué)的動(dòng)態(tài)手勢(shì)識(shí)別中,LC-KSVD算法保持了較高的識(shí)別率,并且明顯優(yōu)于其他三種算法,其主要原因便是經(jīng)由LC-KSVD算法獲得的稀疏編碼具有更強(qiáng)的判別能力。
圖10(b)為各個(gè)算法的識(shí)別時(shí)間對(duì)比結(jié)果,可以看出,LC-KSVD的識(shí)別時(shí)間略短于其他三種算法。因?yàn)樽值鋵W(xué)習(xí)是在離線階段完成的,所以此識(shí)別時(shí)間是在測(cè)試階段產(chǎn)生的,即為求解稀疏編碼以及將稀疏編碼送入分類器所用的時(shí)間。字典的原子個(gè)數(shù)直接影響著稀疏編碼的求解時(shí)間,而由LC-KSVD算法學(xué)習(xí)出的字典原子數(shù)目會(huì)大幅度減少,因此提升了動(dòng)態(tài)手勢(shì)的識(shí)別速度。
圖10 動(dòng)態(tài)手勢(shì)集上的性能對(duì)比
為進(jìn)一步評(píng)估LC-KSVD算法的識(shí)別效果與實(shí)時(shí)性,通過(guò)與現(xiàn)存的識(shí)別算法HMM算法和DTW算法相比較來(lái)驗(yàn)證LC-KSVD算法的識(shí)別性能。比較結(jié)果如圖11所示。橫坐標(biāo)為訓(xùn)練樣本的數(shù)量,縱坐標(biāo)為各個(gè)識(shí)別算法所對(duì)應(yīng)的識(shí)別效果。可以看出,LC-KSVD算法明顯優(yōu)于另外兩種對(duì)比算法,保持了較高的識(shí)別率。此外,為驗(yàn)證LC-KSVD算法的實(shí)時(shí)性,首先在自定義的手勢(shì)集中選取了其中一個(gè)動(dòng)態(tài)手勢(shì),然后以200份動(dòng)態(tài)手勢(shì)作為訓(xùn)練樣本,并分別利用LC-KSVD算法、HMM算法和DTW算法在該訓(xùn)練樣本上識(shí)別這個(gè)動(dòng)態(tài)手勢(shì),最后通過(guò)對(duì)比這三種算法的識(shí)別時(shí)間來(lái)驗(yàn)證此方法的實(shí)時(shí)性。具體的識(shí)別時(shí)間如表3所示。
圖11 LC-KSVD與傳統(tǒng)算法的識(shí)別率比較
表3 同種手勢(shì)下的識(shí)別時(shí)間
針對(duì)傳統(tǒng)的基于視覺(jué)的動(dòng)態(tài)手勢(shì)識(shí)別中魯棒性不強(qiáng)、復(fù)雜的特征提取以及實(shí)時(shí)性問(wèn)題,提出了一種基于字典學(xué)習(xí)的動(dòng)態(tài)手勢(shì)識(shí)別方法。該方法直接對(duì)跟蹤到的手勢(shì)軌跡進(jìn)行操作,省卻了傳統(tǒng)方法的特征提取過(guò)程,并且可以隨時(shí)添加新的手勢(shì)類別以及刪除現(xiàn)有的類別。在自定義的10類動(dòng)態(tài)手勢(shì)集的數(shù)據(jù)庫(kù)上進(jìn)行測(cè)試,實(shí)驗(yàn)結(jié)果驗(yàn)證了所提出的識(shí)別方法的有效性。