李東潔,李東閣,楊 柳
哈爾濱理工大學 自動化學院,哈爾濱 150080
基于手勢的人機交互是人類最自然的人機交互方式,近幾年來受到越來越多研究人員的關注[1]。在動態手勢交互方式中,手的軌跡是手勢指令的重要組成部分之一,因此對手勢的跟蹤是一個重要環節[2]。手勢跟蹤的算法雖然在虛擬現實系統和人機交互(human-computer interaction,HCI)系統中得到了廣泛的應用[3],由于在應用中對手勢跟蹤的魯棒性和實時性要求逐漸提高,因此在基于視覺的研究領域中手勢跟蹤仍然是一個具有挑戰性的問題[4]。
手勢跟蹤算法可以分為基于運動模型的目標跟蹤和基于外觀模型的目標跟蹤算法。文獻[5]提出一種結合均值漂移和粒子濾波的運動模型手勢跟蹤算法,該算法雖然可以對目標運動速度和空間進行預測,但是對手的跟蹤過程中,由于手的可變形性,導致算法跟蹤失敗。文獻[6]提出一種粒子濾波器結合皮膚橢圓的外觀模型,通過對模型的檢測來完成對手勢的跟蹤。這種基于顏色的外觀模型,由于人臉和手膚色的相似性,導致跟蹤時的魯棒性較低,容易受背景影響。
基于檢測的目標跟蹤是一種常用的目標跟蹤框架。文獻[7]采用一種深度卷積神經網絡(convolutional neural network,CNN)對手勢特征進行融合,在跟蹤的過程中大大提升了魯棒性,但由于其特征提取網絡復雜,計算速度較慢,不能達到實時手勢跟蹤的效果。2015 年,Redmon 等首次提出基于卷積神經網絡的YOLO(you only look once)目標檢測算法,徹底貫徹了采用直接回歸的方法獲取當前檢測目標的思想,使檢測速度大幅提高,但準確度偏低[8]。隨即原作者又提出對于YOLO 的第三代改進算法YOLOv3,該算法的檢測準確率達到了令人滿意的效果。在COCO 數據集的測試中,在精準度與Faster R-CNN、SSD(single shot multibox detector)等其他目標檢測算法持平的情況下,YOLOv3 的檢測速度是其他模型的3~4 倍[9]。對手勢的跟蹤需要在場景中快速檢測出目標,YOLO 系列算法可以更好地區分目標和背景區域[10]。因此,本文采用具有最佳檢測跟蹤效果的YOLOv3 算法代替傳統基于外觀和運動模型的跟蹤算法來進行手勢跟蹤。
YOLOv3 是YOLO 系列目標檢測算法的第三代改進算法,是目前最優秀的目標檢測算法之一[11]。在結構上,YOLOv3 采用了Darknet-53 作為算法的主體網絡。在神經網絡的每一層的網絡線性變換輸出之后,激活函數之前增加了一個批歸一化層(batch normalization,BN)來解決神經網絡反向傳播過程中可能發生的梯度消失和梯度爆炸問題。Darknet-53使用的殘差網絡通過層間連接可以有效地解決訓練過程中的梯度消失問題,并減少參數數量[12]。在張量拼接后,使用Logistic分類器能夠支持多標簽對象的分類。
YOLOv3 雖然在多類目標分類上表現出色,但是對于手勢檢測這樣的單類物體的檢測,這一網絡結構的參數有些過于復雜和冗余,這樣會帶來訓練過程難度增加,所需數據量變大以及達不到實時性等一系列問題。針對這一問題,本文對YOLOv3 網絡進行改進,使其在不損失準確度的情況下提升檢測速度,保證跟蹤的實時性。
2.2.1 網絡結構中的改進
本文提出的卷積神經網絡(Darknet-gesture)保持了Darknet-53 的殘差模塊(Residual),在每個殘差模塊后面增加了一個1×1 的卷積核進一步降低輸出維度,同時在第一個卷積層中使用線性激活函數來避免低維度卷積層特征圖像丟失問題。在殘差模塊中,調整了每個模塊中殘差網絡的層數。這種方式使得殘差模塊間的連接得到增強,進一步增強了特征圖的復用性,減少了模塊間特征的傳遞損失。進行改進后的卷積神經網絡Darknet-gesture結構見表1。
其中每個殘差模塊后面的數字為該模塊含有的殘差網絡層數。將改進的網絡替代Darknet-53 網絡,加入YOLOv3 中,即生成改進算法YOLOv3-gesture。
2.2.2 基于規劃區域檢測的跟蹤框架
為了提高手勢跟蹤的魯棒性,本文提出一種規劃區域檢測的跟蹤框架。其實現過程如下:假設在第t幀圖像中檢測到有手勢目標Object1,則經過YOLOv3-gesture 網絡預測輸出預測框X1的中心坐標(bx,by)、預測框寬度和高度bh。進入第t+1 幀后,在第t幀中心點的附近區域生成規劃區域進行檢測,即在第t+1 幀時,輸入YOLOv3-gesture 網絡的大小為規劃區域S*,其中規劃區域S*的寬度Sw和高度Sh取值由預測邊框的寬度bw和bh決定,則以第t幀中心點為原點,第t+1 幀規劃區域的左上角頂點(Sx,Sy)換算公式如下:

