周文軍,張 勇,王昱潔
(合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院,合肥 230601)
人機(jī)交互[1]是實(shí)現(xiàn)用戶與計(jì)算機(jī)之間信息交換的通路,而基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別則提供了一種更加自然和諧的人機(jī)交互方式,成為人機(jī)交互領(lǐng)域的研究熱點(diǎn)。手勢(shì)識(shí)別的研究促進(jìn)了遠(yuǎn)程操控、VR[2]等相關(guān)技術(shù)的發(fā)展,同時(shí)也對(duì)手語(yǔ)識(shí)別發(fā)揮著重要作用。
一般的靜態(tài)手勢(shì)識(shí)別方法通常分為檢測(cè)分割、特征分析、分類器識(shí)別3個(gè)階段[3]。此類方法易受背景干擾,且由于需先分割再識(shí)別,因此實(shí)時(shí)性不高。針對(duì)上述問(wèn)題,研究者采用基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)[4]的方法進(jìn)行手勢(shì)識(shí)別。這類方法無(wú)需將手勢(shì)從圖片中分割出來(lái),圖像可以直接輸入神經(jīng)網(wǎng)絡(luò),省去了傳統(tǒng)識(shí)別算法中手動(dòng)提取特征的復(fù)雜操作[5]。文獻(xiàn)[6]提出一種基于CNN的手勢(shì)識(shí)別方法來(lái)識(shí)別圖片中人類日常生活的手勢(shì)動(dòng)作。文獻(xiàn)[7]將CNN應(yīng)用于手勢(shì)識(shí)別,并通過(guò)大量仿真實(shí)驗(yàn)證明了該方法的有效性及魯棒性。文獻(xiàn)[8]提出一種基于Faster R-CNN的手勢(shì)識(shí)別算法,并在多個(gè)手勢(shì)數(shù)據(jù)集上取得了較好的檢測(cè)結(jié)果。
上述基于CNN的手勢(shì)識(shí)別方法提高了實(shí)時(shí)性,但由于未融合各個(gè)特征提取層的語(yǔ)義信息,因此檢測(cè)精度未能得到進(jìn)一步提高。DSSD[9]算法是一種基于深度CNN的算法,其通過(guò)反卷積模塊融合了各個(gè)特征提取層的語(yǔ)義信息,檢測(cè)精度較高并對(duì)小目標(biāo)較為魯棒。本文提出一種靜態(tài)手勢(shì)實(shí)時(shí)識(shí)別方法,在DSSD網(wǎng)絡(luò)模型的基礎(chǔ)上,針對(duì)自制的數(shù)據(jù)集,利用K-means算法[10-11]及手肘法選取先驗(yàn)框的寬高比以提高檢測(cè)精度,采用遷移學(xué)習(xí)[12]的方法,對(duì)比不同基礎(chǔ)網(wǎng)絡(luò)(AlexNet[13]、VGG16[14]、ResNet101[15])對(duì)DSSD網(wǎng)絡(luò)模型的影響,同時(shí)解決數(shù)據(jù)量小所導(dǎo)致的檢測(cè)精度低下的問(wèn)題。
DSSD的結(jié)構(gòu)如圖1所示,其基礎(chǔ)網(wǎng)絡(luò)為ResNet101,其中conv3_x層為ResNet101中的卷積層,之后5層是一系列逐漸變小的卷積層,上述卷積層作為DSSD網(wǎng)絡(luò)的特征層(共6層)。在這之后DSSD添加了一系列反卷積層并設(shè)計(jì)了反卷積模塊來(lái)融合先前的特征層(conv3_x、卷積層)和反卷積層。此外,DSSD還設(shè)計(jì)了新的預(yù)測(cè)模塊并將預(yù)測(cè)移到了反卷積層上進(jìn)行。

圖1 DSSD網(wǎng)絡(luò)結(jié)構(gòu)
反卷積模塊的功能是將高層特征映射信息與低層特征映射信息進(jìn)行融合,其結(jié)構(gòu)如圖2所示。可見(jiàn),DSSD使用已學(xué)習(xí)好的反卷積層代替雙線性上采樣,并在每個(gè)卷積層之后添加歸一化層。另外,DSSD在結(jié)合高層特征映射和低層特征映射時(shí),采用基于元素點(diǎn)積的方式以獲得更好的精度。

