叢玉華,何 嘯,邢長(zhǎng)達(dá),王志勝
(1.南京理工大學(xué)紫金學(xué)院, 南京 210023;2.南京航空航天大學(xué) 自動(dòng)化學(xué)院,南京 211106;3.南京航空航天大學(xué) 深圳研究院, 廣東 深圳 518063)
人機(jī)交互技術(shù)是指通過(guò)計(jì)算機(jī)輸入、輸出設(shè)備,以有效的方式實(shí)現(xiàn)人與計(jì)算機(jī)對(duì)話的技術(shù)。傳統(tǒng)的人機(jī)交互一般是基于顯示器、鼠標(biāo)和鍵盤的交互方式,人通過(guò)鼠標(biāo)、鍵盤或是其他輸入設(shè)備對(duì)機(jī)器發(fā)送指令信息,機(jī)器再嚴(yán)格按指令行動(dòng),通過(guò)顯示器向人傳遞反饋信息[1]。隨著計(jì)算機(jī)技術(shù)和人工智能的發(fā)展,手勢(shì)識(shí)別作為一種簡(jiǎn)單便捷的交互方式,得到了廣泛關(guān)注[2]。手勢(shì)識(shí)別技術(shù)的生物學(xué)基礎(chǔ)是手勢(shì)交流[3],主要采用基于視覺方式,通過(guò)提取手勢(shì)圖像的特征,完成對(duì)手勢(shì)圖像的識(shí)別[4]。近年來(lái),手勢(shì)識(shí)別技術(shù)中常見且先進(jìn)的一類特征表示方法是深度神經(jīng)網(wǎng)絡(luò)模型,它具有很強(qiáng)的非線性學(xué)習(xí)能力,在端到端的訓(xùn)練過(guò)程中隨著層次的加深進(jìn)一步學(xué)習(xí)復(fù)雜的特征抽象表示[5-7]。作為深度神經(jīng)網(wǎng)絡(luò)的重要分支,卷積神經(jīng)網(wǎng)絡(luò)通過(guò)在原始輸入中應(yīng)用可訓(xùn)練的卷積核使得局部的特征表示具有更高階的抽象,成為一種非常有效的深度圖像學(xué)習(xí)模型[8]。基于卷積的一階目標(biāo)識(shí)別Yolo算法,在識(shí)別過(guò)程中將整張輸入圖像看作是目標(biāo)的上下文特征,可以大幅減少錯(cuò)誤識(shí)別的機(jī)率[9]。Yolov2算法在卷積層上額外新增了歸一化層,進(jìn)一步提高了目標(biāo)識(shí)別準(zhǔn)確度,且有效解決了重疊目標(biāo)的識(shí)別問題[10]。Yolov3算法選用更深的網(wǎng)絡(luò),使得算法具有了更高的識(shí)別效率和準(zhǔn)確率[11]。Yolov4算法融入了CSPDarknet53和加強(qiáng)特征提取網(wǎng)絡(luò)SPP、PAnet,將特征進(jìn)行融合,提取出更精確的特征[12]。Yolov4-Tiny較Yolov4精簡(jiǎn)了特征提取網(wǎng)絡(luò),使模型的復(fù)雜度和訓(xùn)練參數(shù)大幅減少[13]。Yolov4-Tiny因其輕量化和高速性,可適用于手勢(shì)識(shí)別。
本文主要研究思路是:通過(guò)攝像頭采集視頻信息而獲取單幀圖片,運(yùn)用改進(jìn)的Yolov4-Tiny算法對(duì)圖片進(jìn)行靜態(tài)手勢(shì)識(shí)別,并通過(guò)動(dòng)態(tài)手勢(shì)識(shí)別獲取動(dòng)作語(yǔ)義,從而實(shí)現(xiàn)人機(jī)交互。
人機(jī)交互時(shí),可以根據(jù)基礎(chǔ)手勢(shì)動(dòng)作狀態(tài)而產(chǎn)生不同的語(yǔ)義。基礎(chǔ)手勢(shì)分為單指手勢(shì)、握拳手勢(shì)和五指手勢(shì)3種。單指手勢(shì)如圖1(a) 所示,記為Pw;五指手勢(shì)如圖1(b)所示,記為Pf;握拳手勢(shì)如圖1(c) 所示,記為Ps。