Table 1 Improved structure for Darknet-gesture表1 Darknet-gesture 改進結構

其中,n為變換尺度,即Sw=nbw,Sh=nbh,若在規劃區域中未檢測到對象則n+1。規劃區域最大為輸入完整圖像的大小。如果存在多個手勢目標,則分別對每個手勢目標求取規劃區域進行檢測完成跟蹤。其過程如圖1 所示。
根據改進的網絡結構,相比于輸入圖像有3 個尺度的特征圖檢測,分別是相對于輸入圖像的52 倍、26倍、13 倍下采樣,用來檢測不同尺寸的手勢。將8 組每組為100幀416×416的連續手勢圖像輸入YOLOv3-gesture 網絡,使用不同的變換尺度和不同的特征圖檢測尺度對圖像進行檢測,其成功率曲線如圖2所示。
數據可見,由于采用規劃區域的檢測方法,對于檢測區域的13倍下采樣檢測尺度的檢測成功率很低,這一尺度對于手勢檢測來說屬于冗余,因此本文決定采用26倍下采樣和52倍下采樣兩個檢測尺度完成規劃區域檢測。分析數據可知變換尺度為3時效果較好,因此規劃區域檢測的變換尺度的取值從3 開始。
通過對規劃區域的檢測,視頻每幀的相應關系更加緊密,可以排除非敏感區域對象的干擾,使得對手勢跟蹤的魯棒性更強。同時,相對于原始完整圖像,輸入圖像中的對象數量大大減少,減少了YOLO網絡的計算量,進而縮短了算法的檢測時間,提高了手勢跟蹤的實時性。

Fig.1 Regional planning test圖1 區域規劃檢測

Fig.2 Detection success profile圖2 檢測成功率分布圖
本文訓練和測試均在Windows 環境下進行,模型搭建采用Darknet 開源框架實現,硬件條件CPU 為i7-8700,GPU 為NVIDIA GTX1080。檢測模型的權重通過遷移學習采用ImageNet上的預訓練權重模型。
實驗數據集采集于CGD2011 手勢數據庫,該數據庫共有30 個基本手勢動作,約5 萬個手勢。共有約4 500 個視頻,視頻數據每幀圖像分辨率大小為240×320,幀率為每秒10 幀。本文數據1 000 張圖片從該數據庫提取,200 張來自真實場景的手勢動作拍攝照片,分辨率大小為1 372×941。使用LableImage對手勢照片中的手勢目標進行標注。隨機選取其中的1 000 張用作訓練集數據,200 張用作測試集數據。同時隨機選取CGD2011 數據庫中的20 個視頻進行實時性跟蹤檢測。
在訓練階段,設置每批訓練樣本batch 為64,一次性送入訓練器樣本數量subdivisions 為16,動量參數設置為0.9,權重衰減正則項為0.000 5,初始學習率設置為0.001,采用小批量隨機梯度下降的方式進行優化,同時采用多尺度訓練的方式來增強算法對不同大小圖像檢測的魯棒性。其訓練過程中損失函數的變化過程如圖3。YOLOv3 使用相同訓練參數后的loss 值隨迭代次數變化對比如圖4 所示。結果顯示,由于YOLOv3-gesture 簡化了網絡的主體結構使得訓練難度和迭代次數變小。

Fig.3 Loss function varies with the number of iterations圖3 損失函數隨迭代次數的變化

