位政賢
(桂林電子科技大學(xué),廣西 桂林 541000)
手勢識別作為一種更自然、更直觀的人機(jī)交互方式,融入了人們的生活。按照識別設(shè)備與身體接觸與否分類,手勢識別技術(shù)又可分為接觸式手勢識別和非接觸式手勢識別[1]。接觸式手勢識別需要一些設(shè)備(如數(shù)據(jù)手套),優(yōu)點(diǎn)是準(zhǔn)確率高,缺點(diǎn)是成本高、操作繁瑣,用戶使用前需要學(xué)習(xí)校準(zhǔn),交互不夠自然,制約了推廣和使用[2]。而非接觸式手勢識別優(yōu)點(diǎn)明顯,尤其是視覺手勢識別[3]?;谝曈X的手勢識別設(shè)備簡單,能夠滿足人機(jī)交互對自然性的要求,具有非常廣闊的應(yīng)用前景。因而本文采用了單目視覺手勢識別技術(shù)。
傳統(tǒng)的視覺手勢識別過程分為:手勢跟蹤和手勢分割、手勢建模、特征提取和手勢識別。手勢識別的算法是研究的關(guān)鍵部分,識別算法可分為基于模板匹配的方法、基于數(shù)據(jù)分類的方法和基于深度學(xué)習(xí)的方法[4]。傳統(tǒng)的手勢識別方法中使用最普遍的模板匹配算法是動態(tài)時(shí)間扭曲(DTW)法;數(shù)據(jù)分類方法包括人工神經(jīng)網(wǎng)絡(luò)(ANN)、隱馬爾可夫模型(HMM)、支持向量機(jī)(SVM)等方法[5]。傳統(tǒng)的手勢識別使用人工標(biāo)定來提取特征,準(zhǔn)確率受到標(biāo)定人員熟練性和其他因素的影響,準(zhǔn)確率較低[6]。因此引入深度學(xué)習(xí)方法,它是大數(shù)據(jù)與人工智能領(lǐng)域成功結(jié)合的成果[7]。深度學(xué)習(xí)通過卷積神經(jīng)網(wǎng)絡(luò)對大量圖像進(jìn)行多次訓(xùn)練,利用卷積模型自動提取和處理目標(biāo)圖像中的特征[8]。深度學(xué)習(xí)是無監(jiān)督學(xué)習(xí),可以智能提取需要的圖像特征信息,也可以自動獲取更高層次的特征,克服了人工提取特征的主觀性和局限性的缺點(diǎn)[9]?;谏疃葘W(xué)習(xí)的手勢識別,根據(jù)處理時(shí)間維度的不同方式,可以進(jìn)一步分為卷積神經(jīng)網(wǎng)絡(luò)、三維卷積神經(jīng)網(wǎng)絡(luò)(3DCNN)和序列模型等[10]。
深度學(xué)習(xí)彌補(bǔ)了傳統(tǒng)機(jī)器學(xué)習(xí)中提取特征的不足,并且以VGGNet、GoogleNet、ResNet等為代表的卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型在圖像處理、音頻處理等領(lǐng)域具有良好的性能[11]。卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種深度學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu),由卷積層、池化層和全連接層等組成[12]。吳曉鳳等人[13]通過基于Faster R-CNN的卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手勢識別,修改了框架的關(guān)鍵參數(shù)以達(dá)到目的[14]。但存在的問題是它容易受到外界環(huán)境的干擾,并且光照條件和人類皮膚顏色對分類準(zhǔn)確性的影響較大,導(dǎo)致識別率和系統(tǒng)魯棒性較低。盡管近年來基于深度學(xué)習(xí)的手勢識別取得了較好的成績,但是在針對環(huán)境變化和自遮蔽問題的靜態(tài)手勢識別開發(fā)中仍然存在重大挑戰(zhàn)。
手勢通常可以分為動態(tài)手勢和靜態(tài)手勢。本文著重針對靜態(tài)手勢存在的準(zhǔn)確率低等問題,做出了如下貢獻(xiàn):(1)解決了復(fù)雜背景下多個(gè)用戶同時(shí)執(zhí)行手勢的手勢識別問題;(2)將傳統(tǒng)手勢識別中的YCrCb膚色模型和深度學(xué)習(xí)結(jié)合;(3)對現(xiàn)有數(shù)據(jù)集進(jìn)行預(yù)處理,并以ResNet-101作為訓(xùn)練網(wǎng)絡(luò),在大型ImageNet數(shù)據(jù)集中訓(xùn)練出預(yù)訓(xùn)練模型文件,接著使用遷移學(xué)習(xí)的方法搭建手勢識別殘差網(wǎng)絡(luò)模型,以更好、更快地提高手勢識別的準(zhǔn)確性。
隨著人工智能的迅速發(fā)展,目前卷積神經(jīng)網(wǎng)絡(luò)(CNN)應(yīng)用最為廣泛。對于神經(jīng)網(wǎng)絡(luò)的發(fā)展,研究人員首先考慮的是增加網(wǎng)絡(luò)的層數(shù)。例如,ImageNet競賽中表現(xiàn)出色的卷積神經(jīng)網(wǎng)絡(luò),2012年推出8層的AlexNet網(wǎng)絡(luò),2014年推出了16層的VGGNet以及22層的GoogleNet[15]。下面對深度殘差學(xué)習(xí)、遷移學(xué)習(xí)、膚色建模工作進(jìn)行具體的介紹。
對于部分神經(jīng)網(wǎng)絡(luò)而言,理論上,網(wǎng)絡(luò)層數(shù)越多所能提供的信息也就越多,特征也越豐富。然而,實(shí)踐研究表明,隨著網(wǎng)絡(luò)的深入,梯度變得無限小,性能逐漸趨于飽和,優(yōu)化效果變差,測試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)的準(zhǔn)確性下降。這種現(xiàn)象稱為“退化”。文獻(xiàn)[16]通過引入深度殘差學(xué)習(xí)來解決此問題。殘差網(wǎng)絡(luò)的搭建可以減少訓(xùn)練參數(shù)和數(shù)據(jù)量。殘差網(wǎng)絡(luò)的學(xué)習(xí)模型如圖1所示。
圖1 殘差網(wǎng)絡(luò)學(xué)習(xí)模型
殘差網(wǎng)絡(luò)的思想是高速網(wǎng)絡(luò)的跨層鏈接的改進(jìn):利用“shortcut connections(捷徑連接)”的方法,把輸入x直接傳到輸出作為初始結(jié)果輸入到下方,輸出結(jié)果為:
當(dāng)F(x)=0時(shí),H(x)=x。因此,ResNet學(xué)習(xí)目標(biāo)通過H(x)和x的差值來實(shí)現(xiàn)改變,殘差為:
另一種殘差學(xué)習(xí)塊是Bottleneck,如圖2所示。3層的殘差學(xué)習(xí)模塊與2層不同的是第一個(gè)卷積層采用了1×1的卷積核來降維數(shù)據(jù),經(jīng)過1個(gè)3×3的卷積核,再經(jīng)過1個(gè)1×1的卷積核恢復(fù)到原來的維度。這樣做極大地減少了計(jì)算量,同時(shí)又能夠較好地處理深層次網(wǎng)絡(luò)。實(shí)驗(yàn)表明,這種殘差塊對于深層次網(wǎng)絡(luò)訓(xùn)練有較好的效果。
圖2 ResNet-50/101/152構(gòu)建模塊
殘差網(wǎng)絡(luò)有多種不同的結(jié)構(gòu),如ResNet-50、ResNet-101和ResNet-152等。在本文中使用了三種不同的殘差網(wǎng)絡(luò)對手勢圖像數(shù)據(jù)集進(jìn)行測試,以分析不同殘差網(wǎng)絡(luò)模型對手勢識別結(jié)果的影響。
遷移學(xué)習(xí)是先在一個(gè)基礎(chǔ)的數(shù)據(jù)集上訓(xùn)練任務(wù),生成一個(gè)基礎(chǔ)網(wǎng)絡(luò)權(quán)重文件,然后把學(xué)習(xí)到的特征重新進(jìn)行調(diào)整或遷移到另一個(gè)相似的目標(biāo)網(wǎng)絡(luò)上,使用目標(biāo)網(wǎng)絡(luò)的數(shù)據(jù)集進(jìn)行訓(xùn)練。學(xué)習(xí)到的特征保存為一個(gè)網(wǎng)絡(luò)文件,即一個(gè)預(yù)訓(xùn)練模型。遷移學(xué)習(xí)的方法是一種優(yōu)化方法,既節(jié)省了時(shí)間,又能夠有更好的性能表現(xiàn)。有效的學(xué)習(xí)遷移學(xué)習(xí)方法是刪除輸出層并將整個(gè)剩余網(wǎng)絡(luò)視為特征提取器,即對預(yù)訓(xùn)練模型進(jìn)行部分的訓(xùn)練,將模型的部分層鎖定,保持其不變,對未鎖定的層重新訓(xùn)練來獲得新權(quán)重。遷移學(xué)習(xí)方法有三種:第一種方法是官方提供的預(yù)訓(xùn)練網(wǎng)絡(luò)模型ResNet-101權(quán)重,保持原網(wǎng)絡(luò)不變,再添加一個(gè)全連接層,訓(xùn)練這個(gè)全連接層;第二種方法是凍結(jié)網(wǎng)絡(luò)模型提取圖像通用特征的層,重新訓(xùn)練學(xué)習(xí)特定的最后幾層的參數(shù);第三種訓(xùn)練策略是載入別人預(yù)訓(xùn)練好的模型之后,使用數(shù)據(jù)集訓(xùn)練提到的所有網(wǎng)絡(luò)參數(shù)。
膚色建模是基于人的膚色和其他背景顏色之間的差異為輸入的圖像建立模型的過程。建立描述膚色的色度模型需要選擇一個(gè)合適的色彩空間,在該色彩空間中膚色可以聚類在一起,并且與非膚色區(qū)域盡可能少地重疊。在本文中,使用YCrCb色彩空間,該色彩空間被CCIR601廣泛用于數(shù)字視頻中。由于該模型將膚色點(diǎn)和非膚色點(diǎn)彼此分離,并克服了圖像RGB空間中通常存在的離散膚色點(diǎn)和膚色區(qū)域噪聲的問題以及環(huán)境光線的干擾問題,因此被廣泛用于人體的定位以及臉部和手部等身體部位識別。YCrCb顏色空間和RGB顏色空間的對應(yīng)關(guān)系如下:
進(jìn)行這種映射的主要原因是人類視覺系統(tǒng)對色度中的高頻分量不那么敏感。但是這種膚色建模存在一些缺點(diǎn),因此需要使用YCrCb色彩空間進(jìn)行轉(zhuǎn)換,以消除色度對亮度的依賴性。色度Cr和Cb受亮度和二維獨(dú)立分布的干擾較小,并且膚色聚類投影在Cr-Cb上的近似橢圓區(qū)域中。該算法可以檢測到人體所有裸露部分的皮膚,例如手臂和臉部區(qū)域,并使皮膚的色點(diǎn)集中形成一個(gè)連通區(qū)域,從而為進(jìn)一步的手勢識別奠定了良好的基礎(chǔ)。但是,由于一些多余的膚色信息將具有相同的檢測性能,因此在膚色建模之前需要遮蓋諸如面部之類的近膚色信息。
結(jié)合上述算法研究,本文的技術(shù)路線如下:首先,將殘差網(wǎng)絡(luò)用于迭代訓(xùn)練以生成權(quán)重文件,并使用來自NUS Hand Posture的靜態(tài)手勢數(shù)據(jù)集,該數(shù)據(jù)集涵蓋了6種手勢(從0到5),訓(xùn)練集中有5 707個(gè)手勢圖像,測試集中有480個(gè)手勢圖像。在手勢識別系統(tǒng)中使用訓(xùn)練生成的權(quán)重文件。本文的技術(shù)路線如圖3所示。
圖3 技術(shù)路線
手勢識別系統(tǒng)通過攝像頭獲取手勢圖像,使用OpenCV附帶的功能遮蓋臉部等近皮膚顏色部分,將處理后的圖像轉(zhuǎn)換為YCrCb皮膚顏色空間,并分離手部皮膚,在對皮膚進(jìn)行顏色建模后從背景中提取顏色區(qū)域;然后按大小對所有分離的手部圖像進(jìn)行歸一化處理,并依次使用先前訓(xùn)練過的手勢數(shù)據(jù)權(quán)重文件進(jìn)行預(yù)測,以進(jìn)行正確的手勢分類。
本文中的數(shù)據(jù)集較少,只有5 000張照片,數(shù)據(jù)集背景單一、數(shù)據(jù)之間具有高度相似性。在這種情況下,使用遷移學(xué)習(xí)方法不會要求重新訓(xùn)練模型。
第一組實(shí)驗(yàn)是對不同的遷移學(xué)習(xí)策略進(jìn)行比較。本文通過對三種訓(xùn)練策略的比較,最終選擇了第一種訓(xùn)練策略,所使用的預(yù)訓(xùn)練模型是ResNet-101官方提供的Slim框架預(yù)訓(xùn)練模型。實(shí)驗(yàn)發(fā)現(xiàn),第一種遷移學(xué)習(xí)方法能夠較快較好地達(dá)到實(shí)驗(yàn)的最好效果。因此,將輸出層更改為與分類情況相匹配的結(jié)構(gòu),本文使用在ImageNet上訓(xùn)練的模型對6個(gè)手勢進(jìn)行了分類(從0到5),從而更改了密集層的輸出以及最終的softmax從原始類別數(shù)到目標(biāo)類別數(shù)。第二組實(shí)驗(yàn)是對 AlexNet、VGGNet、GoogleNet、ResNet-18、ResNet-34、ResNet-50、ResNet-101和ResNet-152共8個(gè)網(wǎng)絡(luò)模型的效果進(jìn)行對比。由于這些網(wǎng)絡(luò)模型很難同時(shí)獲得最佳條件,因此本文對相同實(shí)驗(yàn)環(huán)境中的多個(gè)實(shí)驗(yàn)進(jìn)行了比較分析,保持實(shí)驗(yàn)條件一致,并以網(wǎng)絡(luò)分類測試的準(zhǔn)確性為標(biāo)準(zhǔn)。第三組實(shí)驗(yàn)比較了5種常用的優(yōu)化算法,例如Adam、SGD、Ftrl、Adagrad、Adadelta。在第二組實(shí)驗(yàn)中,每個(gè)特定實(shí)驗(yàn)組的測試準(zhǔn)確性見表1所列。其中ResNet-101的精度略優(yōu)于其他網(wǎng)絡(luò)。
表1 測試準(zhǔn)確性
第三組實(shí)驗(yàn)的結(jié)果如圖4所示,可以看出,Adam的優(yōu)化效果明顯,并且可以在短時(shí)間內(nèi)達(dá)到穩(wěn)定的精度。
圖4 優(yōu)化方式對比
卷積神經(jīng)網(wǎng)絡(luò)利用多層神經(jīng)元的拼接來提取不同級別的特征,并不斷迭代以將它們組合成進(jìn)一步的層次特征。與傳統(tǒng)的人工提取特征方式相比,它具有更強(qiáng)大的特征表示和泛化能力。然而,神經(jīng)網(wǎng)絡(luò)層次的滲透帶來了兩個(gè)問題:一個(gè)是訓(xùn)練過程中由于神經(jīng)網(wǎng)絡(luò)導(dǎo)致的梯度消失和梯度爆炸問題;另一個(gè)是網(wǎng)絡(luò)模型結(jié)構(gòu)變得復(fù)雜,需要大量的計(jì)算和內(nèi)存,實(shí)時(shí)性無法滿足要求。針對深度卷積神經(jīng)網(wǎng)絡(luò)隨著卷積層數(shù)的增加而難以訓(xùn)練和降低網(wǎng)絡(luò)模型性能的問題,提出了一種基于深度殘差網(wǎng)絡(luò)模型的手勢檢測方法。模型權(quán)重文件是通過訓(xùn)練和驗(yàn)證從0到5的5 707個(gè)手勢圖像的實(shí)驗(yàn)數(shù)據(jù)集而生成的。本文在采集的手勢圖像中遮蓋皮膚顏色類似部分(例如臉部等區(qū)域),在遮蓋的遮罩上呈現(xiàn)YCrCb皮膚顏色處理后的圖像,將處理后的圖像中的手部區(qū)域修剪和縮放為指定大小,并使用生成的模型權(quán)重文件執(zhí)行分類過程。實(shí)驗(yàn)的準(zhǔn)確性較之前的系統(tǒng)有了很大的提高。盡管如此,本文提出的手勢識別算法依然存在一些缺陷。例如,由于條件的限制,簡化了實(shí)驗(yàn)中使用的手勢數(shù)據(jù)集的背景,并且該算法的數(shù)量和類型需要拓寬手勢。還應(yīng)提高手勢識別分類的準(zhǔn)確性,以更好地應(yīng)用于實(shí)際生產(chǎn)生活中的人機(jī)交互。