郭 慶, 何劼愷, 金 焰, 許 金
(桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004)
在目標檢測應用中,相比傳統算法,深度學習目標檢測不僅可以省去手動提取特征的過程,還具有效率高、精度高的特點[1],近年來在理論與應用研究方面得到了廣泛重視[2]。
許多學者在RCNN(region CNN)算法的基礎上不斷優化精度及檢測效率,推動了深度學習目標檢測研究的不斷深入。深度學習目標檢測的發展如圖1所示。從RCNN[3]發展到Mask RCNN[4],目標檢測從選擇性搜索發展到區域回歸網絡(region proposal network,簡稱RPN),通過RPN網絡得到目標區域在特征圖上的位置,使得算法可以集中處理有用部分[5]。Faster RCNN中增加了ROI Pooling,代替了傳統的Max Pooling,使得算法可以輸入不同的圖片,同時也解決了RCNN中需要拉伸或壓縮圖片尺寸的問題[6]。Faster RCNN中的RPN不僅解決了選擇性搜索所導致的低效率問題,還省去了手動提取特征的過程。Mask RCNN將ROI Pooling優化為ROI Align,解決了Faster RCNN不能按照整數塊做池化的缺陷,同時增加了用于對圖像作分割的掩碼輸出,提升了深度學習算法的精度[7]。

圖1 深度學習目標檢測的發展
Mask RCNN是以ResNet50/101、RPN、ROI Align為主干的網絡結構[8],需要在6 GiB及以上顯存的GPU上運行,而Faster RCNN采用的是以ZF Net或VGG-16、RPN、ROI Pooling為主干的網絡結構[9],相對需要的參數較少,且在目標識別精度上無較大差異。由于硬件條件的限制,本研究采用Faster RCNN為手勢目標檢測的主要框架。
Faster RCNN主要由深度全卷積網絡和Fast RCNN檢測器兩部分組成。第一部分提供需要目標定位的區域,用于挖掘圖像的深層特征信息;第二部分學習由第一部分提供的候選區域[10],分割圖像,取出特征圖中目標的信息,使得后續分類器在分類時可以充分學習目標的特征信息,解決了目標與背景造成的樣本不平衡問題。Faster RCNN的網絡結構如圖2所示。

圖2 Faster RCNN網絡結構
ROI池化的具體操作:根據輸入的圖像將ROI映射到特征圖上的對應位置;將映射后的區域劃分為相同大小的部分,對每個部分進行最大池化的操作。由于ROI池化不限制輸入的特征圖的大小,保證了網絡可以輸入不同大小的圖片,大大提升了網絡訓練的效率。
RPN由一個全卷積網絡構成,其主要作用是圖像分割。全卷層輸出的特征圖輸入到RPN中,得到一群建議框的信息,為ROI池化做準備[11],如圖3所示。RPN的主要目的是將網絡的注意力調整到目標區域上,使得網絡向目標所在的區域學習,從而提升整體網絡在學習時的效率及識別準確率。RPN的輸出即為分割后的特征圖,用于輸入下一層的ROI池化層。在每個滑窗位置,同時使用多個候選區域進行預測。因此,在進行目標查詢之前,需要提前設置滑窗的大小,這里的滑窗大小即為候選區域的大小,與圖像的尺寸有關,同時與需要定位的目標大小有關,設置的滑窗過大,可能導致損失值很難降下來,這種情況會導致欠擬合。

圖3 RPN結構
RPN中采用的損失函數為
(1)

(2)
(3)
其中R為Smooth L1損失函數[12]。
RPN通過反向傳播和SGD的方式端對端訓練,對目標區域進行學習優化,從而降低無關背景對網絡學習的影響。RPN中采用零均值偏差為0.1的高斯分布值作為初始值,其他卷積層采用預訓練模型的參數值作為初始值,并通過微調的方式在手勢數據集上做出調整。本研究在輸入RPN之前的主干網絡采用ZF Net。
深度學習在目標檢測后會產生多余的候選框,需對多余的候選框進行消除處理,因此需要加入非極大值抑制(NMS)算法。非極大值抑制算法的加入可以找到最佳候選框,這些候選框的選擇由置信度決定,通過置信度以及候選框之間的重疊面積篩選最后需要的候選框,如圖4所示。

圖4 NMS處理
將Faster RCNN應用于手勢識別中,流程如圖5所示。

圖5 手勢識別流程
數據準備階段包括:1)制作圖片數據,將HandNet數據集劃分為所需的訓練集、測試集和驗證集;2)制作標簽,即手勢在圖中的位置。
采用的深度學習框架為Caffe,并在Caffe的基礎上完成Faster RCNN編寫。由于使用CPU運行深度學習較慢,在編寫完成C語言程序的基礎上完成Cuda加速,使得Faster RCNN能夠更快地檢測目標。Faster RCNN參數設置如表1所示。

表1 算法實施PC機主要性能參數
表1中,Anchor ratio為預設滑窗的長寬比,Scale size為實驗圖像中最短的邊長,Max size為實驗圖像中最長的邊長,Batch size為Faster RCNN在學習時批量學習的圖片數量。設置Batch size可提高識別穩定性。
通過將圖片輸入到Faster RCNN,先經RPN給出目標候選框,再采用NMS除去多余的候選框,得到最優目標框,算法對最優框內的內容進行學習,摒除了無關信息的干擾。
在PC機及C++編程語言和CUDA環境下實現上述算法,算法實施平臺性能主要參數見表2。

表2 算法實施PC機主要性能參數
測試的數據集為HandNet數據集[13],包含10名參與者的手在RealSense RGB-D相機前非剛性變形的深度圖像。其中還包含了6D數據,用于描述手的中心及指尖的位置方向信息。數據均保存為.mat文件。HandNet數據集信息如表3所示。

表3 HandNet數據集信息
隨機從HandNet中選取10 000張圖片作為訓練集,1 000張圖片作為驗證集,5 000張圖片作為最后的測試集。將數據集分為5類(1-單指型手勢,2-雙指型手勢,3-三指型手勢,4-四指型手勢,5-五指型手勢)。根據圖5,在深度學習Caffe的框架下測試基于Faster RCNN的手勢識別系統。測試中只生成置信度在90%以上的候選框。部分測試結果如圖6所示。

圖6 深度學習檢測結果
經過5 000張圖片的測試,得到的測試準確率為99.14%,而SVM等傳統手勢識別算法識別準確率為96%左右[14],平均每張圖片測試時間為44.19 ms。傳統算法中平均每張圖片的測試時間一般不低于1 s。因此,本算法較傳統方法具有手勢識別檢測準確率高、檢測效率高的優勢。
通過采用Faster RCNN對手勢目標進行定位,能夠準確并迅速定位手勢在圖中的位置。通過對Faster RCNN網絡參數的調整,提升了識別準確率。相較于傳統算法,省去了手動提取特征的過程,提升了手勢識別的泛化能力。相比傳統算法,該算法對手勢識別更快、更準確。