圖2 反卷積模塊
SSD預(yù)測(cè)模塊如圖3(a)所示,圖3(b)是在SSD預(yù)測(cè)模塊的基礎(chǔ)上添加了一個(gè)殘差單元,并在殘差旁路將原先的特征圖做卷積處理后與網(wǎng)絡(luò)主干道的特征圖做通道間加法,從而形成一個(gè)新的預(yù)測(cè)模塊。

圖3 預(yù)測(cè)模塊
DSSD識(shí)別手勢(shì)是一個(gè)回歸與分類的過(guò)程,其中,生成識(shí)別邊框是一個(gè)回歸的過(guò)程,判斷識(shí)別框內(nèi)手勢(shì)所屬類別是一個(gè)分類過(guò)程[16]。因此,總體目標(biāo)損失函數(shù)可表示為定位損失和置信損失的加權(quán)和:
(1)

(2)
置信損失Lconf(x,c)是多類置信度的Softmax損失,表示為:
(3)
DSSD識(shí)別手勢(shì)具體步驟如下:
步驟16個(gè)特征層可得到6個(gè)大小不同的特征圖,每個(gè)n×n大小的特征圖有n×n個(gè)特征圖小格,每個(gè)特征圖小格產(chǎn)生K個(gè)先驗(yàn)框。其中K=2+2m(m為寬高比的個(gè)數(shù)),代表著2個(gè)大小不同的正方形先驗(yàn)框與2m個(gè)長(zhǎng)方形先驗(yàn)框。
步驟2對(duì)于每個(gè)真實(shí)手勢(shì)目標(biāo)g,找到與其交并比最大的先驗(yàn)框以及任何與其交并比大于閾值(例如0.5)的先驗(yàn)框,這些先驗(yàn)框與其進(jìn)行匹配,稱為正樣本,反之則為負(fù)樣本。將真實(shí)目標(biāo)的位置信息和類別信息映射到先驗(yàn)框上。
步驟3對(duì)于各個(gè)特征圖中的正負(fù)樣本,分別對(duì)其進(jìn)行預(yù)測(cè)(通過(guò)2個(gè)3×3卷積核對(duì)特征圖進(jìn)行卷積操作)從而獲得預(yù)測(cè)框l的置信度和位置信息。將其與經(jīng)步驟1、步驟2后得到的先驗(yàn)框進(jìn)行損失計(jì)算,損失函數(shù)為定位損失和置信損失的加權(quán)和,如式(1)所示。
步驟4對(duì)于每個(gè)預(yù)測(cè)框,按照類別置信度確定其手勢(shì)類別并過(guò)濾屬于背景的預(yù)測(cè)框,根據(jù)置信度閾值(如0.5)過(guò)濾閾值較低的預(yù)測(cè)框,執(zhí)行NMS算法[17]過(guò)濾重疊度較大的預(yù)測(cè)框,剩余的預(yù)測(cè)框就是檢測(cè)結(jié)果。
本文利用普通網(wǎng)絡(luò)攝像頭mosengsm rqeso008在不同背景、光照強(qiáng)度下采集了4 800張手勢(shì)圖片,部分圖片如圖4所示。每張圖片中有1個(gè)~3個(gè)不等的手勢(shì),手勢(shì)總個(gè)數(shù)為10 000個(gè),分為10類手勢(shì),它們?cè)谥袊?guó)手語(yǔ)中分別代表著10種不同的意思,如圖5所示。

圖4 訓(xùn)練圖片樣例

