謝 錚 桂
(韓山師范學(xué)院 廣東 潮州 521000)
隨著人機(jī)交互、計算機(jī)視覺技術(shù)的不斷發(fā)展,基于視覺的手勢識別已成為國內(nèi)外學(xué)者研究的重點(diǎn),也是計算機(jī)視覺領(lǐng)域的一個研究熱點(diǎn)[1]。手勢作為一種自然語義表達(dá)方式,在人機(jī)交互中發(fā)揮著重要的作用。
目前已經(jīng)有許多國內(nèi)外學(xué)者對手勢識別開展相關(guān)研究。文獻(xiàn)[2]針對手勢識別提出兩種異構(gòu)分類器組合的方法,基于HMM來區(qū)分穩(wěn)態(tài)數(shù)據(jù)和暫態(tài)數(shù)據(jù),最后使用SVM對手勢肌電信號進(jìn)行識別。文獻(xiàn)[3]提出了基于方向梯度直方圖(HOG)的手勢識別方法。文獻(xiàn)[4]使用Kinect傳感器去捕獲圖像的3D Haar-like特征,用Adaboost學(xué)習(xí)算法識別手語,并通過將3D特征信息與增強(qiáng)算法相結(jié)合,從而提高算法的分類效率。文獻(xiàn)[5]采用卷積神經(jīng)網(wǎng)絡(luò)算法,對手勢數(shù)據(jù)集進(jìn)行訓(xùn)練之前先對圖像進(jìn)行預(yù)處理,分割出手勢區(qū)域作為網(wǎng)絡(luò)輸入,分割后的圖像是一個64×64像素的三通道彩色圖像。
分析上述文獻(xiàn)發(fā)現(xiàn)存在兩個問題:(1) 文獻(xiàn)[2-4]中提出的方法為傳統(tǒng)的手勢識別方法,需要先人工提取圖像特征,再設(shè)計分類器。但人工提取圖像特征難以適應(yīng)手勢圖像復(fù)雜的背景及手勢多變性,加大了手勢識別的難度,降低了識別準(zhǔn)確率。(2) 文獻(xiàn)[5]用彩色圖像作為輸入,會增加卷積神經(jīng)網(wǎng)絡(luò)模型參數(shù),使模型的算法復(fù)雜度更高。
問題(1)的解決方案是構(gòu)建基于卷積神經(jīng)網(wǎng)絡(luò)的手勢識別模型。近年來卷積神經(jīng)網(wǎng)絡(luò)在圖像分類、物體檢測和動作識別等領(lǐng)域之所以取得極大成功,因為相比傳統(tǒng)人工提取圖像特征,卷積神經(jīng)網(wǎng)絡(luò)能自動提取圖像更高層的特征信息,實(shí)現(xiàn)end-to-end分類,以達(dá)到更高的識別率。
針對問題(2),可以構(gòu)建基于灰度的卷積神經(jīng)網(wǎng)絡(luò)。用單通道gesture數(shù)據(jù)集訓(xùn)練CNN,大大減少網(wǎng)絡(luò)參數(shù),減少網(wǎng)絡(luò)計算復(fù)雜度,節(jié)省網(wǎng)絡(luò)訓(xùn)練時間。再用真實(shí)場景的手勢圖像測試,對輸入圖像先基于膚色閾值分割出手勢區(qū)域并作掩膜處理,再輸入到CNN模型測試。
傳統(tǒng)手勢識別算法進(jìn)行手勢識別時需要先對輸入手勢圖像進(jìn)行復(fù)雜的預(yù)處理和人工提取圖像特征,然后再進(jìn)行特征分類。這種算法識別結(jié)果的好壞很大程度上取決于人工提取的特征是否合理,而人工提取特征往往依靠經(jīng)驗,主觀性較強(qiáng),導(dǎo)致結(jié)果不準(zhǔn)確。與傳統(tǒng)識別方法不同,本文提出的識別算法分兩個階段:先構(gòu)建和訓(xùn)練CNN模型,再測試CNN模型。第一階段是先構(gòu)建灰度CNN神經(jīng)網(wǎng)絡(luò)模型,接著對gesture數(shù)據(jù)集預(yù)處理,規(guī)整后作為CNN網(wǎng)絡(luò)模型的輸入。模型訓(xùn)練過程中自動學(xué)習(xí)輸入樣本的手勢特征和分類,訓(xùn)練完成后保存CNN模型的結(jié)構(gòu)和參數(shù),如圖1所示。第二階段是先對自建手勢圖像數(shù)據(jù)集作預(yù)處理,分割出手勢區(qū)域并作掩膜處理,再輸入到訓(xùn)練好的CNN模型進(jìn)行預(yù)測,最終得到識別結(jié)果,如圖2所示。因為自建手勢圖像是通過攝像頭采集包含了復(fù)雜的背景信息,直接輸入CNN模型預(yù)測會影響識別結(jié)果,所以,需對采集圖像預(yù)處理。圖像預(yù)處理是基于膚色閾值對圖像中的手勢部分進(jìn)行分割并作掩膜處理。