圖1 基礎(chǔ)手勢(shì)圖
為能快速識(shí)別基礎(chǔ)手勢(shì),采用一階輕量型目標(biāo)檢測(cè)網(wǎng)絡(luò)Yolov4-Tiny,并引入注意力機(jī)制提高識(shí)別精度。
Yolov4-Tiny目標(biāo)檢測(cè)網(wǎng)絡(luò)是基于卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建,主要由Backbone、Neck和Predict三部分組成。Backbone部分采用CSPDarknet53-Tiny網(wǎng)絡(luò),Neck部分采用特征金字塔網(wǎng)絡(luò)FPN,Predict部分輸出2個(gè)有效特征層Head1和Head2。Yolov4-Tiny網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。

圖2 Yolov4-Tiny網(wǎng)絡(luò)結(jié)構(gòu)框圖
2.1.1 主干特征網(wǎng)絡(luò)
主干特征網(wǎng)絡(luò)采用CSPDarknet53-Tiny網(wǎng)絡(luò),由CBL層(Conv+BN+Leaky ReLU)、CSP(Cross Stage Partial)層和池化層(Pooling)構(gòu)成,如圖2中Backbone部分所示。
1) CBL層。CBL層包括卷積運(yùn)算Conv、批標(biāo)準(zhǔn)化處理BN(Batch Normalization)、Leaky ReLU激活函數(shù)。
卷積運(yùn)算:卷積層用于提取目標(biāo)特征,通過(guò)多次運(yùn)算進(jìn)一步獲得更加豐富的特征信息,得到更加優(yōu)化的特征圖。卷積的表達(dá)式如式(1)所示:
(1)
式中:i,j代表該卷積核的2個(gè)位置參數(shù);θi, j表示i,j位置上原圖像內(nèi)的數(shù)據(jù);xi, j代表i,j位置上卷積核內(nèi)的數(shù)據(jù);ε代表該位置的權(quán)重;m表示卷積核大小[14]。
批標(biāo)準(zhǔn)化:本質(zhì)就是利用優(yōu)化方差大小和均值位置,使得新的分布更切合數(shù)據(jù)的真實(shí)分布,保證模型的非線性表達(dá)能力。批標(biāo)準(zhǔn)化如式(2)所示:
(2)

經(jīng)過(guò)該變換后,每個(gè)神經(jīng)元形成了均值為0,方差為1的正態(tài)分布[15-16]。
激活函數(shù):激活函數(shù)Leaky ReLU,即帶泄露線性整流函數(shù),是在神經(jīng)元上運(yùn)行的函數(shù)。其表達(dá)式如式(3)所示:

(3)
式中:δ為L(zhǎng)eaky ReLU的參數(shù);t為神經(jīng)元輸入;f(t)為神經(jīng)元輸出[17]。
2) CSP層。CSP為殘差模塊,是在CBL結(jié)構(gòu)基礎(chǔ)上引入殘差結(jié)構(gòu),Cs1和Cs2為2個(gè)殘差邊,Concat為拼接運(yùn)算[18],如圖3所示。