圖5 應(yīng)用于中國(guó)手語(yǔ)的10種手勢(shì)
圖片采集完畢后,利用標(biāo)簽標(biāo)注工具LabelImage對(duì)感興趣的手勢(shì)部位進(jìn)行人工標(biāo)注,得到真實(shí)目標(biāo)的標(biāo)簽文件并將數(shù)據(jù)集轉(zhuǎn)換為ldbm格式。針對(duì)自制的數(shù)據(jù)集數(shù)據(jù)量不足的問(wèn)題,本文采用數(shù)據(jù)增強(qiáng)[18]方法,對(duì)每個(gè)訓(xùn)練圖像,從下列3種采樣策略中隨機(jī)選取一種進(jìn)行采樣。
1)使用完整的原始圖片。
2)截取圖片中的一塊使其與真實(shí)目標(biāo)的交并比為0.1、0.3、0.5、0.7 或 0.9。
3)在原始圖片上隨機(jī)截取一塊,截取比例為原圖片的[0.1,1]。
采樣后,每個(gè)采樣塊被調(diào)整至固定大小,并進(jìn)行隨機(jī)的光學(xué)畸變及0.5倍概率的水平翻轉(zhuǎn)。
由DSSD識(shí)別過(guò)程可知,寬高比的個(gè)數(shù)越多,先驗(yàn)框的數(shù)量也就越多,越能找到與真實(shí)目標(biāo)更匹配的先驗(yàn)框從而提高檢測(cè)精度,但同時(shí)也會(huì)在預(yù)測(cè)及進(jìn)行NMS時(shí)花費(fèi)更多的時(shí)間。因此,選取一個(gè)合適的寬高比十分重要,針對(duì)自制的數(shù)據(jù)集,本文重新選取了先驗(yàn)框的寬高比。
本文使用K-means聚類算法來(lái)獲得手勢(shì)寬高比的k個(gè)聚類中心,并且使用手肘法來(lái)確定最優(yōu)k值。手肘法的核心指標(biāo)是誤差平方和(Sum of Squared Errors,SSE),計(jì)算公式如下:
(4)
其中,ci是第i個(gè)簇,p是ci中的樣本點(diǎn),mi是ci的質(zhì)心(ci中所有樣本的均值)。SSE是所有樣本的聚類誤差,代表了聚類效果的好壞。當(dāng)k小于真實(shí)聚類數(shù)時(shí),SSE的下降幅度會(huì)較大,而當(dāng)k到達(dá)真實(shí)聚類數(shù)時(shí),SSE的下降幅度會(huì)驟減。
本文首先從標(biāo)簽文件中獲取手勢(shì)的寬和高從而得到寬高比,然后以寬高比為特征運(yùn)行K-means算法,從k=3開(kāi)始,不斷增大k值,實(shí)驗(yàn)結(jié)果如圖6所示。可以看出,當(dāng)k=5時(shí)SSE的下降幅度開(kāi)始減緩。因此,k=5為本文最優(yōu)k值,此時(shí)的寬高比聚類結(jié)果如表1所示。

圖6 k值與SSE的關(guān)系