圖1 基于卷積神經(jīng)網(wǎng)絡(luò)的手勢訓(xùn)練模型的工作流程圖

圖2 基于卷積神經(jīng)網(wǎng)絡(luò)的手勢識別模型的工作流程圖
為降低背景對識別結(jié)果的干擾,在進(jìn)行手勢識別之前,需要將手勢從復(fù)雜的背景中分割出來。
分析手勢圖像,可以看出,手勢的膚色信息是手勢區(qū)別于其他物體的重要特征之一。因此,將膚色的亮度信息和色度信息分離,進(jìn)而基于膚色比較不同物體與手勢在色度上的差別,將手勢部分分割出來。
由于單純的RGB色彩空間難以對手勢的膚色信息進(jìn)行檢測,而YCbCr色彩空間具有亮度和色度分離的特點(diǎn),Y、Cb、Cr分別代表亮度、藍(lán)色色度和紅色色度分量。相比于RGB色彩空間,YCbCr色彩空間更符合人眼的視覺感知,從而降低了圖像分析的難度[6]。
攝像頭采集到的是RGB圖像,因此需要轉(zhuǎn)換到Y(jié)CbCr顏色空間,色彩空間轉(zhuǎn)換可以按下式計算:
Y=0.257×R+0.564×G+0.098×B+1
(1)
Cb=-0.148×R-0.291×G+0.439×B+12
(2)
Cr=0.439×R-0.368×G-0.071×B+128
(3)
采用基于閾值的分割方法,將手勢從圖像背景中分離出來之后,以二值圖像的形式表現(xiàn)。如果Cb的值范圍在77到127之間并且Cr的值范圍在133到173之間則被認(rèn)為是白色像素,否則被認(rèn)為是黑色像素。基于膚色閾值的手勢分割結(jié)果如圖3所示。

(a) 原圖 (b) 閾值分割圖3 基于膚色閾值的手勢區(qū)域分割
為了驗證算法有效性,本文采用兩個手勢數(shù)據(jù)集。分別是自建手勢數(shù)據(jù)集和gesture數(shù)據(jù)集。自建手勢數(shù)據(jù)集是通過攝像頭拍攝采集了真人的9種不同手勢,共有1 800張圖像,圖像包含了復(fù)雜的背景信息。如果直接用自建手勢數(shù)據(jù)集訓(xùn)練CNN網(wǎng)絡(luò),必定影響識別率。因而需要對圖像作預(yù)處理,分割出圖像中的手勢區(qū)域作為CNN網(wǎng)絡(luò)的輸入,但是如果CNN網(wǎng)絡(luò)模型訓(xùn)練過程需要對每張訓(xùn)練圖像作預(yù)處理,會加大模型訓(xùn)練時間,因此,自建數(shù)據(jù)集適合測試CNN網(wǎng)絡(luò)。本文選用gesture數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù)集,gesture數(shù)據(jù)集提供了16 989張9個類別的手勢灰度圖像,每張圖大小是64×64像素,如圖4所示。模型訓(xùn)練前需要對數(shù)據(jù)集作預(yù)處理,將圖像大小調(diào)整為28×28像素,并作歸一化處理。圖像的尺寸變小并且是灰度圖,加快了模型訓(xùn)練的速度。