圖3 CSP層結(jié)構(gòu)框圖
2.1.2 加強(qiáng)特征網(wǎng)絡(luò)
FPN(feature pyramid networks)特征金字塔網(wǎng)絡(luò)主要解決物體檢測(cè)中的多尺度問題。在常規(guī)卷積神經(jīng)網(wǎng)絡(luò)模型內(nèi)部,從底向上各層對(duì)同一大小圖片具有不同維度的特征表達(dá)。將不同維度的圖片作為輸入,可生成反映不同維度信息的特征組合,以此能有效表達(dá)出各種維度特征。在Yolov4-Tiny中,F(xiàn)PN預(yù)測(cè)輸出采用兩層結(jié)構(gòu)如圖2中Neck部分所示,UpSamp為上采樣運(yùn)算。
2.1.3 網(wǎng)絡(luò)特征輸出
Yolov4-Tiny輸出層即圖2中的Head1和Head2,包括特征輸出、損失計(jì)算和預(yù)測(cè)結(jié)果3部分。
1) 特征輸出。若輸入圖像大小為(w,h,3),則2個(gè)特征層的大小分別為(w/16,h/16,M),(w/32,h/32,M)。其中,w為圖像的寬,h為圖像的高,M為輸出的通道數(shù)。
2) 損失計(jì)算。坐標(biāo)損失l1:為預(yù)測(cè)框與真實(shí)框間的誤差,采用CIOU(Complete-IOU)函數(shù),如式(4)所示:
l1=1-CIOU
(4)
類別損失le:計(jì)算真實(shí)類別和預(yù)測(cè)類別的交叉熵作為類別損失,交叉熵?fù)p失le如式(5)所示:
(5)
式中:e=2時(shí)為置信度交叉熵;e=3時(shí)為類別交叉熵;C為類別數(shù);pi為預(yù)測(cè)框A對(duì)應(yīng)的置信度或類別。
總的損失l:為坐標(biāo)損失、置信度損失及類別損失之和[19],如式(6)所示:
l=l1+l2+l3
(6)
3) 預(yù)測(cè)結(jié)果。每個(gè)網(wǎng)格點(diǎn)加上對(duì)應(yīng)的x坐標(biāo)和y坐標(biāo),得到預(yù)測(cè)框的中心位置。通過(guò)先驗(yàn)框的高、寬計(jì)算出預(yù)測(cè)框的長(zhǎng)和寬,可確定預(yù)測(cè)框的位置。根據(jù)預(yù)測(cè)框位置進(jìn)行得分排序與非極大抑制篩選獲得最后預(yù)測(cè)結(jié)果[20]。
在確保一定識(shí)別速度基礎(chǔ)上,對(duì)Yolov4-Tiny進(jìn)行改進(jìn),改進(jìn)方法是在主干特征網(wǎng)部分引入注意力機(jī)制,以提高特征提取能力。
2.2.1 基于卷積塊的注意力機(jī)制
基于卷積塊的注意力機(jī)制 CBAM(convolutional block attention module)包括2個(gè)子模塊:通道注意力模塊CA(channel attention)和空間注意力模塊SA(spatial attention),如圖4所示。Input Feature經(jīng)過(guò)了CA的特征圖與SA相乘,最終得到經(jīng)過(guò)調(diào)整的特征圖Refined Feature[21]。

圖4 CBAM模塊結(jié)構(gòu)框圖
1) 通道注意力。CA主要關(guān)注對(duì)最終預(yù)測(cè)起決定性作用的通道。首先,對(duì)Input Feature在每個(gè)通道的特征圖上進(jìn)行全局平均池化(Avg Pool)和全局最大池化(Max Pool),得到2個(gè)通道特征。然后,將這2個(gè)通道特征送入一個(gè)多層感知機(jī)(MLP)。多層感知機(jī)由2個(gè)共享權(quán)重的全連接層組成,通過(guò)這個(gè)全連接層得到相應(yīng)的輸出(Channel Attention Feature)。CA結(jié)構(gòu)如圖5所示。

圖5 CA模塊結(jié)構(gòu)框圖
2) 空間注意力。SA主要關(guān)注對(duì)最終預(yù)測(cè)起決定性作用的空間位置。首先,在通道維度Channel Attention Feature上進(jìn)行最大池化和平均池化,得到2個(gè)空間特征。然后,將這2個(gè)特征在通道維度上拼接,經(jīng)過(guò)一個(gè)卷積層后得到空間注意力特征(spatial attention feature)。SA結(jié)構(gòu)如圖6所示。

圖6 SA模塊結(jié)構(gòu)框圖
2.2.2 融合CBAM的網(wǎng)絡(luò)
CBAM模塊用于提高特征提取精度。在主干網(wǎng)絡(luò)的CSP層中引入CBAM模塊,置于殘差邊Cs2處。改進(jìn)后每一個(gè)CSP模塊的具體結(jié)構(gòu)如圖7所示,F(xiàn)eat表示輸出特征圖。

