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