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