朱想先,樓逸倫
(寧波普瑞均勝汽車電子有限公司,浙江 寧波 315000)
手勢識(shí)別一直以來都是人機(jī)交互領(lǐng)域中重要的研究方向,在虛擬現(xiàn)實(shí)、智能座艙、智能家居等方面有廣闊的應(yīng)用前景??紤]到嵌入式平臺(tái)的資源有限性特點(diǎn),本文提出了輕量級視覺手勢識(shí)別交互系統(tǒng),并設(shè)計(jì)了一個(gè)帶有批歸一化層的輕量級多層神經(jīng)網(wǎng)絡(luò)Light MLNN。本系統(tǒng)采用Zhang等人提出的Mediapipe Hands[1]將攝像頭RGB數(shù)據(jù)轉(zhuǎn)化為21個(gè)手部關(guān)鍵點(diǎn)3維位置坐標(biāo),再將坐標(biāo)處理后送入Light MLNN實(shí)現(xiàn)靜態(tài)手勢分類。并且引入二元交叉熵?fù)p失函數(shù)(BCE Loss)作為目標(biāo)函數(shù),與常用多分類損失函數(shù)交叉熵?fù)p失函數(shù)(CE Loss)相比,以微小準(zhǔn)確率損失為代價(jià),能夠抑制非目標(biāo)手勢被錯(cuò)分成目標(biāo)手勢分類。
本文采用Mediapipe Hands作為手勢關(guān)鍵點(diǎn)提取方案。它主要由BlazePalm Detector和Hand Landmark Model兩個(gè)神經(jīng)網(wǎng)絡(luò)模型構(gòu)成。BlazePalm Detector模型的輸出經(jīng)過非極大值抑制等處理轉(zhuǎn)化為僅包含手掌的檢測框坐標(biāo),并且輸出手掌關(guān)鍵點(diǎn)位置。利用模型輸出的手掌檢測框、中指關(guān)節(jié)和手腕關(guān)節(jié),Mediapipe Hand將檢測框旋轉(zhuǎn)并且放大得到全手檢測框。Hand Landmark Model將裁減后全手檢測框中的圖像轉(zhuǎn)化為全手21個(gè)關(guān)鍵點(diǎn)的3維坐標(biāo)、左右手性和手勢分?jǐn)?shù)。在實(shí)時(shí)應(yīng)用中,手掌檢測模型一旦檢測到手勢,后續(xù)全手檢測框由手勢關(guān)鍵點(diǎn)模型計(jì)算產(chǎn)生。當(dāng)手勢分?jǐn)?shù)低于閾值時(shí),手掌檢測器才會(huì)再次激活。對于單手關(guān)鍵點(diǎn)提取任務(wù),兩個(gè)檢測器交替工作,提高了處理速度。后續(xù)對關(guān)鍵點(diǎn)的分類則交由Light MLNN實(shí)現(xiàn)。
本文采用Pytorch框架訓(xùn)練Light MLNN模型。模型輸出N×C維向量,C為手勢類別個(gè)數(shù),根據(jù)不同數(shù)據(jù)集有不同的取值。模型N×C輸出代表了該N批手勢的C個(gè)手勢分類的分?jǐn)?shù)。網(wǎng)絡(luò)采用ReLU作為激活函數(shù),并在激活函數(shù)后引入了BN層[2]用于加快模型收斂速度。這里以1維向量為例介紹BN層,多維向量BN層的輸出如文中采用的64維是64個(gè)1維向量在BN層上獨(dú)立運(yùn)算的結(jié)果。在訓(xùn)練時(shí),BN層的計(jì)算過程為yi=BNr,β(xi)
Light MLNN輸出的分類分?jǐn)?shù)在采用不同損失函數(shù)時(shí)有不同解釋。對于多分類問題,通常采用的損失函數(shù)為CE Loss。采用CE Loss時(shí)隱藏了一個(gè)假設(shè),即假定輸入的手勢關(guān)鍵點(diǎn)數(shù)據(jù)屬于上述C個(gè)分類。而在應(yīng)用場景下,輸入手勢并不局限于數(shù)據(jù)集中的C個(gè)分類,因此CE Loss并不十分適合實(shí)際場景[4-5]。我們在訓(xùn)練中引入帶sigmoid的BCE Loss,模型的C個(gè)分類分?jǐn)?shù)經(jīng)過sigmoid運(yùn)算被獨(dú)立地視作該分類是否出現(xiàn)的概率。若C個(gè)分類出現(xiàn)概率均低于閾值,則模型預(yù)測結(jié)果為未識(shí)別到目標(biāo)手勢。實(shí)驗(yàn)中我們發(fā)現(xiàn)在輸入非目標(biāo)分類手勢時(shí),利用BCE Loss訓(xùn)練的模型更不容易將其識(shí)別為目標(biāo)分類手勢[6-7]。
我們采用2種損失函數(shù)將Light MLNN模型在Hand Gestures Dataset上進(jìn)行訓(xùn)練。對于CE Loss訓(xùn)練的模型,算法的輸出為輸入手勢在10個(gè)分類概率分布。我們選取ASL Alphabet數(shù)據(jù)集中的E、H、V、Y分類作為非法手勢。Hand Gestures Dataset的10個(gè)目標(biāo)手勢和ASL Alphabet的4個(gè)非法手勢的關(guān)鍵點(diǎn)示意圖如圖1所示。兩種模型的對非目標(biāo)手勢分類效果和目標(biāo)手勢驗(yàn)證準(zhǔn)確率如表1。這里將分類E的召回率定義為模型將E識(shí)別成非法手勢的個(gè)數(shù)與E總數(shù)的比值,H、V、Y同理。雖然準(zhǔn)確率上與CE模型有1%左右的差距,但是BCE訓(xùn)練的模型將多數(shù)非目標(biāo)手勢識(shí)別為非法手勢,閾值0.9時(shí)平均召回率達(dá)到78.08%,而這指標(biāo)在CE模型上只有35.97%。
圖1 目標(biāo)手勢與非目標(biāo)手勢關(guān)鍵點(diǎn)示意圖
表1 CE 與BCE 模型對非目標(biāo)手勢分類效果和目標(biāo)手勢驗(yàn)證準(zhǔn)確率
這里損失函數(shù)采用BCE Loss,我們將帶BN層的模型和不帶BN層的模型在SigNN Character Database的關(guān)鍵點(diǎn)數(shù)據(jù)上進(jìn)行訓(xùn)練,訓(xùn)練損失如圖2所示。在相同全樣本訓(xùn)練輪數(shù)時(shí),采用BN層的模型訓(xùn)練損失更小,驗(yàn)證集準(zhǔn)確率更高,收斂更快。將閾值設(shè)置在0.9時(shí),模型在SigNN Character Database和ASL Alphabet驗(yàn)證集上的準(zhǔn)確率分別為95.73%和94.60%,均取得良好效果。
圖2 帶BN 層與不帶BN 層模型在SigNN Character Database 上的訓(xùn)練損失與驗(yàn)證準(zhǔn)確率
實(shí)驗(yàn)結(jié)果表明,本方案能夠以平均12FPS的速度在樹莓派4B上識(shí)別靜態(tài)手勢,并且具有良好識(shí)別準(zhǔn)確率。由于選擇BCE Loss進(jìn)行訓(xùn)練,手勢識(shí)別模型能夠更好地識(shí)別出非目標(biāo)手勢,減少實(shí)際應(yīng)用中對手勢識(shí)別的誤報(bào)。