表1 不同寬高比對(duì)應(yīng)的聚類結(jié)果
可見(jiàn),先驗(yàn)框的寬高比在1~3之間,本文選取1、1.5、2、3作為先驗(yàn)框的寬高比。
遷移學(xué)習(xí)一般是將從源域?qū)W習(xí)到的關(guān)系應(yīng)用到目標(biāo)域。遷移學(xué)習(xí)能夠很好地解決數(shù)據(jù)量不足的問(wèn)題,而且有利于縮短訓(xùn)練時(shí)間,提高模型的識(shí)別率。
由于本文數(shù)據(jù)集較小,直接訓(xùn)練的效果較差且訓(xùn)練時(shí)間較長(zhǎng),因此使用在 PASCAL VOC 數(shù)據(jù)集下訓(xùn)練得到的殘差網(wǎng)絡(luò)參數(shù)來(lái)對(duì)DSSD 模型的基礎(chǔ)網(wǎng)絡(luò)進(jìn)行初始化,再對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練(訓(xùn)練時(shí)先驗(yàn)框?qū)捀弑葹?、1.5、2、3),訓(xùn)練結(jié)果為遷移 Resnet101 模型。同樣,將DSSD的基礎(chǔ)網(wǎng)絡(luò)分別換為去掉全連接層的VGG16和AlexNet,選取VGG16中的卷積層conv4_3、AlexNet中的卷積層conv5,分別與額外的5層卷積層一起作為特征層進(jìn)行特征提取與融合,并使用在PASCAL VOC數(shù)據(jù)集下訓(xùn)練得到的參數(shù)來(lái)初始化DSSD 模型的基礎(chǔ)網(wǎng)絡(luò),之后對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,訓(xùn)練結(jié)果分別為遷移VGG16 模型以及遷移AlexNet模型。作為對(duì)照,不引入遷移學(xué)習(xí)即不使用已訓(xùn)練好的參數(shù),直接對(duì)本文數(shù)據(jù)集進(jìn)行訓(xùn)練得到無(wú)遷移Resnet101模型、無(wú)遷移VGG16模型以及無(wú)遷移AlexNet模型。
本文實(shí)驗(yàn)計(jì)算機(jī)的操作系統(tǒng)為Ubuntu16.04,CPU為英特爾i7,GPU為INVDIA GTX Titan X,內(nèi)存為32 GB,CUDA為cuda8.0。實(shí)驗(yàn)使用深度學(xué)習(xí)計(jì)算框架Caffe。
從收集的4 800張圖片中,隨機(jī)選擇3 600張圖片作為訓(xùn)練集,其余1 200張圖片作為測(cè)試集。
第1階段:以去掉全連接層的AlexNet、VGG16及ResNet101分別作為SSD的基礎(chǔ)網(wǎng)絡(luò),訓(xùn)練得到3個(gè)不同的SSD模型,輸入圖片的大小為321像素×321像素。在訓(xùn)練時(shí),前5 000次迭代使用學(xué)習(xí)率10-3,5 000次~7 000 次迭代使用學(xué)習(xí)率10-4,7 000次~8 000次迭代使用學(xué)習(xí)率10-5,經(jīng)過(guò)80 000次迭代模型收斂。
第2階段:加載上一階段訓(xùn)練好得到的3個(gè)SSD模型來(lái)分別初始化DSSD網(wǎng)絡(luò),凍結(jié)SSD網(wǎng)絡(luò)的參數(shù),訓(xùn)練反卷積模型。前20 000迭代使用學(xué)習(xí)率10-3,后20 000次使用學(xué)習(xí)率10-4,40 000次迭代后得到收斂的3個(gè)最優(yōu)DSSD模型。
為了驗(yàn)證遷移學(xué)習(xí)是否產(chǎn)生作用,對(duì)2.3節(jié)中訓(xùn)練得到無(wú)遷移Resnet101模型、無(wú)遷移VGG16模型、無(wú)遷移AlexNet模型、遷移 Resnet101模型、遷移VGG16模型以及遷移AlexNet模型分別進(jìn)行測(cè)試,結(jié)果如表2所示。由表2可以看出,在數(shù)據(jù)量較少的情況下,遷移學(xué)習(xí)確實(shí)可以提高模型的識(shí)別精度,本文以平均精度均值(Mean Average Precision,mAP)作為評(píng)價(jià)指標(biāo)。以基礎(chǔ)網(wǎng)絡(luò)Resnet101為例,遷移學(xué)習(xí)將mAP從0.748提高至0.945。此外,作為DSSD的基礎(chǔ)網(wǎng)絡(luò),相比于AlexNet和VGG16,ResNet101有著更高的識(shí)別率。因此,本文選用ResNet101作為DSSD的基礎(chǔ)網(wǎng)絡(luò)進(jìn)行后續(xù)實(shí)驗(yàn)。

表2 遷移學(xué)習(xí)結(jié)果
本文選定了基礎(chǔ)網(wǎng)絡(luò)ResNet101后,驗(yàn)證2.2節(jié)中重新選取的寬高比是否使識(shí)別精度得到了提高。在其他條件不變的情況下,使用原始寬高比{1,2,3}重新訓(xùn)練一個(gè)遷移Resnet101模型進(jìn)行對(duì)比實(shí)驗(yàn),識(shí)別結(jié)果如表3所示。由表3可以看出,本文重新選取的寬高比{1,1.5,2,3}相對(duì)于原寬高比{1,2,3}可使識(shí)別精度提高了1.9%。
表3 不同寬高比的DSSD算法識(shí)別結(jié)果
Table 3 Recognition results of DSSD algorithm with different aspect ratios