圖4 gesture數(shù)據(jù)集
卷積神經(jīng)網(wǎng)絡(luò)通過局部感受野和權(quán)值共享減少了神經(jīng)網(wǎng)絡(luò)參數(shù)的個數(shù),因而大大降低網(wǎng)絡(luò)模型的復(fù)雜度和緩解網(wǎng)絡(luò)模型過擬合的問題[7]。卷積神經(jīng)網(wǎng)絡(luò)主要由卷積層、池化層和全連接層構(gòu)成。本文通過構(gòu)建基于手勢灰度圖像的卷積神經(jīng)網(wǎng)絡(luò),自動提取輸入樣本的手勢特征和識別。網(wǎng)絡(luò)模型由兩個卷積層、兩個池化層、兩個全連接層組成。模型結(jié)構(gòu)如圖5所示。

圖5 手勢識別的卷積神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)
1.4.1 卷積和池化
卷積層中卷積核的作用是提取圖像的特征信息,對于卷積層的某一層,用卷積核與上一層特征圖作滑動卷積運(yùn)算再加上一個偏置值得到輸出。最后再通過激活函數(shù)就能得到卷積的結(jié)果,即輸出特征圖[7],如下所示:
(4)

池化層把輸入的特征圖分成多個不重疊的n×n塊,再對每個塊采用最大值法或者均值法,從而使得輸出特征圖縮小了n倍[7]。
本文提出的模型中第一個卷積層用32個大小是3×3的卷積核,滑動步長為1,輸出32個28×28的特征圖。第一個池化層的池化采樣的窗口大小為是2×2,步長為2,得到32個14×14的特征圖。
第二個卷積層用64個大小是3×3的卷積核,滑動步長為1,輸出64個14×14的特征圖。第二個池化層的池化采樣的窗口大小為是2×2,步長為2,得到64個7×7的特征圖。
網(wǎng)絡(luò)的激活函數(shù)采用Relu()函數(shù),因為Relu()函數(shù)能使部分神經(jīng)元的輸出為0,從而使網(wǎng)絡(luò)產(chǎn)生稀疏性,減少網(wǎng)絡(luò)的復(fù)雜度,緩解了過擬合問題的發(fā)生。
1.4.2 全連接層
本文提出的模型中第一個全連接層的輸入為64張7×7的特征圖,因此,需要1 024個神經(jīng)元。為了防止卷積神經(jīng)網(wǎng)絡(luò)出現(xiàn)過擬合問題,在第一個全連接層之后加入了Dropout層。Dropout算法是在訓(xùn)練過程中隨機(jī)地按一定比例p(0≤p≤1)的忽略節(jié)點(diǎn),阻止神經(jīng)元過多,由此減輕了傳統(tǒng)全連接神經(jīng)網(wǎng)絡(luò)的過擬合問題,有效地提高了網(wǎng)絡(luò)的泛化性能[8]。
在第二個全連接層的輸出通過Softmax激活函數(shù),讓識別結(jié)果以概率的形式輸出。
用gesture數(shù)據(jù)集訓(xùn)練網(wǎng)絡(luò)模型,再用自建手勢數(shù)據(jù)集測試模型。訓(xùn)練網(wǎng)絡(luò)模型采用批量隨機(jī)梯度下降法,即從訓(xùn)練總樣本中選取一個批次作為一個batch,然后計算這個batch的總誤差,根據(jù)總誤差來更新權(quán)值。使用批量隨機(jī)梯度下降法的好處是網(wǎng)絡(luò)的收斂速度更快。本文訓(xùn)練數(shù)據(jù)集每個批次batch的樣本個數(shù)設(shè)置為2 000個。使用Adam優(yōu)化器進(jìn)行迭代,學(xué)習(xí)率為1e-4,dropout設(shè)置0.75。
將gesture數(shù)據(jù)集的16 989張分成兩部分:13 989張圖像作為訓(xùn)練集,3 000張圖像作為驗證集。網(wǎng)絡(luò)模型的構(gòu)建和訓(xùn)練使用深度學(xué)習(xí)框架TensorFlow,利用TensorBoard得到網(wǎng)絡(luò)訓(xùn)練過程中交叉熵的變化率和準(zhǔn)確率,分別如圖6和圖7所示。

