程淑紅, 程彥龍
(燕山大學(xué) 電氣工程學(xué)院, 河北 秦皇島 066004)
目前,手勢識別在手語認(rèn)知、輔助駕駛、電子游戲以及機器控制等領(lǐng)域應(yīng)用前景廣闊[1,2],隨著深度學(xué)習(xí)的快速發(fā)展,基于視覺的手勢識別成為人機交互領(lǐng)域重點研究方向之一。手勢識別一般分為手勢分割、手勢特征提取和手勢識別3個步驟[3],手勢分割是從前景和手臂中分離出手部區(qū)域,常見的分割方法是利用膚色特征模型[4],但此類方法對光照變化和復(fù)雜背景都十分敏感。為減少光照條件影響,宋曉娜等[5]采用一種基于亮度高斯模型的手部檢測算法,首先在RGB顏色空間建立亮度高斯模型,然后通過閾值方法獲取手部區(qū)域,但由于膚色差異,該方法適用性不強。為減弱類膚色物體干擾,張明達(dá)[6]結(jié)合膚色模型和人手結(jié)構(gòu)特征,通過檢測指尖個數(shù)、計算手勢輪廓周長面積比提高復(fù)雜背景下手勢分割的準(zhǔn)確性,但處理時間較長,無法滿足實時性要求。手勢特征提取和識別[7~9]是先提取手勢幾何特征、Haar-like特征、方向梯度直方圖(histogram of oriented gradient,HOG)特征、局部二值模式(local binary patterns,LBP)特征等,然后借助模板匹配和支持向量機(support vector machine,SVM)[10]等方法完成識別,但以上這些手勢特征對手勢細(xì)粒度的表征能力較差,對區(qū)分度低的相似手勢識別準(zhǔn)確性低,很難滿足應(yīng)用需求。以上方法雖然能在某種程度上識別簡單手勢,但均存在手勢分割易受光照變化和類膚色物體干擾、手勢特征表達(dá)不充分,無法區(qū)分相近手勢和手勢識別實時性差的局限性。為此,本文提出融合批量再標(biāo)準(zhǔn)化和YOLOv3的手勢識別方法,進(jìn)行端到端手勢識別,識別速度快,識別率較高,并已得到實驗驗證。
手勢識別系統(tǒng)總體流程如圖1所示。先采集手勢圖像并進(jìn)行樣本預(yù)處理,建立標(biāo)準(zhǔn)手勢數(shù)據(jù)庫;使用K均值聚類方法獲得適合訓(xùn)練集手勢的錨點框;然后使用手勢錨點框 、YOLOv3和批量再標(biāo)準(zhǔn)化進(jìn)行手勢建模,最后通過遷移學(xué)習(xí)和微調(diào)方法訓(xùn)練得到手勢識別模型。YOLOv3具有強大的自主學(xué)習(xí)能力和快速性,在其基礎(chǔ)上訓(xùn)練手勢識別模型可避免手勢分割和人工設(shè)計手勢特征,提高手勢識別速率。批量再標(biāo)準(zhǔn)化可通過等效數(shù)據(jù)規(guī)范化處理提高YOLOv3網(wǎng)絡(luò)的泛化能力,提高手勢識別準(zhǔn)確性[11]。
圖1 手勢識別算法流程
2.1.1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)由提取圖片特征的網(wǎng)絡(luò)Darknet-53和預(yù)測層2部分構(gòu)成[12,13],可以直接預(yù)測手勢的類別及位置,識別速度也可以達(dá)到實時性要求。
如圖2所示,Darknet-53網(wǎng)絡(luò)作為YOLOv3中提取圖片特征的主要網(wǎng)絡(luò)結(jié)構(gòu),Darknet-53包含一系列1×1、3×3的卷積核,并在每個卷積層后面連接Batch Normalization層和Leaky ReLU層。
圖2 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
為避免訓(xùn)練時出現(xiàn)梯度彌散或梯度爆炸,Darknet-53將深度神經(jīng)網(wǎng)絡(luò)分為若干子段,每個子段包含的網(wǎng)絡(luò)層數(shù)較淺,然后通過躍層連接使得每個子段對殘差進(jìn)行訓(xùn)練,最后達(dá)到總體損失最小的目的。Darknet-53能夠提取比手勢幾何特征、HOG特征、Harr特征等表征能力更好的手勢細(xì)粒度特征。預(yù)測層在13×13,26×26,52×52這3種尺度上對手勢進(jìn)行預(yù)測,每個邊界框負(fù)責(zé)對3個錨點框進(jìn)行回歸,選其中1個作為最終預(yù)測結(jié)果輸出,包括手勢的中心位置,寬高, 置信度和類別。通過在3種尺度上進(jìn)行預(yù)測的方法,有效增強了對不同尺度手勢及被遮擋手勢的檢測效果,并引入Concatenate層連接以強化網(wǎng)絡(luò)收斂效果。
2.1.2 手勢邊界框預(yù)測與損失函數(shù)
YOLOv3使用K均值維度聚類對手勢訓(xùn)練樣本邊界框進(jìn)行聚類,獲取最合適的錨點框尺寸,對不同尺度手勢進(jìn)行邊界框預(yù)測, 通過本文20種標(biāo)準(zhǔn)手勢數(shù)據(jù)聚類出的9個手勢錨點框尺寸為(21×32),(28×62),(31×81),(32×26),(39×64),(48×65),(53×99),(68×67),(92×112),然后按照式(1)對每個手勢邊界框獲取4個坐標(biāo)值。
(1)
式中:cx和cy為一個網(wǎng)格與手勢圖像左上角的縱橫距離;tx,ty為網(wǎng)絡(luò)預(yù)測的坐標(biāo)偏移量;σ為logistic函數(shù),將坐標(biāo)值縮放到0和1之間;tw和th為尺度縮放因子;pw和ph為網(wǎng)格對應(yīng)錨點框的寬和高。通過對置信度這項設(shè)定閾值過濾掉低分的手勢預(yù)測框,然后對留下的預(yù)測框通過非極大值抑制輸出最終手勢預(yù)測結(jié)果。
YOLOv3中使用的損失函數(shù)包括坐標(biāo)損失、置信度預(yù)測損失和類別損失。通過損失函數(shù)可以評估手勢分類模型的穩(wěn)定程度,損失值越小,表明模型越穩(wěn)定,預(yù)測結(jié)果也更加可靠。本文手勢識別模型的訓(xùn)練損失函數(shù)如圖3所示,可以看到模型的損失值逐漸降低,最后趨近理想狀態(tài),說明本文手勢識別模型對復(fù)雜背景下定義的20種手勢能夠提供穩(wěn)定可靠的識別結(jié)果。
圖3 損失函數(shù)變化
YOLOv3網(wǎng)絡(luò)在進(jìn)行訓(xùn)練時主動學(xué)習(xí)手勢數(shù)據(jù)特征的分布規(guī)律,如果測試階段所用手勢數(shù)據(jù)與訓(xùn)練階段的手勢數(shù)據(jù)存在較大偏差會嚴(yán)重影響網(wǎng)絡(luò)的泛化能力,降低預(yù)測階段手勢識別的準(zhǔn)確性。批量標(biāo)準(zhǔn)化處理可以減小手勢數(shù)據(jù)間可能存在的較大偏差,然而簡單標(biāo)準(zhǔn)歸一化處理并不能很好體現(xiàn)手勢訓(xùn)練樣本的數(shù)據(jù)特征分布,反而會削弱YOLOv3網(wǎng)絡(luò)的特征表達(dá)能力,為此YOLOv3采用的批量規(guī)范化處理[14]如下所示:
(2)
式中:γ、β為尺度因子和平移因子;uB,σB分別為每次mini-batch訓(xùn)練數(shù)據(jù)的均值和標(biāo)準(zhǔn)差;xi,yi為手勢數(shù)據(jù)輸入輸出特征;k是為避免除數(shù)為0所引入的微小正數(shù)。YOLOv3網(wǎng)絡(luò)在訓(xùn)練階段先記錄每個小批量手勢數(shù)據(jù)的均值和方差,待訓(xùn)練結(jié)束后求得手勢訓(xùn)練樣本的均值和方差期望作為手勢預(yù)測階段執(zhí)行規(guī)范化處理的均值和方差,即在手勢訓(xùn)練階段和預(yù)測階段實際上用了不同的數(shù)據(jù)在進(jìn)行規(guī)范化處理。然而現(xiàn)實場景中在手勢預(yù)測階段有時只需要預(yù)測一個或很少的手勢樣本,此時均值與標(biāo)準(zhǔn)差的計算會存在較大偏差。為減小因前后兩個階段手勢數(shù)據(jù)間發(fā)生較大偏差對手勢識別準(zhǔn)確性造成的影響,對YOLOv3中的批量規(guī)范化處理進(jìn)行改進(jìn),采用批量再標(biāo)準(zhǔn)化方法進(jìn)行規(guī)范化處理:
(3)
式中:rmax,dmax為最大允許修正值;σ,u為測試階段均值和標(biāo)準(zhǔn)差估計值。批量再標(biāo)準(zhǔn)化通過引入新的參數(shù)r和d保證了YOLOv3網(wǎng)絡(luò)在手勢訓(xùn)練和測試階段執(zhí)行規(guī)范化處理時數(shù)據(jù)的等效性,從而提高預(yù)測階段手勢識別準(zhǔn)確性。
復(fù)雜背景下的手勢識別要求YOLOv3網(wǎng)絡(luò)在訓(xùn)練階段有豐富的手勢樣本,為此采用數(shù)據(jù)增廣策略對采集的20種手勢進(jìn)行樣本擴充,建立一個復(fù)雜背景下的手勢庫,最終定義的20種標(biāo)準(zhǔn)手勢如圖4所示。所采用樣本擴充方法包括隨機裁剪、水平翻轉(zhuǎn)、亮度調(diào)整和增加椒鹽噪聲處理。
在訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)時,使用遷移學(xué)習(xí)和微調(diào)方法不僅可以加快網(wǎng)絡(luò)收斂[14],而且能夠提升YOLOv3網(wǎng)絡(luò)的特征表達(dá)能力。訓(xùn)練手勢識別模型時先使用National University of Singapore(NUS) 手勢數(shù)據(jù)集NUS Hand Posture Dataset II中提供的10類手勢,共2000個手勢樣本,對Darknet-53網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,然后將訓(xùn)練好的網(wǎng)絡(luò)參數(shù)遷移到我們的基礎(chǔ)網(wǎng)絡(luò)中并初始化,獲得遷移模型Darknet-53,之后使用自定義的手勢集,共5000個手勢樣本,經(jīng)過遷移模型Darknet-53提取手勢細(xì)粒度特征,以達(dá)到微調(diào)網(wǎng)絡(luò)參數(shù)適應(yīng)新任務(wù)的目的。
圖4 20種手勢示意
用于實驗的電腦配置:Intel i7 6700K處理器、8G運行內(nèi)存、GTX 1080 顯卡。軟件在Ubuntu 16.04環(huán)境下運行。
3.2.1 算法的準(zhǔn)確性和魯棒性
為便于定量分析,從20種手勢中選取POWER-ON、OFF、SWITCH、READY、SHOW共5種手勢進(jìn)行測試,通過圖4可以發(fā)現(xiàn)POWER-ON和SHOW代表的手勢區(qū)分特征不明顯,這類手勢之間極容易出現(xiàn)誤識別情況。由6位測試者分別在正常實驗環(huán)境、強光、暗光以及強光和搖蕩的復(fù)雜環(huán)境下對每種手勢測試25次,每次測試手勢與相機距離一致,其中對3種復(fù)雜環(huán)境下的手勢識別隨機抽幀的效果如圖5所示。
手勢識別效果主要使用識別率和識別速度2個指標(biāo)評價,其中識別率通過計算測試階段正確識別次數(shù)與測試次數(shù)的比值得到,在4種實驗環(huán)境下單次手勢識別速度0.04 s,識別率如表1所示。
從表1可以看到,正常實驗環(huán)境下平均手勢識別率可以達(dá)到97.6%,可以滿足實際應(yīng)用中手勢識別的準(zhǔn)確性要求,由于POWER-ON和SHOW所代表的這兩類手勢的特征十分相似,因而對其識別的準(zhǔn)確性較低。在強光、暗光以及強光和搖蕩的實驗環(huán)境下的平均識別率均低于97.6%,可見光照變化和圖像抖動對手勢識別存在嚴(yán)重影響,但就整體識別率而言仍可以達(dá)到92.3%以上,說明本文手勢識別方法具有較好的魯棒性。
表1 種實驗環(huán)境下的手勢識別準(zhǔn)確率
3.2.2 本文手勢識別算法與其它方法的對比
為進(jìn)一步驗證本文方法的有效性,在正常實驗室環(huán)境下將本文方法與基于HOG特征和SVM分類器[15]、深度學(xué)習(xí)模型SSD、Fastern-RCNN、YOLOv3的手勢識別方法進(jìn)行比較,結(jié)果如表2所示。
表2 手勢識別方法對比結(jié)果
觀察表2可知,通過提取手部HOG特征然后使用SVM進(jìn)行分類的手勢識別方法,由于提取的HOG特征對手勢特征信息表征不充分,識別率較低,而且識別速率很難滿足對實時性要求高的應(yīng)用場景,基于深度學(xué)習(xí)模型Faster-RCNN的手勢識別方法識別率高,但同SSD方法一樣存在實時性差的局限性。
本文方法通過K均值聚類獲得手勢錨點框和批量再標(biāo)準(zhǔn)化方法在YOLOv3基礎(chǔ)上提高了手勢識別的準(zhǔn)確性和實時性,能夠滿足手勢應(yīng)用場景需求。
圖5 3種復(fù)雜環(huán)境下的手勢識別隨機抽幀效果
本文在目標(biāo)檢測模型YOLOv3的基礎(chǔ)上進(jìn)行手勢識別算法設(shè)計,融合批量再標(biāo)準(zhǔn)化方法保證訓(xùn)練階段和測試階段數(shù)據(jù)處理的等效性,使用K均值聚類方法獲取手勢樣本錨點框,提高了手勢識別的實時性和準(zhǔn)確性;建立了一個復(fù)雜場景下的手勢數(shù)據(jù)庫,共包含20種單手手勢,可用于手勢識別模型的訓(xùn)練與測試;通過大量實驗研究了本文方法在正常環(huán)境及強光、暗光、強光和搖蕩的復(fù)雜場景下的魯棒性,同時與基于HOG特征和SVM、SSD、Faster-RCNN、YOLOv3的手勢識別方法進(jìn)行識別率和識別速度對比,驗證了本文方法的優(yōu)越性。