圖7 CSP+CBAM網(wǎng)絡(luò)結(jié)構(gòu)框圖
2.3.1 數(shù)據(jù)集和測(cè)試環(huán)境
1) 數(shù)據(jù)集。實(shí)驗(yàn)數(shù)據(jù)集是在網(wǎng)絡(luò)上搜索及在多種場(chǎng)景下拍攝得到的8 296張手勢(shì)圖片。采用翻轉(zhuǎn)、鏡像、改變圖片明亮度及高斯噪聲等方式進(jìn)行數(shù)據(jù)增強(qiáng),最終數(shù)據(jù)集圖片共計(jì)17 619張,其中訓(xùn)練集15 856張,測(cè)試集1 763張。數(shù)據(jù)集參考VOC2007數(shù)據(jù)集制作,使用LabelImg圖像標(biāo)注軟件對(duì)圖像進(jìn)行標(biāo)注,生成包含圖像中目標(biāo)對(duì)應(yīng)的類別及位置坐標(biāo)信息的XML文件。
2) 測(cè)試環(huán)境。實(shí)驗(yàn)軟硬件參數(shù)如表1所示,CUDA版本為10.1。網(wǎng)絡(luò)參數(shù)如表2所示。

表1 環(huán)境參數(shù)

表2 網(wǎng)絡(luò)參數(shù)
2.3.2 性能參數(shù)
1) 精確度和召回率。精確度Pr和召回率Re分別如式(7)和式(8)所示:
(7)
(8)
式(7)為精確度表達(dá)式,表示正樣本且分類正確的部分占所有分類器認(rèn)為是正樣本的部分的比例,也被稱為查準(zhǔn)率。式(8)為召回率表達(dá)式,表示正樣本且分類正確的部分占所有正樣本的比例,也被稱為查全率。TP表示正樣本預(yù)測(cè)為正樣本的個(gè)數(shù);FP表示負(fù)樣本預(yù)測(cè)為正樣本的個(gè)數(shù);FN表示正樣本預(yù)測(cè)為負(fù)樣本的個(gè)數(shù)。
2) 平均精度(average precious,AP)。以Re值為橫軸,Pr值為縱軸,得到PR曲線。這條線下面的面積就是被測(cè)類別的平均精度AP值。mAP就是所有類的平均AP值。AP如式(9)所示:

(9)
式中,u(r)為Re為r時(shí)的Pr值。
3) FPS。FPS(frame per second)即每秒可以處理的圖片數(shù)量,用來(lái)評(píng)估目標(biāo)檢測(cè)的速度[22]。
2.3.3 性能測(cè)試結(jié)果
采用Yolov4-Tiny網(wǎng)絡(luò)及改進(jìn)的Tiny+CBAM網(wǎng)絡(luò),分別進(jìn)行靜態(tài)基礎(chǔ)手勢(shì)識(shí)別,mAP測(cè)試結(jié)果如圖8和圖9所示。其他性能參數(shù)測(cè)試值如表3所示。

圖8 Yolov4-Tiny網(wǎng)絡(luò)mAP測(cè)試結(jié)果直方圖

圖9 Tiny+CBAM網(wǎng)絡(luò)mAP測(cè)試結(jié)果直方圖

表3 網(wǎng)絡(luò)架構(gòu)改進(jìn)前后性能測(cè)試數(shù)據(jù)
表3中,Net1網(wǎng)絡(luò)將CBAM放在CSP模塊的通道分割之后的位置,Net2網(wǎng)絡(luò)將CBAM放在CSP模塊的通道分割前和后2個(gè)位置,Net3網(wǎng)絡(luò)在Net2網(wǎng)絡(luò)基礎(chǔ)上又在主干網(wǎng)絡(luò)和加強(qiáng)網(wǎng)絡(luò)間增加了CBAM。通過(guò)表3中的5種網(wǎng)絡(luò)的對(duì)比,并結(jié)合圖8、圖9的結(jié)果,可見融合了注意力機(jī)制的Tiny+CBAM網(wǎng)絡(luò)優(yōu)于其他網(wǎng)絡(luò),與Yolov4-Tiny網(wǎng)絡(luò)相比,在損失不到3幀/s的情況下mAP提升了19.38%,既保持了輕量級(jí)網(wǎng)絡(luò)Yolov4-Tiny的速度特性,又具有優(yōu)于Yolov4-Tiny網(wǎng)絡(luò)高精度的特點(diǎn)。
2.3.4 可視化測(cè)試結(jié)果
通過(guò)不同的動(dòng)作,對(duì)靜態(tài)基礎(chǔ)手勢(shì)識(shí)別方法進(jìn)行測(cè)試。圖10為單手手勢(shì)在不同距離時(shí)的識(shí)別效果,圖11為雙手手勢(shì)在不同角度和不同距離時(shí)的識(shí)別效果。