圖6 訓(xùn)練過程中迭代次數(shù)與交叉熵的變化曲線

圖7 訓(xùn)練過程中迭代次數(shù)與準(zhǔn)確率的變化曲線
將訓(xùn)練好的網(wǎng)絡(luò)模型在自建的手勢數(shù)據(jù)集上進(jìn)行測試,得到識別準(zhǔn)確率為96%。
現(xiàn)有的參考文獻(xiàn)已提出了不同的方法來識別手勢,表1是從實(shí)現(xiàn)算法、識別的手勢數(shù)量以及識別率三方面將本文提出的算法與文獻(xiàn)提出的三種算法進(jìn)行性能對比結(jié)果。其中,文獻(xiàn)[2]使用HMM+SVM方法對手勢進(jìn)行識別,該方法先人工提取圖像的特征,再用SVM對手勢肌電信號進(jìn)行識別。雖然支持向量機(jī)具有訓(xùn)練速度快、非線性映射能力強(qiáng)等特點(diǎn),但其準(zhǔn)確率低于卷積神經(jīng)網(wǎng)絡(luò)。文獻(xiàn)[9]提出用一個三層徑向基神經(jīng)網(wǎng)絡(luò)RBF(Radial Basis Function)對24種美國手語手勢進(jìn)行識別。RBF是一個三層神經(jīng)網(wǎng)絡(luò),一個輸出層,一個隱藏層,一個輸出層,屬于淺層神經(jīng)網(wǎng)絡(luò)。與該網(wǎng)絡(luò)相比,較大深度的卷積神經(jīng)網(wǎng)絡(luò)具有更高的識別率。文獻(xiàn)[2,9]都屬于傳統(tǒng)機(jī)器學(xué)習(xí)方法,卷積神經(jīng)網(wǎng)絡(luò)CNN與其相比,訓(xùn)練速度較慢,但識別率更高,并且具有更好的魯棒性。文獻(xiàn)[5]采用卷積神經(jīng)網(wǎng)絡(luò)CNN算法,在對手勢進(jìn)行訓(xùn)練之前對圖像進(jìn)行預(yù)處理,分割出手勢區(qū)域作為網(wǎng)絡(luò)輸入,該輸入圖像是一個64×64的三通道RGB圖像,而本文輸入圖像預(yù)處理成28×28的單通道灰度圖像,與其相比,本文網(wǎng)絡(luò)模型的參數(shù)減少,降低了算法復(fù)雜度。

表1 各種算法結(jié)果對比
手勢圖像中手勢的多樣性和復(fù)雜的背景信息會導(dǎo)致識別準(zhǔn)確率低下。本文提出了一種基于膚色閾值的手勢分割結(jié)合灰度卷積神經(jīng)網(wǎng)絡(luò)的手勢識別模型。首先,構(gòu)建灰度手勢圖像的卷積神經(jīng)網(wǎng)絡(luò)模型,采用gesture數(shù)據(jù)集對模型訓(xùn)練,有效地減少模型復(fù)雜度,降低模型訓(xùn)練時間。再用攝像頭采集的不同背景下的手勢圖像進(jìn)行測試,需要先對手勢圖像在YCbCr顏色空間上用閾值法分割出手勢區(qū)域并作掩膜處理。實(shí)驗結(jié)果表明,卷積神經(jīng)網(wǎng)絡(luò)能夠高效地進(jìn)行特征提取,在兩個數(shù)據(jù)集下對手勢的平均識別率都達(dá)到96%以上,因此能有效地解決手勢識別問題。