Fig.4 Comparison of loss function of YOLOv3 and YOLOv3-gesture圖4 YOLOv3 與YOLOv3-geature損失函數對比
為了全面展示本文提出的YOLOv3-gesture 跟蹤效果,先將本文算法與YOLO 系列算法在同樣的數據集中進行比較,再與3 個跟蹤相關算法在同樣的測試數據集中進行比較。這3 個跟蹤相關算法分別是Struck[13]、FCN(fully convolutional networks)[14]和CCOT(continuous convolution operators for visual tracking)[15]。其中Struck 為經典跟蹤算法;FCN 是基于深度學習最新的跟蹤算法;CCOT 是基于相關濾波的最新算法。
3.4.1 與YOLOv3 算法的比較
本文算法YOLOv3-gesture 與YOLOv3 的性能評判指標為準確度、召回率、平均準確度和標記框和預測框的交并比(intersection over union,IOU)值。算法每秒處理的幀數作為算法的速度評判指標,其單位為frame/s。通常動作連貫的視頻為30 frame/s,因此如果檢測的速度達到30 frame/s,就可以認為達到了實時跟蹤。在200 張測試集數據中應用YOLOv3和YOLOv3-gesture,比較后得出各項指標對比見表2。其中數據是通過調整IOU閾值使得準確度和召回率最大得出的實驗結果,本文算法相對于YOLOv3算法,準確度提升了2.3%,召回率提升了3.4%,平均準確度提升了4.5%。YOLOv3-gesture 通過規劃區域檢測的手段,減少了背景中非跟蹤對象的干擾,使檢測準確度得到提升。

Table 2 Comparison of each index of two algorithms表2 兩種算法的各項指標對比
同時,YOLOv3-gesture 的檢測速度快于YOLOv3的32.8 frame/s,達到了實時跟蹤的要求。在測試過程中,對于某些運動過程中外表劇烈變化,處于模糊狀態的手勢目標,YOLOv3 算法的識別率較差。如圖5 所示,右側運動中的手勢YOLOv3 算法未識別出。分析可知,簡單的卷積神經網絡模型在數據量較小,數據復雜多變的情況下具有更好的泛化性能,可以有效地應對跟蹤中的運動模糊。

Fig.5 Comparison of test results圖5 測試結果對比
3.4.2 與其他跟蹤算法的比較
在與Struck、FCN 和CCOT 算法的比較中,采用IOU閾值作為成功率評判指標,并在CGD2011 數據庫中隨機選取20 個動態手勢視頻,對以上算法進行檢測,并對跟蹤視頻每一幀的成功率進行統計,結果如圖6 所示。IOU閾值最小為0 跟蹤效果最差;最大為1 跟蹤效果最好。同時對不同場景的交并比平均成功率進行統計分析,結果如表3 所示。

Fig.6 Success rate curve of IOU圖6 交并比成功率曲線圖

Table 3 Statistical analysis of success rate in different scenes表3 不同場景成功率統計分析 %
部分跟蹤結果如圖7 所示。在具有復雜背景的手勢跟蹤場景中的部分幀當中,從圖7(b)可以看出Struck 算法發生了漂移,CCOT 算法發生了預測框不能準確包裹手勢的問題(圖7(c)),FCNT 算法雖然可以準確預測位置,但是運算速度僅有22 frame/s,不能達到實時跟蹤的效果。在手部有部分遮擋的手勢跟蹤場景中,Struck 與CCOT 均未檢測到目標,本文算法可以跟蹤遮擋目標(圖7(d))。在運動劇烈的手勢目標跟蹤中,Struck 無法檢測出劇烈運動的手勢目標,CCOT 算法在跟蹤的過程中出現明顯的延遲現象(圖7(f)),檢測框停留在上一幀目標的位置。

Fig.7 Partial tracking results圖7 部分跟蹤結果
可見在不同場景下的跟蹤效果,YOLOv3-gesture性能良好,在交并比的成功率比較中,YOLOv3-gesture成功率均高于其他算法,這取決于卷積神經網絡和規劃區域檢測應用在目標檢測和規劃區域檢測對干擾的排除作用,使得跟蹤的效果更佳。
針對復雜場景手勢跟蹤的魯棒性不足和實時性不足的問題,本文提出一種基于卷積神經網絡的改進YOLOv3 跟蹤算法。該算法可以在復雜場景中克服運動手勢模糊,背景有非目標對象干擾等問題,對手勢進行實時跟蹤。實驗表明,本文算法在復雜場景的手勢跟蹤性能優于YOLOv3 算法以及其他跟蹤相關算法,后續工作會在跟蹤的基礎上對動態手勢進行識別。