朱慶杰,潘 航,陳顯軍,2,湛永松,楊明浩
(1.桂林電子科技大學(xué) 廣西可信軟件重點(diǎn)實(shí)驗(yàn)室,廣西 桂林 541004;2.桂林電子科技大學(xué) 廣西高校云計(jì)算與復(fù)雜系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,廣西 桂林 541004;3.桂林電子科技大學(xué) 廣西高校圖像圖形智能處理重點(diǎn)實(shí)驗(yàn)室,廣西 桂林 541004;4.中國科學(xué)院自動(dòng)化研究所,北京 100190)
手勢交互是一種常見的人機(jī)交互方式,也是一種簡單、自由的人機(jī)交互手段,其有著十分廣闊的應(yīng)用前景[1]。比如人與計(jì)算機(jī)通過手勢進(jìn)行交互時(shí),人在攝像頭下做出一系列手勢動(dòng)作,然后讓計(jì)算機(jī)去響應(yīng)。為了讓計(jì)算機(jī)學(xué)會(huì)并初步理解人們的手勢行為含義,首先必須要讓計(jì)算機(jī)理解每個(gè)手勢動(dòng)作的含義,比如拿起桌子上的杯子喝水這個(gè)動(dòng)作可以分解為“去”、“拿”、“移”這3個(gè)手勢動(dòng)作。這只是對(duì)手勢的初步理解,還有更精細(xì)的手部關(guān)節(jié)的理解等。本文主要研究的是面向人機(jī)交互時(shí)桌面環(huán)境背景下的常見人機(jī)交互手勢的初步理解。
手勢識(shí)別技術(shù)在人機(jī)交互領(lǐng)域有著廣泛的應(yīng)用。從交互設(shè)備來說,由最初典型的穿戴數(shù)據(jù)手套交互到如今的裸手交互,真正實(shí)現(xiàn)了從復(fù)雜、難學(xué)、低效到簡單、易學(xué)、高效的轉(zhuǎn)變。相關(guān)成果比如有學(xué)者利用Kinect相機(jī)實(shí)現(xiàn)簡單手語手勢識(shí)別,并取得了很高的精度[2];有學(xué)者基于隱馬爾可夫模型和模糊神經(jīng)網(wǎng)絡(luò)相結(jié)合的HMM-FNN模型來對(duì)動(dòng)態(tài)手勢識(shí)別[3];國外也有學(xué)者探究了新的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)(3D CNN),一般CNN模型只能處理2D圖像信息,他們建立了一個(gè)3D CNN模型,能同時(shí)學(xué)習(xí)時(shí)域和空域的信息[4]。不管是靜態(tài)手勢還是動(dòng)態(tài)手勢,有很多學(xué)者已經(jīng)做過相關(guān)的工作而且取得了不錯(cuò)的效果。而本文主要針對(duì)的是桌面背景下的人機(jī)交互環(huán)境,并探究了一種動(dòng)態(tài)手勢識(shí)別算法。桌面背景環(huán)境相對(duì)簡單,但受手勢運(yùn)動(dòng)的影響背景環(huán)境光線的變化會(huì)比較大。為此,本文首先對(duì)手勢圖像進(jìn)行預(yù)處理,拋棄背景信息及手部紋理信息的干擾,只保留手部形狀信息,并在此基礎(chǔ)上探究了一種算法融合了手勢的時(shí)序信息,最后基于深度神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)不同手勢的分類。
本文的算法流程如圖1所示。
其中,輸入端為實(shí)時(shí)視頻幀序列,在實(shí)時(shí)手勢識(shí)別中,因?yàn)橥ǔG闆r下兩幀之間的時(shí)間間隔非常短,沒必要對(duì)每一幀進(jìn)行處理,同時(shí)這樣也會(huì)造成性能浪費(fèi)。本文采取每兩幀處理一幀的方法,然后在獲取的幀序列中分割手勢區(qū)域。手的位置信息代表了手的空間特征,不同的手勢圖像序列則包含了手的時(shí)序特征。本文融合后的時(shí)空特征影像是一副灰度圖,其中手勢虛影的明暗程度代表了手勢的時(shí)序信息,手勢所在圖像中的位置代表了手勢的空間信息。根據(jù)構(gòu)造的動(dòng)態(tài)手勢時(shí)空特征影像,然后輸入卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練,最后根據(jù)訓(xùn)練后的模型對(duì)手勢進(jìn)行理解與分類。
圖1 手勢理解算法流程
為了使神經(jīng)網(wǎng)絡(luò)更好的識(shí)別不同手勢,排除其它干擾,本文采取高斯背景建模結(jié)合HSV膚色建模的方法去除背景信息,并且拋棄手部紋理信息,只保留手勢形狀信息。
在桌面背景環(huán)境下,手勢識(shí)別背景相對(duì)簡單,本文采用單高斯背景建模的方法對(duì)背景進(jìn)行建模。單高斯背景模型建模時(shí),背景圖像中固定位置像素點(diǎn)像素值的分布符合高斯分布
B(x,y)~N(μ,σ2)
(1)
式中:B(x,y)表示背景圖像中坐標(biāo)為(x,y)的點(diǎn)的像素值。單高斯背景建模一般分為兩步[5]。第一步,初始化背景圖像B(x,y),計(jì)算了一段時(shí)間內(nèi)若干視頻序列中每一像素點(diǎn)的平均灰度值μ及灰度值方差σ2。由此組成背景圖像B(x,y)。其中
(2)
(3)
第二步,更新背景圖像B(x,y),隨著時(shí)間增加,光線及背景場景很有可能會(huì)變化,背景圖像也需要及時(shí)更新。背景模型更新公式如式(4)
Bt(x,y)=(1-ρ)·Bt-1(x,y)+ρ·Ft(x,y)
(4)
Bt-1(x,y)表示t-1時(shí)刻背景圖像,F(xiàn)t(x,y)表示當(dāng)前幀,ρ表示背景更新率,用來反映背景圖像更新速度,值越大背景圖像更新越快。
當(dāng)使用單高斯背景模型時(shí),運(yùn)用背景相減法來分割前景。如式(5)所示,(x,y)表示圖像中坐標(biāo)為(x,y)的像素點(diǎn)的灰度值,使用當(dāng)前幀減去背景來判該點(diǎn)是否為前景
(5)
利用單高斯背景模型除去桌面環(huán)境背景實(shí)驗(yàn)結(jié)果如圖2所示。
圖2 左邊為原始圖像,右邊為使用單高斯背景模型去除背景后的圖像
根據(jù)實(shí)驗(yàn)結(jié)果可知,單高斯背景模型在本實(shí)驗(yàn)中并不能很理想的去除背景。由于手來回的移動(dòng),造成環(huán)境局部光線的變化,從而對(duì)背景的判斷產(chǎn)生一定影響。如圖2所示,手部下面光線較暗的背景區(qū)域并沒有有效的去除。
彩色圖像RGB顏色空間相關(guān)特性參見文獻(xiàn)[6,7],直接使用RGB模型來對(duì)特定顏色建模效果往往不盡人意。相比而言HSV(Hue,Saturation,Value)顏色空間3個(gè)分量之間的相關(guān)性比較低,與人的視覺感知更為接近。HSV顏色模型是由A. R. Smith創(chuàng)建的一種顏色空間,HSV顏色模型相關(guān)定義及特性詳細(xì)介紹參見文獻(xiàn)[7]。在HSV空間中,色調(diào)、飽和度以及亮度是分開的,每一種顏色都會(huì)對(duì)應(yīng)一個(gè)色調(diào)值,而且其不受亮度和飽和度的影響,這使得使用HSV空間對(duì)顏色建模有著先天的優(yōu)勢。相對(duì)于RGB空間,HSV空間能夠很好地滿足顏色的均勻、完整等特性。從RGB空間到HSV空間的變換如下:
首先將RGB歸一化,則R,G,B∈[0,1],RGB空間到HSV空間變換公式為
V=max(R,G,B)
(6)
(7)
(8)
通常情況下,彩色圖像的V值不會(huì)為零而使H無意義,且H通道決定了物體的色調(diào)信息,檢測膚色時(shí),我們只關(guān)注色調(diào),對(duì)飽和度S和亮度V不太關(guān)注,故本文只使用HSV色彩空間中H通道來迅速分割出手勢區(qū)域。
為了建立良好的膚色模型,有的學(xué)者從Internet上采集了亞洲及歐美人種的若干幅膚色圖像,建立的膚色模型,針對(duì)面部、手部、裸露的身體部位都取得了不錯(cuò)的分割效果。而本文的分割對(duì)象只限于特定環(huán)境下的手部,故為了達(dá)到更精準(zhǔn)的膚色分割效果,本文膚色圖像采集對(duì)象僅限于特定環(huán)境下的手部,比如不同的手勢動(dòng)作、不同的光線變化(早上、中午、晚上)、不同的實(shí)驗(yàn)環(huán)境(背景桌面的變化)等。本文采集了不同環(huán)境下的手部圖像共計(jì)88張,手動(dòng)裁剪出人手膚色區(qū)域113塊,共計(jì)6 007 466個(gè)像素。經(jīng)過計(jì)算統(tǒng)計(jì)得出這些像素的灰度平均值為128.95,RGB這3個(gè)通道的平均值分別為149.23、124.21、99.90。這里R,G,B∈[0,255]。將此結(jié)果轉(zhuǎn)換到HSV空間,觀察H通道直方圖分布如圖3所示。
圖3 采集的膚色像素中H通道分布直方圖
由圖中分布結(jié)果可以看出,大多數(shù)H值分布在0~60的范圍。由HSV到RGB空間變換公式可知H值分布在0~60范圍內(nèi)代表了正常情況下人體的正常膚色,而對(duì)于極少量的分布在其它區(qū)域的H值,考慮其極小的概率密度及實(shí)際情況,可以判定這些H值都是噪聲引起的。為了使選取的閾值具有良好的手勢分割性能,本文結(jié)合上述H值分布圖并做了大量實(shí)驗(yàn)來測試,得出閾值選取6~48的時(shí)候結(jié)果最優(yōu),此閾值不僅能夠良好地分割手勢,并且具有較好的抗噪能力。使用此膚色模型分割手勢后的實(shí)驗(yàn)結(jié)果如圖4所示。
動(dòng)態(tài)手勢是一個(gè)包含多幀的小視頻片段,僅僅只用一幀圖像無法表述動(dòng)態(tài)手勢里包含的時(shí)序信息。如果要對(duì)這樣一段包含多幀的動(dòng)態(tài)手勢進(jìn)分類,直接讓卷積神經(jīng)網(wǎng)絡(luò)處理起來有些困難,所以本文使用了一種動(dòng)態(tài)手勢時(shí)域信息提取方法,用一張時(shí)空特征影像來表示動(dòng)態(tài)手勢。該方法首先根據(jù)某一動(dòng)態(tài)手勢視頻片段分解出多幀原始圖像,然后利用高斯背景建模及HSV膚色建模的方法分割出手勢,因?yàn)椴煌氖謩輨?dòng)作只跟手的形狀及運(yùn)動(dòng)信息有關(guān),為了排除其它干擾,所以我們對(duì)每一幀圖像基于背景前景區(qū)分二值化處理。處理后的每一幀是一副只保留了手勢形狀的二值化圖像,然后基于連續(xù)多幀這樣處理后的二值化圖像,在時(shí)域空間內(nèi),根據(jù)時(shí)間由近及遠(yuǎn)衰減權(quán)重,最后所有幀基于衰減后的權(quán)重在當(dāng)前圖像背景區(qū)域加權(quán)融合。算法流程如圖5所示。
圖4 對(duì)圖2中圖像使用HSV膚色模型分割后的手勢圖
圖5 動(dòng)態(tài)手勢時(shí)空特征影像提取過程
為了更準(zhǔn)確的表達(dá)歷史手勢隨時(shí)間的衰減,本文采用指數(shù)衰減模型模擬歷史手勢的衰減,如式(9)
wx=e-βx(x≥0)
(9)
式中:wx表示距離當(dāng)前幀前面第x幀的權(quán)重。為了使權(quán)重衰減的不是太厲害,本文取β=0.5。若融合幀數(shù)太多的話,則融合后的特征圖在時(shí)間跨度上較大,當(dāng)時(shí)間跨度比較大時(shí),則最后一幀不是當(dāng)前幀所要表述的手勢的幾率也比較大;若融合幀數(shù)太少時(shí),則會(huì)出現(xiàn)特征影像無法形象表述當(dāng)前動(dòng)態(tài)手勢的問題??紤]到上面兩個(gè)問題的利害取舍,加上實(shí)驗(yàn)測試,本文選取的融合幀數(shù)為6幀,既能形象地表述動(dòng)態(tài)手勢,又可以降低歷史手勢對(duì)當(dāng)前手勢的影響。代入式(9)得出這6幀的權(quán)重為:w0=1、w1=0.60、w2=0.37、w3=0.22、w4=0.14、w5=0.08。
當(dāng)融合這6幀圖像時(shí),本文使用只在背景區(qū)域加權(quán)融合的算法,且先融合權(quán)值最高的圖像。首先從要融合的若干圖像中選取權(quán)值最高的圖像M作為待融合的圖像,然后在剩余圖像中選取權(quán)值最高的圖像M1,按照像素點(diǎn)遍歷,兩張圖像在點(diǎn)P=(X,Y)處的融合法則如式(10)
(10)
式中:M(P)為M圖像中點(diǎn)P的像素值,M1(P)為M1圖像中點(diǎn)P的像素值。完成這兩張圖像的融合后,把融合后的圖像替換原來的待融合圖像M,然后再在剩余的圖像中選取權(quán)值最大的圖像作為新的M1,然后重復(fù)上述步驟,直到融合完所有圖像為止。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks, CNN)在近些年逐漸興起并引起了很大的重視。它是一種效率很高的模式分類方法,由Hubel和Wiesel研究貓腦皮層中相關(guān)神經(jīng)元的功能時(shí)發(fā)現(xiàn)并提出的。它是一種深度的監(jiān)督學(xué)習(xí)下的機(jī)器學(xué)習(xí)模型,主要應(yīng)用于圖像處理領(lǐng)域。
使用卷積神經(jīng)網(wǎng)絡(luò)能夠高效地對(duì)圖像進(jìn)行識(shí)別與分類,著名的CNN網(wǎng)絡(luò)結(jié)構(gòu)有LeNet[8]、AlexNet[9]及VGGNet[10]等。這3個(gè)網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜度依次增加,根據(jù)本文的需要,我們選取了AlexNet網(wǎng)絡(luò),并在原始網(wǎng)絡(luò)結(jié)構(gòu)上做出稍微的修改以滿足我們的需要。
AlexNet在ImageNet圖像分類競賽中以遠(yuǎn)超第二名的優(yōu)異成績拿到冠軍。其網(wǎng)絡(luò)結(jié)構(gòu)一共分為8層,其中5個(gè)卷積層,3個(gè)全連接層,輸入圖像尺寸為227*227*3,最后輸出結(jié)果總共一千類。ImageNet數(shù)據(jù)集中所有圖像都是靜態(tài)的,而本文所要完成的是動(dòng)態(tài)手勢的分類,為了達(dá)到對(duì)動(dòng)態(tài)手勢識(shí)別的目的,本文構(gòu)建了動(dòng)態(tài)手勢的時(shí)空特征影像,這是本文網(wǎng)絡(luò)模型與原始AlexNet網(wǎng)絡(luò)的主要區(qū)別。原始AlexNet網(wǎng)絡(luò)對(duì)圖像的紋理細(xì)節(jié)以及色彩等信息比較看重,而本文主要的目的是對(duì)手勢的分類,故圖像的紋理細(xì)節(jié)以及色彩信息就沒有那么重要。為此,本文構(gòu)建的時(shí)空特征影像為灰度圖像,背景為黑色,且沒有詳細(xì)的手部紋理信息,特征影像也不需要很精細(xì)的描述。對(duì)輸入的圖像,本文選取了分辨率為64*64*1的尺寸,這樣既不會(huì)丟失特征影像重要的細(xì)節(jié),又會(huì)加快模型訓(xùn)練速度及實(shí)時(shí)手勢識(shí)別速度,如圖6所示。
圖6 網(wǎng)絡(luò)結(jié)構(gòu)
為了測試手勢識(shí)別分類效果,針對(duì)“去”、“拿”、“移”、“放”、“回”、“這”6種常見手勢分別采樣,本實(shí)驗(yàn)每類手勢采樣1800張,其中每類訓(xùn)練集1500張,測試集300張,總共采樣10 800張,然后基于卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練,最后根據(jù)訓(xùn)練好的模型做實(shí)時(shí)手勢分類實(shí)驗(yàn)。
本實(shí)驗(yàn)采取實(shí)時(shí)處理當(dāng)前視頻幀的方法來對(duì)手勢進(jìn)行實(shí)時(shí)識(shí)別,攝像頭播放的視頻每33 ms播放一幀。本實(shí)驗(yàn)采取每兩幀處理一幀,也就是說每66 ms讀取一幀進(jìn)行處理,而表述一個(gè)動(dòng)態(tài)手勢我們用了6幀,故一個(gè)動(dòng)態(tài)手勢特征圖包含的時(shí)序信息時(shí)間跨度為66*6=396 ms。在本實(shí)驗(yàn)中,因?yàn)槊績蓭x取一幀,故每66 ms就會(huì)有一個(gè)實(shí)時(shí)的識(shí)別結(jié)果,而做某一手勢動(dòng)作的用時(shí)往往會(huì)大于這個(gè)時(shí)間很多,所以做完一個(gè)手勢動(dòng)作往往會(huì)有很多識(shí)別結(jié)果,但理論上這些結(jié)果應(yīng)該都一樣,并且跟當(dāng)前所做的手勢動(dòng)作相符。為了測試實(shí)驗(yàn)結(jié)果準(zhǔn)確率,分別對(duì)每種手勢進(jìn)行測試,詳細(xì)實(shí)驗(yàn)結(jié)果見表1。
表1 時(shí)空特征影像+CNN詳細(xì)實(shí)驗(yàn)結(jié)果
為了更好地分析實(shí)驗(yàn)結(jié)果,我們列出了神經(jīng)網(wǎng)絡(luò)概率化結(jié)果中Top1的命中率和Top2的命中率,分別用Hit@1和Hit@2表示。從表1中可以看出,手勢“移”的識(shí)別準(zhǔn)確率相對(duì)較低,而手勢“這”因?yàn)樵撌謩菹鄬?duì)簡單識(shí)別準(zhǔn)確率最高。而在識(shí)別過程中,可能會(huì)存在外部的干擾或者因?yàn)槟P捅旧碜R(shí)別率不夠精確導(dǎo)致這一時(shí)刻識(shí)別錯(cuò)誤,比如做手勢“去”的時(shí)候,一系列連續(xù)的識(shí)別結(jié)果為:{“去”、“去”、“去”、“去”、“移”、“去”、“去”、},這是一個(gè)“去”的手勢動(dòng)作產(chǎn)生的識(shí)別結(jié)果,因?yàn)檫@應(yīng)該是一個(gè)連續(xù)的動(dòng)作,正常情況下不可能在中間某一兩幀突然做出一個(gè)其它的手勢動(dòng)作,所以上面的識(shí)別結(jié)果并不是理想的結(jié)果,理想的結(jié)果應(yīng)該為:{“去”、“去”、“去”、“去”、“去”、“去”、“去”、},而其中第5個(gè)結(jié)果“移”則應(yīng)該判斷為錯(cuò)誤的識(shí)別結(jié)果。為此,我們又考慮了一種基于統(tǒng)計(jì)分析的優(yōu)化方法,來使識(shí)別結(jié)果更加理想,從而改善識(shí)別準(zhǔn)確率以及交互體驗(yàn)。
對(duì)結(jié)果序列進(jìn)行優(yōu)化處理時(shí),我們首先設(shè)定一個(gè)統(tǒng)計(jì)范圍,然后把當(dāng)前范圍中出現(xiàn)次數(shù)最高的結(jié)果作為此刻的結(jié)果。具體步驟為,設(shè)統(tǒng)計(jì)范圍長度為n,然后統(tǒng)計(jì)距離當(dāng)前時(shí)間最近的歷史結(jié)果序列{t-n+1,t-n+2,…,t},求出出現(xiàn)次數(shù)最高的手勢識(shí)別結(jié)果,若有多個(gè)出現(xiàn)次數(shù)最高的手勢,則取離當(dāng)前時(shí)間最近的結(jié)果。本文中所取的統(tǒng)計(jì)范圍長度為5,加上這種統(tǒng)計(jì)優(yōu)化后實(shí)時(shí)手勢識(shí)別準(zhǔn)確率有了一定的提升。
為了對(duì)比實(shí)驗(yàn)結(jié)果,本文還實(shí)驗(yàn)了原始幀+CNN的方法。原始幀圖像里面不包含時(shí)序信息,但是卻包含了手勢豐富的紋理信息、色彩信息以及空間信息。該實(shí)驗(yàn)同樣對(duì)每類手勢采樣1800張,其中每類訓(xùn)練集1500張,測試集300張,總共采樣10 800張,然后基于卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練,最后根據(jù)訓(xùn)練好的模型進(jìn)行實(shí)時(shí)手勢識(shí)別實(shí)驗(yàn)?;?種不同方法的實(shí)驗(yàn)結(jié)果對(duì)比見表2。
表2 3種不同方法實(shí)驗(yàn)結(jié)果對(duì)比
本文提出了一種桌面背景環(huán)境下面向人機(jī)交互的常見手勢識(shí)別的方法,通過對(duì)視頻中手勢動(dòng)作中的時(shí)序信息與空間信息的抽取與融合,得到了能夠表述一個(gè)動(dòng)態(tài)手勢的時(shí)空特征影像。不同的手勢動(dòng)作,其時(shí)空特征影像有很大差別,故我們可以用不同的特征影像來表述不同的手勢動(dòng)作。最后利用深度學(xué)習(xí),構(gòu)造卷積神經(jīng)網(wǎng)絡(luò)對(duì)特征影像進(jìn)行訓(xùn)練,進(jìn)而實(shí)現(xiàn)理解和識(shí)別不同的手勢的目的。本文中手勢分割的準(zhǔn)確性對(duì)時(shí)空特征影像的生成有很大影響,單一的高斯背景建模的方法對(duì)手勢分割的效果并不是太好,而只使用膚色建模的話又會(huì)受到背景中跟膚色顏色相近的物體影響,故本文使用了兩者結(jié)合的方法,并且取得了不錯(cuò)的分割效果。本文采用基于深度學(xué)習(xí)的方法來訓(xùn)練不同手勢,讓機(jī)器自動(dòng)去學(xué)習(xí)不同手勢之間的區(qū)別,克服了人為規(guī)則對(duì)不同手勢的描述及區(qū)分不夠準(zhǔn)確的缺點(diǎn)。實(shí)驗(yàn)結(jié)果表明,本文算法能夠?qū)Σ煌某R妱?dòng)態(tài)手勢取得良好的分類效果。
本文算法需要改進(jìn)的地方如下:①加入統(tǒng)計(jì)分析優(yōu)化后,實(shí)時(shí)識(shí)別結(jié)果會(huì)有2幀左右的延遲;②極端環(huán)境下,比如太亮或太暗,手勢分割效果不夠好。針對(duì)第一個(gè)問題,這種現(xiàn)象主要由統(tǒng)計(jì)范圍過大引起的,統(tǒng)計(jì)范圍越大則延遲越嚴(yán)重,統(tǒng)計(jì)范圍太小則優(yōu)化效果不明顯,本文在這兩者之間做了個(gè)取舍,但仍有2幀的延遲。針對(duì)第二個(gè)問題,本文尚未找到一種良好的自適應(yīng)的算法來解決此問題。這些都將是我們下一步工作要解決的問題。