圖10 單手手勢(shì)不同距離識(shí)別結(jié)果圖

圖11 雙手手勢(shì)不同距離識(shí)別結(jié)果圖
由圖10和圖11的識(shí)別效果可見,對(duì)于單手和雙手靜態(tài)基礎(chǔ)手勢(shì)都可以準(zhǔn)確識(shí)別并標(biāo)注。
手勢(shì)動(dòng)作為人機(jī)交互的語(yǔ)義提供部分,可根據(jù)實(shí)際情況進(jìn)行自定義。獲取靜態(tài)基礎(chǔ)手勢(shì)后,通過(guò)動(dòng)態(tài)手勢(shì)識(shí)別對(duì)手勢(shì)動(dòng)作進(jìn)行捕捉并做判斷。動(dòng)態(tài)手勢(shì)識(shí)別分為兩部分:手部目標(biāo)跟蹤和手勢(shì)動(dòng)作判斷。
在獲取到基礎(chǔ)手勢(shì)的坐標(biāo)位置基礎(chǔ)上,跟蹤部分采用IOU交并比的計(jì)算方法,將相鄰的2個(gè)關(guān)鍵幀的手勢(shì)選框做IOU計(jì)算,如式(10)所示。如果相鄰選框重合部分比例較大,則視為同一個(gè)手勢(shì)目標(biāo);如果相鄰選框重合部分很小,則視為非同一個(gè)手勢(shì)目標(biāo),即新的目標(biāo)手勢(shì)。
(10)

(11)
其中:A為上一幀選框的面積,B為下一幀選框的面積;a為是否為同一目標(biāo)的狀態(tài)量,即a=1為同一目標(biāo),a=0為不同目標(biāo),分界點(diǎn)為IOU=0.3。
3.2.1 手勢(shì)狀態(tài)
在手勢(shì)動(dòng)作判斷時(shí),將手勢(shì)動(dòng)作分解為:基礎(chǔ)手勢(shì)+狀態(tài)變化。基礎(chǔ)手勢(shì)配合手部不同狀態(tài)變化產(chǎn)生具體手勢(shì)動(dòng)作,基本狀態(tài)變化有:首次出現(xiàn),即一種手勢(shì)第一次在畫面中出現(xiàn),記為Sf;手部移動(dòng),即一種基礎(chǔ)手勢(shì)在平面上朝不同方向移動(dòng),記為Sm;動(dòng)作保持,即在一種基礎(chǔ)手勢(shì)變成另一種基礎(chǔ)手勢(shì)前,動(dòng)作保持的狀態(tài),記為Sk;手部平移,即手部進(jìn)行水平移動(dòng),記為Shm;雙手靠攏,即兩只手水平互相靠近,記為Sc;雙手旋轉(zhuǎn),即兩只手相對(duì)旋轉(zhuǎn),記為Sr。
3.2.2 手勢(shì)動(dòng)作語(yǔ)義
1) 移動(dòng)。此動(dòng)作分為兩部分:建立移動(dòng)區(qū)域和屏幕上移動(dòng)。
建立移動(dòng)區(qū)域:即建立移動(dòng)區(qū)域和電腦屏幕區(qū)域的映射。若單指手勢(shì)Pw首次出現(xiàn),則定義當(dāng)前動(dòng)作為建立移動(dòng)區(qū)域,記為Mb,如式(12)所示:
Mb=Pw+Sf
(12)
移動(dòng)區(qū)域如圖12所示,圖12中涉及電腦屏幕區(qū)域、攝像頭區(qū)域、移動(dòng)區(qū)域和手勢(shì)選框區(qū)域四部分。其中,單指手勢(shì)Pw指尖位置相對(duì)于攝像頭區(qū)域左上角的坐標(biāo)為(xc,yc),選框的寬度為wwd,選框的高度為hht;移動(dòng)區(qū)域的寬度和高度分別為Wm和Hm;屏幕區(qū)域的寬度和高度分別為Wsc和Hsc;攝像頭捕捉區(qū)域的寬度和高度分別為Wca和Hca。則有移動(dòng)區(qū)域的大小如式(13)所示:

