謝 錚 桂
(韓山師范學(xué)院 廣東 潮州 521000)
隨著人機(jī)交互、計(jì)算機(jī)視覺(jué)技術(shù)的不斷發(fā)展,基于視覺(jué)的手勢(shì)識(shí)別已成為國(guó)內(nèi)外學(xué)者研究的重點(diǎn),也是計(jì)算機(jī)視覺(jué)領(lǐng)域的一個(gè)研究熱點(diǎn)[1]。手勢(shì)作為一種自然語(yǔ)義表達(dá)方式,在人機(jī)交互中發(fā)揮著重要的作用。
目前已經(jīng)有許多國(guó)內(nèi)外學(xué)者對(duì)手勢(shì)識(shí)別開(kāi)展相關(guān)研究。文獻(xiàn)[2]針對(duì)手勢(shì)識(shí)別提出兩種異構(gòu)分類(lèi)器組合的方法,基于HMM來(lái)區(qū)分穩(wěn)態(tài)數(shù)據(jù)和暫態(tài)數(shù)據(jù),最后使用SVM對(duì)手勢(shì)肌電信號(hào)進(jìn)行識(shí)別。文獻(xiàn)[3]提出了基于方向梯度直方圖(HOG)的手勢(shì)識(shí)別方法。文獻(xiàn)[4]使用Kinect傳感器去捕獲圖像的3D Haar-like特征,用Adaboost學(xué)習(xí)算法識(shí)別手語(yǔ),并通過(guò)將3D特征信息與增強(qiáng)算法相結(jié)合,從而提高算法的分類(lèi)效率。文獻(xiàn)[5]采用卷積神經(jīng)網(wǎng)絡(luò)算法,對(duì)手勢(shì)數(shù)據(jù)集進(jìn)行訓(xùn)練之前先對(duì)圖像進(jìn)行預(yù)處理,分割出手勢(shì)區(qū)域作為網(wǎng)絡(luò)輸入,分割后的圖像是一個(gè)64×64像素的三通道彩色圖像。
分析上述文獻(xiàn)發(fā)現(xiàn)存在兩個(gè)問(wèn)題:(1) 文獻(xiàn)[2-4]中提出的方法為傳統(tǒng)的手勢(shì)識(shí)別方法,需要先人工提取圖像特征,再設(shè)計(jì)分類(lèi)器。但人工提取圖像特征難以適應(yīng)手勢(shì)圖像復(fù)雜的背景及手勢(shì)多變性,加大了手勢(shì)識(shí)別的難度,降低了識(shí)別準(zhǔn)確率。(2) 文獻(xiàn)[5]用彩色圖像作為輸入,會(huì)增加卷積神經(jīng)網(wǎng)絡(luò)模型參數(shù),使模型的算法復(fù)雜度更高。
問(wèn)題(1)的解決方案是構(gòu)建基于卷積神經(jīng)網(wǎng)絡(luò)的手勢(shì)識(shí)別模型。近年來(lái)卷積神經(jīng)網(wǎng)絡(luò)在圖像分類(lèi)、物體檢測(cè)和動(dòng)作識(shí)別等領(lǐng)域之所以取得極大成功,因?yàn)橄啾葌鹘y(tǒng)人工提取圖像特征,卷積神經(jīng)網(wǎng)絡(luò)能自動(dòng)提取圖像更高層的特征信息,實(shí)現(xiàn)end-to-end分類(lèi),以達(dá)到更高的識(shí)別率。
針對(duì)問(wèn)題(2),可以構(gòu)建基于灰度的卷積神經(jīng)網(wǎng)絡(luò)。用單通道gesture數(shù)據(jù)集訓(xùn)練CNN,大大減少網(wǎng)絡(luò)參數(shù),減少網(wǎng)絡(luò)計(jì)算復(fù)雜度,節(jié)省網(wǎng)絡(luò)訓(xùn)練時(shí)間。再用真實(shí)場(chǎng)景的手勢(shì)圖像測(cè)試,對(duì)輸入圖像先基于膚色閾值分割出手勢(shì)區(qū)域并作掩膜處理,再輸入到CNN模型測(cè)試。
傳統(tǒng)手勢(shì)識(shí)別算法進(jìn)行手勢(shì)識(shí)別時(shí)需要先對(duì)輸入手勢(shì)圖像進(jìn)行復(fù)雜的預(yù)處理和人工提取圖像特征,然后再進(jìn)行特征分類(lèi)。這種算法識(shí)別結(jié)果的好壞很大程度上取決于人工提取的特征是否合理,而人工提取特征往往依靠經(jīng)驗(yàn),主觀性較強(qiáng),導(dǎo)致結(jié)果不準(zhǔn)確。與傳統(tǒng)識(shí)別方法不同,本文提出的識(shí)別算法分兩個(gè)階段:先構(gòu)建和訓(xùn)練CNN模型,再測(cè)試CNN模型。第一階段是先構(gòu)建灰度CNN神經(jīng)網(wǎng)絡(luò)模型,接著對(duì)gesture數(shù)據(jù)集預(yù)處理,規(guī)整后作為CNN網(wǎng)絡(luò)模型的輸入。模型訓(xùn)練過(guò)程中自動(dòng)學(xué)習(xí)輸入樣本的手勢(shì)特征和分類(lèi),訓(xùn)練完成后保存CNN模型的結(jié)構(gòu)和參數(shù),如圖1所示。第二階段是先對(duì)自建手勢(shì)圖像數(shù)據(jù)集作預(yù)處理,分割出手勢(shì)區(qū)域并作掩膜處理,再輸入到訓(xùn)練好的CNN模型進(jìn)行預(yù)測(cè),最終得到識(shí)別結(jié)果,如圖2所示。因?yàn)樽越ㄊ謩?shì)圖像是通過(guò)攝像頭采集包含了復(fù)雜的背景信息,直接輸入CNN模型預(yù)測(cè)會(huì)影響識(shí)別結(jié)果,所以,需對(duì)采集圖像預(yù)處理。圖像預(yù)處理是基于膚色閾值對(duì)圖像中的手勢(shì)部分進(jìn)行分割并作掩膜處理。
圖1 基于卷積神經(jīng)網(wǎng)絡(luò)的手勢(shì)訓(xùn)練模型的工作流程圖
圖2 基于卷積神經(jīng)網(wǎng)絡(luò)的手勢(shì)識(shí)別模型的工作流程圖
為降低背景對(duì)識(shí)別結(jié)果的干擾,在進(jìn)行手勢(shì)識(shí)別之前,需要將手勢(shì)從復(fù)雜的背景中分割出來(lái)。
分析手勢(shì)圖像,可以看出,手勢(shì)的膚色信息是手勢(shì)區(qū)別于其他物體的重要特征之一。因此,將膚色的亮度信息和色度信息分離,進(jìn)而基于膚色比較不同物體與手勢(shì)在色度上的差別,將手勢(shì)部分分割出來(lái)。
由于單純的RGB色彩空間難以對(duì)手勢(shì)的膚色信息進(jìn)行檢測(cè),而YCbCr色彩空間具有亮度和色度分離的特點(diǎn),Y、Cb、Cr分別代表亮度、藍(lán)色色度和紅色色度分量。相比于RGB色彩空間,YCbCr色彩空間更符合人眼的視覺(jué)感知,從而降低了圖像分析的難度[6]。
攝像頭采集到的是RGB圖像,因此需要轉(zhuǎn)換到Y(jié)CbCr顏色空間,色彩空間轉(zhuǎn)換可以按下式計(jì)算:
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)
采用基于閾值的分割方法,將手勢(shì)從圖像背景中分離出來(lái)之后,以二值圖像的形式表現(xiàn)。如果Cb的值范圍在77到127之間并且Cr的值范圍在133到173之間則被認(rèn)為是白色像素,否則被認(rèn)為是黑色像素。基于膚色閾值的手勢(shì)分割結(jié)果如圖3所示。
(a) 原圖 (b) 閾值分割圖3 基于膚色閾值的手勢(shì)區(qū)域分割
為了驗(yàn)證算法有效性,本文采用兩個(gè)手勢(shì)數(shù)據(jù)集。分別是自建手勢(shì)數(shù)據(jù)集和gesture數(shù)據(jù)集。自建手勢(shì)數(shù)據(jù)集是通過(guò)攝像頭拍攝采集了真人的9種不同手勢(shì),共有1 800張圖像,圖像包含了復(fù)雜的背景信息。如果直接用自建手勢(shì)數(shù)據(jù)集訓(xùn)練CNN網(wǎng)絡(luò),必定影響識(shí)別率。因而需要對(duì)圖像作預(yù)處理,分割出圖像中的手勢(shì)區(qū)域作為CNN網(wǎng)絡(luò)的輸入,但是如果CNN網(wǎng)絡(luò)模型訓(xùn)練過(guò)程需要對(duì)每張訓(xùn)練圖像作預(yù)處理,會(huì)加大模型訓(xùn)練時(shí)間,因此,自建數(shù)據(jù)集適合測(cè)試CNN網(wǎng)絡(luò)。本文選用gesture數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù)集,gesture數(shù)據(jù)集提供了16 989張9個(gè)類(lèi)別的手勢(shì)灰度圖像,每張圖大小是64×64像素,如圖4所示。模型訓(xùn)練前需要對(duì)數(shù)據(jù)集作預(yù)處理,將圖像大小調(diào)整為28×28像素,并作歸一化處理。圖像的尺寸變小并且是灰度圖,加快了模型訓(xùn)練的速度。
圖4 gesture數(shù)據(jù)集
卷積神經(jīng)網(wǎng)絡(luò)通過(guò)局部感受野和權(quán)值共享減少了神經(jīng)網(wǎng)絡(luò)參數(shù)的個(gè)數(shù),因而大大降低網(wǎng)絡(luò)模型的復(fù)雜度和緩解網(wǎng)絡(luò)模型過(guò)擬合的問(wèn)題[7]。卷積神經(jīng)網(wǎng)絡(luò)主要由卷積層、池化層和全連接層構(gòu)成。本文通過(guò)構(gòu)建基于手勢(shì)灰度圖像的卷積神經(jīng)網(wǎng)絡(luò),自動(dòng)提取輸入樣本的手勢(shì)特征和識(shí)別。網(wǎng)絡(luò)模型由兩個(gè)卷積層、兩個(gè)池化層、兩個(gè)全連接層組成。模型結(jié)構(gòu)如圖5所示。
圖5 手勢(shì)識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)
1.4.1 卷積和池化
卷積層中卷積核的作用是提取圖像的特征信息,對(duì)于卷積層的某一層,用卷積核與上一層特征圖作滑動(dòng)卷積運(yùn)算再加上一個(gè)偏置值得到輸出。最后再通過(guò)激活函數(shù)就能得到卷積的結(jié)果,即輸出特征圖[7],如下所示:
(4)
池化層把輸入的特征圖分成多個(gè)不重疊的n×n塊,再對(duì)每個(gè)塊采用最大值法或者均值法,從而使得輸出特征圖縮小了n倍[7]。
本文提出的模型中第一個(gè)卷積層用32個(gè)大小是3×3的卷積核,滑動(dòng)步長(zhǎng)為1,輸出32個(gè)28×28的特征圖。第一個(gè)池化層的池化采樣的窗口大小為是2×2,步長(zhǎng)為2,得到32個(gè)14×14的特征圖。
第二個(gè)卷積層用64個(gè)大小是3×3的卷積核,滑動(dòng)步長(zhǎng)為1,輸出64個(gè)14×14的特征圖。第二個(gè)池化層的池化采樣的窗口大小為是2×2,步長(zhǎng)為2,得到64個(gè)7×7的特征圖。
網(wǎng)絡(luò)的激活函數(shù)采用Relu()函數(shù),因?yàn)镽elu()函數(shù)能使部分神經(jīng)元的輸出為0,從而使網(wǎng)絡(luò)產(chǎn)生稀疏性,減少網(wǎng)絡(luò)的復(fù)雜度,緩解了過(guò)擬合問(wèn)題的發(fā)生。
1.4.2 全連接層
本文提出的模型中第一個(gè)全連接層的輸入為64張7×7的特征圖,因此,需要1 024個(gè)神經(jīng)元。為了防止卷積神經(jīng)網(wǎng)絡(luò)出現(xiàn)過(guò)擬合問(wèn)題,在第一個(gè)全連接層之后加入了Dropout層。Dropout算法是在訓(xùn)練過(guò)程中隨機(jī)地按一定比例p(0≤p≤1)的忽略節(jié)點(diǎn),阻止神經(jīng)元過(guò)多,由此減輕了傳統(tǒng)全連接神經(jīng)網(wǎng)絡(luò)的過(guò)擬合問(wèn)題,有效地提高了網(wǎng)絡(luò)的泛化性能[8]。
在第二個(gè)全連接層的輸出通過(guò)Softmax激活函數(shù),讓識(shí)別結(jié)果以概率的形式輸出。
用gesture數(shù)據(jù)集訓(xùn)練網(wǎng)絡(luò)模型,再用自建手勢(shì)數(shù)據(jù)集測(cè)試模型。訓(xùn)練網(wǎng)絡(luò)模型采用批量隨機(jī)梯度下降法,即從訓(xùn)練總樣本中選取一個(gè)批次作為一個(gè)batch,然后計(jì)算這個(gè)batch的總誤差,根據(jù)總誤差來(lái)更新權(quán)值。使用批量隨機(jī)梯度下降法的好處是網(wǎng)絡(luò)的收斂速度更快。本文訓(xùn)練數(shù)據(jù)集每個(gè)批次batch的樣本個(gè)數(shù)設(shè)置為2 000個(gè)。使用Adam優(yōu)化器進(jìn)行迭代,學(xué)習(xí)率為1e-4,dropout設(shè)置0.75。
將gesture數(shù)據(jù)集的16 989張分成兩部分:13 989張圖像作為訓(xùn)練集,3 000張圖像作為驗(yàn)證集。網(wǎng)絡(luò)模型的構(gòu)建和訓(xùn)練使用深度學(xué)習(xí)框架TensorFlow,利用TensorBoard得到網(wǎng)絡(luò)訓(xùn)練過(guò)程中交叉熵的變化率和準(zhǔn)確率,分別如圖6和圖7所示。
圖6 訓(xùn)練過(guò)程中迭代次數(shù)與交叉熵的變化曲線
圖7 訓(xùn)練過(guò)程中迭代次數(shù)與準(zhǔn)確率的變化曲線
將訓(xùn)練好的網(wǎng)絡(luò)模型在自建的手勢(shì)數(shù)據(jù)集上進(jìn)行測(cè)試,得到識(shí)別準(zhǔn)確率為96%。
現(xiàn)有的參考文獻(xiàn)已提出了不同的方法來(lái)識(shí)別手勢(shì),表1是從實(shí)現(xiàn)算法、識(shí)別的手勢(shì)數(shù)量以及識(shí)別率三方面將本文提出的算法與文獻(xiàn)提出的三種算法進(jìn)行性能對(duì)比結(jié)果。其中,文獻(xiàn)[2]使用HMM+SVM方法對(duì)手勢(shì)進(jìn)行識(shí)別,該方法先人工提取圖像的特征,再用SVM對(duì)手勢(shì)肌電信號(hào)進(jìn)行識(shí)別。雖然支持向量機(jī)具有訓(xùn)練速度快、非線性映射能力強(qiáng)等特點(diǎn),但其準(zhǔn)確率低于卷積神經(jīng)網(wǎng)絡(luò)。文獻(xiàn)[9]提出用一個(gè)三層徑向基神經(jīng)網(wǎng)絡(luò)RBF(Radial Basis Function)對(duì)24種美國(guó)手語(yǔ)手勢(shì)進(jìn)行識(shí)別。RBF是一個(gè)三層神經(jīng)網(wǎng)絡(luò),一個(gè)輸出層,一個(gè)隱藏層,一個(gè)輸出層,屬于淺層神經(jīng)網(wǎng)絡(luò)。與該網(wǎng)絡(luò)相比,較大深度的卷積神經(jīng)網(wǎng)絡(luò)具有更高的識(shí)別率。文獻(xiàn)[2,9]都屬于傳統(tǒng)機(jī)器學(xué)習(xí)方法,卷積神經(jīng)網(wǎng)絡(luò)CNN與其相比,訓(xùn)練速度較慢,但識(shí)別率更高,并且具有更好的魯棒性。文獻(xiàn)[5]采用卷積神經(jīng)網(wǎng)絡(luò)CNN算法,在對(duì)手勢(shì)進(jìn)行訓(xùn)練之前對(duì)圖像進(jìn)行預(yù)處理,分割出手勢(shì)區(qū)域作為網(wǎng)絡(luò)輸入,該輸入圖像是一個(gè)64×64的三通道RGB圖像,而本文輸入圖像預(yù)處理成28×28的單通道灰度圖像,與其相比,本文網(wǎng)絡(luò)模型的參數(shù)減少,降低了算法復(fù)雜度。
表1 各種算法結(jié)果對(duì)比
手勢(shì)圖像中手勢(shì)的多樣性和復(fù)雜的背景信息會(huì)導(dǎo)致識(shí)別準(zhǔn)確率低下。本文提出了一種基于膚色閾值的手勢(shì)分割結(jié)合灰度卷積神經(jīng)網(wǎng)絡(luò)的手勢(shì)識(shí)別模型。首先,構(gòu)建灰度手勢(shì)圖像的卷積神經(jīng)網(wǎng)絡(luò)模型,采用gesture數(shù)據(jù)集對(duì)模型訓(xùn)練,有效地減少模型復(fù)雜度,降低模型訓(xùn)練時(shí)間。再用攝像頭采集的不同背景下的手勢(shì)圖像進(jìn)行測(cè)試,需要先對(duì)手勢(shì)圖像在YCbCr顏色空間上用閾值法分割出手勢(shì)區(qū)域并作掩膜處理。實(shí)驗(yàn)結(jié)果表明,卷積神經(jīng)網(wǎng)絡(luò)能夠高效地進(jìn)行特征提取,在兩個(gè)數(shù)據(jù)集下對(duì)手勢(shì)的平均識(shí)別率都達(dá)到96%以上,因此能有效地解決手勢(shì)識(shí)別問(wèn)題。