曾祥強,劉 瑞,2,楊 鑫,2
(1.成都理工大學 地球物理學院,四川 成都 610051;2.成都理工大學 地球勘探與信息技術教育部重點實驗室,四川 成都 610051)
手勢是人類活動中最為簡單的一種非語言交流方式,因其簡便直觀、目的性強等特點,被廣泛應用在人機交互、智能家居、增強現(xiàn)實等領域。例如,華為公司于2019年發(fā)布的華為mate30手機可實現(xiàn)“隔空手勢握拳”截屏操作;百度AI平臺推出手勢識別API,可在線識別“拳頭”等24種常見手勢。
隨著計算機硬件能力的提升以及深度學習的不斷發(fā)展,基于計算機視覺的手勢識別成為當下科學研究的重點領域之一。常見的手勢數(shù)字分類識別技術有深度卷積神經(jīng)網(wǎng)絡、支持向量機、樸素貝葉斯等方法。付天豪等人結合卷積神經(jīng)網(wǎng)絡和支持向量機方法實現(xiàn)了動態(tài)手勢識別[1];張行健等以AlexNet結構為基礎,構建了13層手勢識別卷積神經(jīng)網(wǎng)絡模型[2];宋京等用Dropout優(yōu)化后的卷積神經(jīng)網(wǎng)絡提高了手勢分類準確率[3]。
本文為證明深度學習在手勢數(shù)字識別研究領域的有效性,以及實現(xiàn)一種分類效果顯著的卷積神經(jīng)網(wǎng)絡模型,使用手勢數(shù)字數(shù)據(jù)集,利用Pytorch深度學習平臺構建AlexNet、VGG16、ResNet50三種經(jīng)典卷積神經(jīng)網(wǎng)絡,建立了基于深度卷積神經(jīng)網(wǎng)絡的有效手勢數(shù)字識別模型,通過測試結果評價指標比較分析,最終發(fā)現(xiàn)ResNet50卷積神經(jīng)網(wǎng)絡具有較好的分類效果。
本文使用的實驗數(shù)據(jù)為網(wǎng)絡公開發(fā)布的國外手勢數(shù)字數(shù)據(jù),共計205張圖像,包含0~9手勢數(shù)字。手勢數(shù)字0~9的表示方法如圖1所示。為確保深度學習卷積神經(jīng)網(wǎng)絡模型訓練穩(wěn)定和測試訓練的網(wǎng)絡模型,將數(shù)據(jù)集按照9∶1的比例隨機劃分為訓練集(1 835張圖片)和測試集(224張圖片),訓練集中每種手勢數(shù)字類型的圖像約180張,測試集約20張。訓練集將用于訓練構建的卷積神經(jīng)網(wǎng)絡模型,測試集則用于評估卷積神經(jīng)網(wǎng)絡模型。
圖1 手勢數(shù)字展示
圖像數(shù)據(jù)維度為[3,100,100],即通道數(shù)為3,長寬皆為100。圖像數(shù)據(jù)在訓練與測試前,首先需要進行預處理,將圖像值范圍從[0,255]縮放至[0,1],預處理見下式:
式中:x表示像素點值;x*表示像素點縮放后的值。
卷積神經(jīng)網(wǎng)絡(Convolution Neural Network, CNN)一般由卷積層、池化層、激活函數(shù)、連接層、分類器等構成。在手勢圖像處理過程中,數(shù)據(jù)經(jīng)過卷積層得到卷積特征(特征圖),池化層用于減少特征圖的參數(shù),激活函數(shù)將池化后的輸出結果非線性映射,最后通過連接層將特征傳入Softmax分類器進行分類,最終得到分類結果。
隨著計算機計算能力的提升,以及在深度學習框架的支持下,越來越深層的卷積神經(jīng)網(wǎng)絡結構出現(xiàn)在文獻當中。經(jīng)典的卷積神經(jīng)網(wǎng)絡模型如AlexNet、VGG16、ResNet50等,常常用于獲取圖像數(shù)據(jù)的特征,被廣泛應用在圖像分類、圖像分割等計算機視覺研究領域。
AlexNet卷積神經(jīng)網(wǎng)絡[4]結構由Alex等人提出,并于2012年 獲 得 了ILSVRC(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)大賽冠軍。AlexNet網(wǎng)絡結構首次成功應用了ReLU激活函數(shù)、Dropout等方法,提升了模型準確率。本文構建的AlexNet網(wǎng)絡結構如圖2所示,該網(wǎng)絡結構共有5層卷積層、3層池化層、5層全連接層和Softmax分類器。在5個卷積層中,卷積核分別為11×11,5×5和3×3,更大的卷積核擁有更多的感受野。池化層均采用最大池化,減小特征圖,縮減訓練參數(shù)。全連接層采用神經(jīng)網(wǎng)絡降低特征維度,最終輸入Softmax分類器,得到分類概率。
圖2 AlexNet網(wǎng)絡結構流程
牛津大學科學工程系于2014年提出了一種深度卷積網(wǎng)絡[5]VGG-Net(Visual Geometry Group Network, VGG-Net)。VGG網(wǎng)絡的提出,證明了增加網(wǎng)絡的深度能夠在一定程度上影響模型的性能。VGG相比AlexNet的改進之處在于采用連續(xù)若干3×3卷積核代替了AlexNet中11×11和5×5卷積核,多層非線性卷積層可以增加網(wǎng)絡深度以保證網(wǎng)絡學習的模式,提取圖像數(shù)據(jù)特征。根據(jù)網(wǎng)絡結構不同的深度,VGG網(wǎng)絡可分為VGG11、VGG13、VGG16和VGG19,其中VGG16和VGG19曾一度被廣泛用于各種計算機視覺目標檢測網(wǎng)絡框架提取網(wǎng)絡特征。
本文針對手勢數(shù)字數(shù)據(jù)集維度較小的特點,構建了如圖3所示的VGG16網(wǎng)絡模型。從圖中可以發(fā)現(xiàn),模型共有13個卷積層,5個池化層,5個全連接層。每個卷積層的卷積核均為3×3,在每次卷積操作完成后,會依次進行BatchNorm歸一化處理和ReLU激活函數(shù)操作。
圖3 VGG16網(wǎng)絡結構流程
殘差神經(jīng)網(wǎng)絡(Residual Neural Network, ResNet)由微軟研究院何凱明等人提出[6],并在2015年的 ILSVRC 比賽中奪得冠軍。ResNet網(wǎng)絡相比于VGG而言,擁有更深的網(wǎng)絡結構,更低的參數(shù)量,分類效果顯著提升。此外,ResNet的結構可以極快加速神經(jīng)網(wǎng)絡的訓練,模型的準確率也有了比較大的提升。目前為止,ResNet擁有ResNet-18、ResNet-34、ResNet-50、ResNet-101、ResNet-152等幾種經(jīng)典的網(wǎng)絡結構。
隨著卷積神經(jīng)網(wǎng)絡模型深度的增加,模型準確度出現(xiàn)飽和,甚至下降,即退化問題(Degradation Problem)。ResNet網(wǎng)絡模型能夠通過殘差學習有效解決退化問題。殘差學習結構如圖4所示。
圖4 殘差學習結構
殘差計算公式如下:
式中:x為輸入數(shù)據(jù);H(x)為輸出結果;F(x)為殘差。從公式(2)可以看出,殘差為輸入與輸出之間的差值,一般比輸出H(x)小,直觀上看,F(xiàn)(x)需要學習的內(nèi)容相比于直接學習H(x)要少、學習難度較小。因此,ResNet網(wǎng)絡更容易優(yōu)化,并且能夠通過增加一定的網(wǎng)絡深度來提取更多的特征,從而提升模型的準確率和特征提取效果。
如圖5所示,本文實驗流程分為3步:
圖5 實驗流程
(1)手勢數(shù)字數(shù)據(jù)集按照9∶1的比例隨機切分數(shù)據(jù)集,并進行預處理;
(2)通過 Pytorch 深度學習框架構建卷積神經(jīng)網(wǎng)絡模型,訓練并保存3種經(jīng)典圖像分類模型;
(3)將測試集輸入訓練完成的網(wǎng)絡模型,得到分類結果,并建立圖表分析,綜合評估3種卷積神經(jīng)網(wǎng)絡模型。
本文采用Python3.7編程語言,利用由Facebook人工智能研究院開發(fā)的Pytorch深度學習平臺建立基于人工智能深度學習的手勢數(shù)字分類模型。在構建3種網(wǎng)絡模型時,為加速網(wǎng)絡模型的訓練速度、防止模型過擬合以及提升分類效果,采用了以下幾種方法。
(1)ReLU激活函數(shù)。ReLU激活函數(shù)在x>0區(qū)域上,避免了出現(xiàn)梯度飽和、梯度消失等問題,成功解決了網(wǎng)絡較深時的梯度彌散問題。相比sigmoid和tanh等激活函數(shù),使用ReLU激活函數(shù)的卷積模型在訓練時無需進行指數(shù)運算,計算復雜度低,更適合后向傳播,且收斂速度更快。激活函數(shù)如圖6所示。
圖6 激活函數(shù)
(2)Dropout方法[7]。隨著深度學習和神經(jīng)網(wǎng)絡的發(fā)展,模型的參數(shù)越來越多、層次越來越深,這種情況會造成模型過擬合、訓練時間過長等現(xiàn)象。Dropout方法是解決上述問題而提出的一種策略。加入 Dropout的神經(jīng)網(wǎng)絡模型如圖7所示,其原理是在神經(jīng)網(wǎng)絡訓練過程中,隨機按比例將隱藏層的權重設置歸零,即輸入不與隱藏層的權重進行相關運算。在AlexNet、VGG16和ResNet50網(wǎng)絡結構里的全連接層中,Dropout方法隨機將部分(概率為0.5)神經(jīng)元權重歸零,使得模型不會完全依賴全連接層中的某個權重,有效防止模型出現(xiàn)過擬合現(xiàn)象。
圖7 Dropout示意圖
(3)批規(guī)范化。批規(guī)范化(Batch Normalization, BN)能夠縮放數(shù)據(jù)并使之服從均值為0、方差為1的標準正態(tài)分布,有效解決隨著網(wǎng)絡深度的增加而引起的梯度消失問題,提升模型訓練速度,加速收斂過程,增強分類效果。因此本文在構建VGG16網(wǎng)絡模型時,在每次卷積運行結束后,進行一次批規(guī)范化操作,緩解了由于其深層網(wǎng)絡而引起的梯度飽問題。
(4)Softmax分類器。它能夠將神經(jīng)元的輸出值映射到(0,1)區(qū)間,輸出值經(jīng)過映射后得到的結果為分類概率,概率最大值為預測值。此外,交叉熵損失函數(shù)和Softmax分類器配合使用,方便損失函數(shù)求導,快速計算出損失值,有利于模型訓練時的反向傳播。
(5)預訓練模型。在訓練3個卷積神經(jīng)網(wǎng)絡模型時,均使用了由Pytorch深度學習平臺提供的預訓練模型參數(shù),通過此方法可以加速模型的訓練速度,提升模型準確率。
手勢分類屬于多分類問題,對于多分類問題的模型評價可轉化為二分類問題進行評估。二分類模型檢測通常使用混淆矩陣[8]綜合評價。表1顯示了真實情況和預測結果組合后的4種情況,分別是真正例(TP)、假反例(FN)、假正例(FP)、真反例(TN)。
表1 真實情況和預測結果組合后的情況
根據(jù)分類結果混淆矩陣,可以得到以下評價指標:
(1)準確率(ACC):
(2)精確率(P):
(3)召回率(R):
(4)F1-Score:
(5)AUC(Aera Under Curve, AUC)為ROC曲線下的面積。
從以上評價指標可以得出,ACC反映了模型預測正確的樣本個數(shù)占總樣本個數(shù)的比例。P為預測為正例的樣本數(shù)據(jù)中預測正確的樣本個數(shù),R為真實情況為正例樣本數(shù)據(jù)中預測正確的樣本個數(shù)。P和R是一對矛盾的評價指標,因此針對不同的分類問題,對精確率和召回率的要求也不同,如惡劣事件的預測,比較注重精確率??紤]到本文手勢數(shù)據(jù)集的特點,將采用F1-Score評價指標,F(xiàn)1-Score調(diào)和平均了P和R,反映為模型的分類識別性能。AUC是ROC曲線下的面積,表示預測的正例排在負例前的概率,其值在[0,1]之間,值越大說明模型的分類效果越好。對于多分類的手勢數(shù)字識別模型評估,AUC,F(xiàn)1,P和R為每個手勢數(shù)字類別評估指標之和的平均值。
為確保模型訓練的一致性,實驗選取隨機梯度下降(Stochastic Gradient Descent, SGD)優(yōu)化函數(shù)、交叉熵損失函數(shù)、0.01學習率,分別對 AlexNet、VGG16、ResNet50網(wǎng)絡模型共計訓練100次,得到如圖8所示的訓練結果。
圖8 訓練模型準確率與損失圖像
訓練結果表明:ResNet50正確率最高,達到99.89%,AlexNet正確率為98.36%,VGG16正確率為90.02%;模型訓練時收斂速度由快到慢依次為ResNet50、VGG16、AlexNet,其中ResNet50損失值最低,為1.46,AlexNet損失值為1.47,VGG16損失值為1.56。
將測試集輸入到訓練完成的網(wǎng)絡模型中,得到分類概率結果。分類概率結果和原始數(shù)據(jù)標簽進行相關計算,并得到表2所列的測試集結果評價表。ResNet50網(wǎng)絡模型的ACC值最高,為93.3%,表明ResNet50 在測試集上的分類正確個數(shù)多于另外兩種模型。ResNet50、VGG16和AlexNet網(wǎng)絡的AUC值都接近1,表明3個模型都擁有極高的正確率。此外,F(xiàn)1分數(shù)最高,表明其擁有較好的手勢數(shù)字分類性能。
表2 測試結果評價表
結合訓練結果圖和測試評價表進行綜合分析,ResNet50網(wǎng)絡模型在訓練時準確率高、收斂速度快、損失值下降迅速,在ACC、AUC、F1等評價指標上得到了較好的評估。因此表明3種網(wǎng)絡模型在手勢數(shù)字識別的分類性能ResNet50>VGG16>AlexNet。
本文基于深度學習實現(xiàn)了3種經(jīng)典神經(jīng)網(wǎng)絡模型在手勢數(shù)字識別上的應用,實驗結果表明:
(1)基于深度學習的卷積神經(jīng)網(wǎng)絡在手勢數(shù)字識別研究領域中具有顯著效果,從表2可以看出,AlexNet、VGG16、ResNet50模型在測試集中準確率較高,分類效果較好;
(2)隨著網(wǎng)絡深度的增加,分類效果有一定程度的提升,VGG16和AlexNet是傳統(tǒng)的卷積神經(jīng)網(wǎng)絡,但前者擁有的網(wǎng)絡更深,在訓練時的收斂速度及測試集上的ACC、AUC、F1等均優(yōu)于AlexNet;
(3)在3種模型的比較分析中,ResNet50訓練穩(wěn)定、收斂速度快、模型準確率高,分類效果顯著,說明殘差學習相比傳統(tǒng)的卷積神經(jīng)網(wǎng)絡在手勢數(shù)字識別中具有一定優(yōu)勢。
注:本文通訊作者為劉瑞。