(13)
式中,Dm和Dca分別為移動(dòng)區(qū)域覆蓋的大小位置和攝像頭區(qū)域覆蓋的大小位置,比例因子ml如式(14)所示:
(14)

圖12 映射區(qū)域間位置關(guān)系示意圖
移動(dòng)區(qū)域大小設(shè)置好后,須建立單指手勢(shì)指尖位置與屏幕區(qū)域位置映射關(guān)系。設(shè)屏幕區(qū)域左上角為坐標(biāo)原點(diǎn)(0,0),指尖位置在屏幕區(qū)域上的坐標(biāo)位置為(xsc,ysc),則移動(dòng)區(qū)域左上角相對(duì)于屏幕區(qū)域左上角坐標(biāo)為(xm,ym),如式(15)所示。

(15)
圖13為移動(dòng)動(dòng)作效果圖,其中(a)表示移動(dòng)區(qū)域小于攝像頭區(qū)域,(b)表示移動(dòng)區(qū)域等于攝像頭區(qū)域。

圖13 建立移動(dòng)區(qū)域及移動(dòng)動(dòng)作效果圖
屏幕上移動(dòng):此動(dòng)作等效于鼠標(biāo)移動(dòng)。移動(dòng)區(qū)域建立后,進(jìn)行目標(biāo)跟蹤,若出現(xiàn)單指手勢(shì)并處于移動(dòng)狀態(tài)中,則定義當(dāng)前動(dòng)作為屏幕上移動(dòng),記為Mm,如式(16)所示:
Mm=Pw+Sm
(16)
2) 點(diǎn)擊。點(diǎn)擊動(dòng)作等效于鼠標(biāo)單/雙擊的動(dòng)作。在進(jìn)行目標(biāo)跟蹤后,若當(dāng)前目標(biāo)出現(xiàn)五指手勢(shì)且狀態(tài)為移動(dòng)時(shí),則定義當(dāng)前為預(yù)點(diǎn)擊動(dòng)作。預(yù)點(diǎn)擊動(dòng)作后,當(dāng)前目標(biāo)若出現(xiàn)單指手勢(shì),則定義當(dāng)前動(dòng)作為點(diǎn)擊動(dòng)作。然后,根據(jù)五指手勢(shì)保持狀態(tài)的時(shí)間來(lái)判斷單/雙擊。若五指手勢(shì)保持小于0.5 s,則為單擊,若大于等于0.5 s則為雙擊。預(yù)點(diǎn)擊動(dòng)作記為Mpc,單擊動(dòng)作記為Msc,雙擊動(dòng)作記為Mdc,動(dòng)作保持時(shí)間記為Tk1,如式(17)所示:

(17)

圖14 點(diǎn)擊動(dòng)作效果圖
3) 換頁(yè)。換頁(yè)動(dòng)作為控制頁(yè)面切換,等效于鼠標(biāo)滾輪上滑、下滑。在目標(biāo)跟蹤后,若當(dāng)前目標(biāo)出現(xiàn)五指手勢(shì),則當(dāng)前目標(biāo)為預(yù)換頁(yè)動(dòng)作。預(yù)換頁(yè)動(dòng)作后,若當(dāng)前目標(biāo)處于手部平移狀態(tài),則為換頁(yè)動(dòng)作。預(yù)換頁(yè)動(dòng)作記為Mps,換頁(yè)動(dòng)作記為Msw,如式(18)所示:

