郭 慶, 何劼愷, 金 焰, 許 金
(桂林電子科技大學(xué) 電子工程與自動(dòng)化學(xué)院,廣西 桂林 541004)
在目標(biāo)檢測(cè)應(yīng)用中,相比傳統(tǒng)算法,深度學(xué)習(xí)目標(biāo)檢測(cè)不僅可以省去手動(dòng)提取特征的過程,還具有效率高、精度高的特點(diǎn)[1],近年來(lái)在理論與應(yīng)用研究方面得到了廣泛重視[2]。
許多學(xué)者在RCNN(region CNN)算法的基礎(chǔ)上不斷優(yōu)化精度及檢測(cè)效率,推動(dòng)了深度學(xué)習(xí)目標(biāo)檢測(cè)研究的不斷深入。深度學(xué)習(xí)目標(biāo)檢測(cè)的發(fā)展如圖1所示。從RCNN[3]發(fā)展到Mask RCNN[4],目標(biāo)檢測(cè)從選擇性搜索發(fā)展到區(qū)域回歸網(wǎng)絡(luò)(region proposal network,簡(jiǎn)稱RPN),通過RPN網(wǎng)絡(luò)得到目標(biāo)區(qū)域在特征圖上的位置,使得算法可以集中處理有用部分[5]。Faster RCNN中增加了ROI Pooling,代替了傳統(tǒng)的Max Pooling,使得算法可以輸入不同的圖片,同時(shí)也解決了RCNN中需要拉伸或壓縮圖片尺寸的問題[6]。Faster RCNN中的RPN不僅解決了選擇性搜索所導(dǎo)致的低效率問題,還省去了手動(dòng)提取特征的過程。Mask RCNN將ROI Pooling優(yōu)化為ROI Align,解決了Faster RCNN不能按照整數(shù)塊做池化的缺陷,同時(shí)增加了用于對(duì)圖像作分割的掩碼輸出,提升了深度學(xué)習(xí)算法的精度[7]。
圖1 深度學(xué)習(xí)目標(biāo)檢測(cè)的發(fā)展
Mask RCNN是以ResNet50/101、RPN、ROI Align為主干的網(wǎng)絡(luò)結(jié)構(gòu)[8],需要在6 GiB及以上顯存的GPU上運(yùn)行,而Faster RCNN采用的是以ZF Net或VGG-16、RPN、ROI Pooling為主干的網(wǎng)絡(luò)結(jié)構(gòu)[9],相對(duì)需要的參數(shù)較少,且在目標(biāo)識(shí)別精度上無(wú)較大差異。由于硬件條件的限制,本研究采用Faster RCNN為手勢(shì)目標(biāo)檢測(cè)的主要框架。
Faster RCNN主要由深度全卷積網(wǎng)絡(luò)和Fast RCNN檢測(cè)器兩部分組成。第一部分提供需要目標(biāo)定位的區(qū)域,用于挖掘圖像的深層特征信息;第二部分學(xué)習(xí)由第一部分提供的候選區(qū)域[10],分割圖像,取出特征圖中目標(biāo)的信息,使得后續(xù)分類器在分類時(shí)可以充分學(xué)習(xí)目標(biāo)的特征信息,解決了目標(biāo)與背景造成的樣本不平衡問題。Faster RCNN的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 Faster RCNN網(wǎng)絡(luò)結(jié)構(gòu)
ROI池化的具體操作:根據(jù)輸入的圖像將ROI映射到特征圖上的對(duì)應(yīng)位置;將映射后的區(qū)域劃分為相同大小的部分,對(duì)每個(gè)部分進(jìn)行最大池化的操作。由于ROI池化不限制輸入的特征圖的大小,保證了網(wǎng)絡(luò)可以輸入不同大小的圖片,大大提升了網(wǎng)絡(luò)訓(xùn)練的效率。
RPN由一個(gè)全卷積網(wǎng)絡(luò)構(gòu)成,其主要作用是圖像分割。全卷層輸出的特征圖輸入到RPN中,得到一群建議框的信息,為ROI池化做準(zhǔn)備[11],如圖3所示。RPN的主要目的是將網(wǎng)絡(luò)的注意力調(diào)整到目標(biāo)區(qū)域上,使得網(wǎng)絡(luò)向目標(biāo)所在的區(qū)域?qū)W習(xí),從而提升整體網(wǎng)絡(luò)在學(xué)習(xí)時(shí)的效率及識(shí)別準(zhǔn)確率。RPN的輸出即為分割后的特征圖,用于輸入下一層的ROI池化層。在每個(gè)滑窗位置,同時(shí)使用多個(gè)候選區(qū)域進(jìn)行預(yù)測(cè)。因此,在進(jìn)行目標(biāo)查詢之前,需要提前設(shè)置滑窗的大小,這里的滑窗大小即為候選區(qū)域的大小,與圖像的尺寸有關(guān),同時(shí)與需要定位的目標(biāo)大小有關(guān),設(shè)置的滑窗過大,可能導(dǎo)致?lián)p失值很難降下來(lái),這種情況會(huì)導(dǎo)致欠擬合。
圖3 RPN結(jié)構(gòu)
RPN中采用的損失函數(shù)為
(1)
(2)
(3)
其中R為Smooth L1損失函數(shù)[12]。
RPN通過反向傳播和SGD的方式端對(duì)端訓(xùn)練,對(duì)目標(biāo)區(qū)域進(jìn)行學(xué)習(xí)優(yōu)化,從而降低無(wú)關(guān)背景對(duì)網(wǎng)絡(luò)學(xué)習(xí)的影響。RPN中采用零均值偏差為0.1的高斯分布值作為初始值,其他卷積層采用預(yù)訓(xùn)練模型的參數(shù)值作為初始值,并通過微調(diào)的方式在手勢(shì)數(shù)據(jù)集上做出調(diào)整。本研究在輸入RPN之前的主干網(wǎng)絡(luò)采用ZF Net。
深度學(xué)習(xí)在目標(biāo)檢測(cè)后會(huì)產(chǎn)生多余的候選框,需對(duì)多余的候選框進(jìn)行消除處理,因此需要加入非極大值抑制(NMS)算法。非極大值抑制算法的加入可以找到最佳候選框,這些候選框的選擇由置信度決定,通過置信度以及候選框之間的重疊面積篩選最后需要的候選框,如圖4所示。
圖4 NMS處理
將Faster RCNN應(yīng)用于手勢(shì)識(shí)別中,流程如圖5所示。
圖5 手勢(shì)識(shí)別流程
數(shù)據(jù)準(zhǔn)備階段包括:1)制作圖片數(shù)據(jù),將HandNet數(shù)據(jù)集劃分為所需的訓(xùn)練集、測(cè)試集和驗(yàn)證集;2)制作標(biāo)簽,即手勢(shì)在圖中的位置。
采用的深度學(xué)習(xí)框架為Caffe,并在Caffe的基礎(chǔ)上完成Faster RCNN編寫。由于使用CPU運(yùn)行深度學(xué)習(xí)較慢,在編寫完成C語(yǔ)言程序的基礎(chǔ)上完成Cuda加速,使得Faster RCNN能夠更快地檢測(cè)目標(biāo)。Faster RCNN參數(shù)設(shè)置如表1所示。
表1 算法實(shí)施PC機(jī)主要性能參數(shù)
表1中,Anchor ratio為預(yù)設(shè)滑窗的長(zhǎng)寬比,Scale size為實(shí)驗(yàn)圖像中最短的邊長(zhǎng),Max size為實(shí)驗(yàn)圖像中最長(zhǎng)的邊長(zhǎng),Batch size為Faster RCNN在學(xué)習(xí)時(shí)批量學(xué)習(xí)的圖片數(shù)量。設(shè)置Batch size可提高識(shí)別穩(wěn)定性。
通過將圖片輸入到Faster RCNN,先經(jīng)RPN給出目標(biāo)候選框,再采用NMS除去多余的候選框,得到最優(yōu)目標(biāo)框,算法對(duì)最優(yōu)框內(nèi)的內(nèi)容進(jìn)行學(xué)習(xí),摒除了無(wú)關(guān)信息的干擾。
在PC機(jī)及C++編程語(yǔ)言和CUDA環(huán)境下實(shí)現(xiàn)上述算法,算法實(shí)施平臺(tái)性能主要參數(shù)見表2。
表2 算法實(shí)施PC機(jī)主要性能參數(shù)
測(cè)試的數(shù)據(jù)集為HandNet數(shù)據(jù)集[13],包含10名參與者的手在RealSense RGB-D相機(jī)前非剛性變形的深度圖像。其中還包含了6D數(shù)據(jù),用于描述手的中心及指尖的位置方向信息。數(shù)據(jù)均保存為.mat文件。HandNet數(shù)據(jù)集信息如表3所示。
表3 HandNet數(shù)據(jù)集信息
隨機(jī)從HandNet中選取10 000張圖片作為訓(xùn)練集,1 000張圖片作為驗(yàn)證集,5 000張圖片作為最后的測(cè)試集。將數(shù)據(jù)集分為5類(1-單指型手勢(shì),2-雙指型手勢(shì),3-三指型手勢(shì),4-四指型手勢(shì),5-五指型手勢(shì))。根據(jù)圖5,在深度學(xué)習(xí)Caffe的框架下測(cè)試基于Faster RCNN的手勢(shì)識(shí)別系統(tǒng)。測(cè)試中只生成置信度在90%以上的候選框。部分測(cè)試結(jié)果如圖6所示。
圖6 深度學(xué)習(xí)檢測(cè)結(jié)果
經(jīng)過5 000張圖片的測(cè)試,得到的測(cè)試準(zhǔn)確率為99.14%,而SVM等傳統(tǒng)手勢(shì)識(shí)別算法識(shí)別準(zhǔn)確率為96%左右[14],平均每張圖片測(cè)試時(shí)間為44.19 ms。傳統(tǒng)算法中平均每張圖片的測(cè)試時(shí)間一般不低于1 s。因此,本算法較傳統(tǒng)方法具有手勢(shì)識(shí)別檢測(cè)準(zhǔn)確率高、檢測(cè)效率高的優(yōu)勢(shì)。
通過采用Faster RCNN對(duì)手勢(shì)目標(biāo)進(jìn)行定位,能夠準(zhǔn)確并迅速定位手勢(shì)在圖中的位置。通過對(duì)Faster RCNN網(wǎng)絡(luò)參數(shù)的調(diào)整,提升了識(shí)別準(zhǔn)確率。相較于傳統(tǒng)算法,省去了手動(dòng)提取特征的過程,提升了手勢(shì)識(shí)別的泛化能力。相比傳統(tǒng)算法,該算法對(duì)手勢(shì)識(shí)別更快、更準(zhǔn)確。