寬高比mAP原始:{1,2,3}0.926新選取:{1,1.5,2,3}0.945
為了進(jìn)一步提高識(shí)別精度,針對(duì)Resnet101網(wǎng)絡(luò),本文通過(guò)增大輸入尺寸的辦法來(lái)使深層的feature map仍然保持空間信息。因此,本文將輸入圖片的尺寸增大至513像素×513像素進(jìn)行對(duì)比實(shí)驗(yàn),測(cè)試結(jié)果如表4所示。
表4 不同輸入圖片尺寸的DSSD算法識(shí)別結(jié)果
Table 4 Recognition results of DSSD algorithm with different input image sizes

圖片尺寸/像素mAP識(shí)別速度/(frame·s-1)321×3210.94515513×5130.9568
從表4可以看出,當(dāng)輸入圖片的尺寸較小時(shí),DSSD算法的mAP為0.945;當(dāng)輸入圖片的尺寸增大時(shí),DSSD的mAP提高了0.011,達(dá)到了0.956。但是,隨著圖片尺寸的增大,識(shí)別速度也隨之降低。因此,在實(shí)時(shí)性要求不高的場(chǎng)合,可以通過(guò)增大輸入圖片尺寸來(lái)提高檢測(cè)精度。
為了說(shuō)明本文方法的性能優(yōu)劣,基于相同的數(shù)據(jù)集,分別采用Faster R-CNN[19]、YOLO[20]和SSD[21]神經(jīng)網(wǎng)絡(luò)來(lái)訓(xùn)練手勢(shì)識(shí)別模型以作為對(duì)比。為確保實(shí)驗(yàn)的公平性,通過(guò)調(diào)參將各方法的手勢(shì)識(shí)別模型均訓(xùn)練至最佳。參照各方法在PASCAL VOC數(shù)據(jù)集下訓(xùn)練得到的訓(xùn)練參數(shù)值,針對(duì)本文數(shù)據(jù)集,采用以下策略選取了各方法幾個(gè)主要訓(xùn)練參數(shù)的最優(yōu)值:
1)通過(guò)觀測(cè)模型收斂速度(即損失函數(shù)值的變化率)來(lái)選擇基礎(chǔ)學(xué)習(xí)率,以收斂速度最快的學(xué)習(xí)率作為基礎(chǔ)學(xué)習(xí)率。
2)采用變化的學(xué)習(xí)率來(lái)訓(xùn)練模型,每當(dāng)損失函數(shù)值的變化率小于一定閾值時(shí)(據(jù)觀測(cè)及經(jīng)驗(yàn)值,此處閾值選擇為0.005),便將學(xué)習(xí)率調(diào)整至原來(lái)的0.1倍,從而使模型更有效地學(xué)習(xí)以降低訓(xùn)練損失。
3)權(quán)重衰減沿用經(jīng)驗(yàn)值0.000 5。
4)當(dāng)損失函數(shù)值趨于0、訓(xùn)練精度不再提高時(shí),認(rèn)為模型訓(xùn)練完畢,此時(shí)的迭代次數(shù)作為總迭代次數(shù)。
本文采用上述策略選取得到的最優(yōu)訓(xùn)練參數(shù)參與訓(xùn)練得到了各方法的最佳手勢(shì)識(shí)別模型,各方法的最優(yōu)訓(xùn)練參數(shù)值如表5所示。訓(xùn)練結(jié)束后,分別測(cè)試各方法的最佳手勢(shì)識(shí)別模型,其識(shí)別結(jié)果如表6所示。其中,SSD(300×300)代表該方法輸入SSD模型的圖像尺寸為300像素×300像素,其他方法類推。可以看出,2種DSSD方法的識(shí)別精度分別高達(dá)0.945和0.956,均優(yōu)于其他方法。但由于DSSD采用了更深的網(wǎng)絡(luò)結(jié)構(gòu),并增加了額外的預(yù)測(cè)模塊和反卷積模塊,因此其檢測(cè)速度較其他方法稍慢,但仍保持了15 frame/s和8 frame/s的合理檢測(cè)速度。因此,相較于其他方法,本文方法在保持合理速度的同時(shí)獲得了較好的精度。