(18)
換頁(yè)動(dòng)作判斷條件為:五指手勢(shì)的選框A1中心與初始的五指手勢(shì)選框A相對(duì)角度Aang(A,A1)小于30°,位移距離Ddist(A,A1)大于選框A寬度Wwid(A)的0.6倍。當(dāng)A和A1中心橫坐標(biāo)xA-xA1>0時(shí)為上一頁(yè)動(dòng)作;xA-xA1<0時(shí)為下一頁(yè)動(dòng)作。換頁(yè)動(dòng)作效果如圖15所示。

圖15 換頁(yè)動(dòng)作效果圖
4) 退出。即退出當(dāng)前頁(yè)面,等效于ESC鍵作用。在進(jìn)行目標(biāo)跟蹤后若當(dāng)前目標(biāo)出現(xiàn)五指手勢(shì),則認(rèn)為當(dāng)前目標(biāo)為預(yù)退出動(dòng)作。預(yù)退出動(dòng)作后,若出現(xiàn)握拳手勢(shì),則定義為退出動(dòng)作。預(yù)退出動(dòng)作記為Mpe,退出動(dòng)作記為Me,如式(19)所示:
Me=Mpe+Ps,IOU(B,B1)>0.1&Tk2>0.5 s
(19)
退出動(dòng)作條件為:當(dāng)前握拳手勢(shì)選框B1與初始的五指手勢(shì)選框B的IOU大于0.1,且五指手勢(shì)存在時(shí)長(zhǎng)Tk2大于0.5 s。退出動(dòng)作效果如圖16所示。

圖16 退出動(dòng)作效果圖
5) 放映。放映動(dòng)作對(duì)應(yīng)演示文稿的放映命令。在目標(biāo)跟蹤后,若存在2個(gè)目標(biāo)都為五指手勢(shì),則分別記為Pf1和Pf2。若2個(gè)目標(biāo)的選框E和F的相對(duì)角度小于30°,2個(gè)選框EF中心點(diǎn)間的距離大于選框的寬度,則認(rèn)為這2個(gè)目標(biāo)為預(yù)放映動(dòng)作,記為Mpp,如式(20)所示:

(20)
當(dāng)前頁(yè)放映:當(dāng)前頁(yè)放映等效于Shift+F5鍵。預(yù)放映動(dòng)作后,若處于放映判斷狀態(tài),E及F兩個(gè)目標(biāo)選框間的相對(duì)角度小于30°,且2個(gè)目標(biāo)選框間的相對(duì)距離不斷變小,直至選框E和F的相對(duì)距離小于選框的寬度,則認(rèn)為當(dāng)前2個(gè)目標(biāo)動(dòng)作為從當(dāng)前頁(yè)面放映(圖17),記為Mcp,如式(21)所示:

(21)

圖17 當(dāng)前頁(yè)放映動(dòng)作效果圖
開始頁(yè)放映:開始頁(yè)放映等效于F5鍵。預(yù)放映動(dòng)作后,若處于放映判斷狀態(tài),E及F兩個(gè)目標(biāo)選框間的相對(duì)角度不斷變大,直至2個(gè)選框的相對(duì)角度大于60°,且處于放映判斷狀態(tài)的時(shí)間Tk3大于0.5 s,則認(rèn)為當(dāng)前2個(gè)目標(biāo)動(dòng)作為從開始頁(yè)面放映(圖18),記為Msp,如式(22)所示。

(22)

圖18 開始頁(yè)放映動(dòng)作效果圖
在靜態(tài)基礎(chǔ)手勢(shì)識(shí)別基礎(chǔ)上,對(duì)動(dòng)態(tài)手勢(shì)識(shí)別進(jìn)行性能測(cè)試。動(dòng)態(tài)手勢(shì)識(shí)別測(cè)試環(huán)境與靜態(tài)基礎(chǔ)手勢(shì)識(shí)別測(cè)試環(huán)境相同,動(dòng)態(tài)手勢(shì)識(shí)別性能測(cè)試結(jié)果如表4所示。