表5 各方法的最優(yōu)訓(xùn)練參數(shù)值

表6 各方法最優(yōu)模型的識(shí)別結(jié)果
上述實(shí)驗(yàn)對(duì)比了本文方法與其他方法的識(shí)別精度,本節(jié)進(jìn)一步實(shí)驗(yàn)統(tǒng)計(jì)其在4種不同環(huán)境下的識(shí)別精度,結(jié)果如表7所示。由表7可以看出,該方法在明亮、簡(jiǎn)單背景環(huán)境下的識(shí)別效果最好,mAP達(dá)到了0.956和0.965,而在較暗、復(fù)雜背景的環(huán)境下識(shí)別精度最差,但其mAP仍達(dá)到了0.935和0.949,可見(jiàn)本文方法受環(huán)境的干擾不明顯,可完成多種環(huán)境下的檢測(cè)任務(wù)。

表7 不同環(huán)境下的mAP值
由于DSSD設(shè)計(jì)一個(gè)反卷積模塊來(lái)融合各個(gè)特征提取層的語(yǔ)義信息,因此本文方法在檢測(cè)小手勢(shì)目標(biāo)方面也具有較好的能力。為了證明這一點(diǎn),本文拍攝了300張測(cè)試照片(距離攝像頭約8 m),其中手勢(shì)相對(duì)于圖片非常小。與表6中識(shí)別精度表現(xiàn)較好的SSD(512×512)方法進(jìn)行比較,結(jié)果如表8所示。其中2個(gè)檢測(cè)示例如圖7和圖8所示。可以看出,本文方法在小手勢(shì)目標(biāo)的檢測(cè)能力上優(yōu)于SSD(512×512)方法,可實(shí)現(xiàn)較遠(yuǎn)距離的手勢(shì)識(shí)別。
表8 SSD與DSSD對(duì)于小手勢(shì)目標(biāo)的檢測(cè)結(jié)果
Table 8 Detection results of SSD and DSSD for small gesture targets

方法mAPSSD(512×512)0.757DSSD(513×513)0.817

圖7 SSD(512×512)方法對(duì)小手勢(shì)目標(biāo)的檢測(cè)結(jié)果

圖8 DSSD(513×513)方法對(duì)小手勢(shì)目標(biāo)的檢測(cè)結(jié)果
本文提出一種基于DSSD的識(shí)別方法用于實(shí)時(shí)識(shí)別靜態(tài)手勢(shì)。在自制的數(shù)據(jù)集中,采用K-means聚類算法及手肘法選取先驗(yàn)框的寬高比,并以ResNet101作為基礎(chǔ)網(wǎng)絡(luò),利用遷移學(xué)習(xí)解決小數(shù)據(jù)集帶來(lái)的檢測(cè)精度低的問(wèn)題。實(shí)驗(yàn)結(jié)果表明,經(jīng)過(guò)訓(xùn)練,得到2個(gè)手勢(shì)識(shí)別模型DSSD(321×321)和DSSD(513×513)的mAP分別為0.945和0.956,優(yōu)于基于Faster R-CNN、YOLO及SSD等網(wǎng)絡(luò)的手勢(shì)識(shí)別方法,并且其檢測(cè)速度可達(dá)15 frame/s和8 frame/s,可滿足實(shí)時(shí)識(shí)別的需求。此外,本文方法對(duì)小手勢(shì)目標(biāo)也有較好的檢測(cè)性能,能夠?qū)崿F(xiàn)相對(duì)遠(yuǎn)距離的手勢(shì)識(shí)別。后續(xù)將嘗試用簡(jiǎn)單的雙線性上采樣來(lái)代替反卷積層,進(jìn)一步提高檢測(cè)速度。