表4 動(dòng)態(tài)手勢(shì)識(shí)別性能測(cè)試結(jié)果
由表4可見:對(duì)所設(shè)計(jì)的動(dòng)作以及錯(cuò)誤動(dòng)作進(jìn)行樣本測(cè)試,樣本數(shù)為800次,誤檢數(shù)28次,準(zhǔn)確率達(dá)到96.5%。
人機(jī)交互系統(tǒng)主要由攝像頭、信息處理計(jì)算機(jī)和人的動(dòng)態(tài)手勢(shì)構(gòu)成。人的手部運(yùn)動(dòng)通過(guò)攝像頭采集后,輸入信息處理計(jì)算機(jī);通過(guò)計(jì)算機(jī)上的手勢(shì)識(shí)別模塊進(jìn)行識(shí)別;根據(jù)識(shí)別結(jié)果對(duì)計(jì)算機(jī)上的應(yīng)用程序進(jìn)行控制。從應(yīng)用角度來(lái)看,人機(jī)交互具體流程如圖19所示:視頻采集形成視頻流,從視頻流中獲取圖像幀;對(duì)圖像幀進(jìn)行靜態(tài)基礎(chǔ)手勢(shì)識(shí)別;識(shí)別結(jié)果結(jié)合手勢(shì)狀態(tài)進(jìn)行動(dòng)作判斷,判斷后生成動(dòng)作語(yǔ)義;根據(jù)語(yǔ)義調(diào)用人機(jī)交互應(yīng)用函數(shù),實(shí)現(xiàn)對(duì)應(yīng)用程序的控制。

圖19 人機(jī)交互應(yīng)用流程框圖
PyAutoGUI和AutoPy是Python的簡(jiǎn)單跨平臺(tái)GUI自動(dòng)化工具包,可以用程序自動(dòng)實(shí)現(xiàn)鼠標(biāo)和鍵盤操作。因此,利用PyAutoGui及AutoPy模擬鍵盤、鼠標(biāo)的動(dòng)作所使用的應(yīng)用函數(shù),如表5所示。

表5 應(yīng)用函數(shù)表
通過(guò)手勢(shì)識(shí)別和人機(jī)交互設(shè)計(jì),實(shí)現(xiàn)手勢(shì)對(duì)PowerPoint應(yīng)用程序的控制。其中,移動(dòng)、單擊、雙擊、換頁(yè)、退出、放映功能均已實(shí)現(xiàn),操作過(guò)程中人機(jī)交互有效人機(jī)距離為50~250 cm,手勢(shì)動(dòng)作結(jié)束到控制任務(wù)完成平均時(shí)間小于200 ms。部分功能可視化效果如圖20所示。

(a) 移動(dòng)(a) Movement (b) 開始頁(yè)放映(b) Start page projection

(c) 正在放映(c) Playing (d) 播放上一頁(yè)(d) Play the last page

(e) 開始退出播放(e) Start exit (f) 退出播放完成(f) Exit complete
基于計(jì)算機(jī)視覺手勢(shì)識(shí)別的人機(jī)交互系統(tǒng),主要包括靜態(tài)基礎(chǔ)手勢(shì)識(shí)別、動(dòng)態(tài)手勢(shì)識(shí)別和人機(jī)交互管理等技術(shù)。靜態(tài)基礎(chǔ)手勢(shì)識(shí)別中,采用融合注意力機(jī)制的Tiny+CBAM網(wǎng)絡(luò),在保持輕量化和高速性基礎(chǔ)上,大幅提高了識(shí)別精度。動(dòng)態(tài)手勢(shì)識(shí)別部分,通過(guò)檢測(cè)交并比誤差方法實(shí)現(xiàn)手勢(shì)追蹤,采用基礎(chǔ)手勢(shì)+手勢(shì)狀態(tài)模式設(shè)計(jì)并判斷手勢(shì)動(dòng)作,保證了手勢(shì)動(dòng)作的擴(kuò)展性。人機(jī)交互管理中,采用PyAutoGUI和AutoPy跨平臺(tái)GUI自動(dòng)化工具包,通過(guò)調(diào)用應(yīng)用函數(shù),實(shí)現(xiàn)鼠標(biāo)和鍵盤的操作功能。后續(xù)將進(jìn)一步優(yōu)化手勢(shì)識(shí)別方法,更好地提升人機(jī)交互體驗(yàn)度。