何啟莉,何家峰,郭 娟
(廣東工業(yè)大學(xué) 信息工程學(xué)院,廣東 廣州 510006)
隨著人工智能技術(shù)的進(jìn)步,智能化設(shè)備逐漸融入到人們生活的方方面面。傳統(tǒng)的醫(yī)療檢測儀器逐漸被智能電子儀器所替代,如心率測量儀、血壓檢測儀等,然而視力檢測這一基本的體檢項(xiàng)目仍然沿用傳統(tǒng)的人工檢測方法,檢測效率低,消耗人力且極不方便。 隨著計(jì)算機(jī)視覺技術(shù)迅速發(fā)展,手勢識別也逐漸成為智能人機(jī)交互的重要研究領(lǐng)域[1-4]。 本文通過對視力檢測進(jìn)行手勢識別,達(dá)到自動(dòng)化視力檢測的目的。
目前對手勢識別技術(shù)的研究主要包括基于外部設(shè)備的手勢識別技術(shù)和基于計(jì)算機(jī)視覺的手勢識別技術(shù)兩方面?;谕獠吭O(shè)備的手勢識別技術(shù)在硬件造價(jià)上過于昂貴,比如利用數(shù)據(jù)手套[5-6]或者固定在手臂上的動(dòng)作傳感器來獲取手勢數(shù)據(jù)[7],并且需要全套的配套設(shè)施,限制較多。 基于計(jì)算機(jī)視覺的手勢識別技術(shù)核心在于提取手勢的特征。傳統(tǒng)的識別算法多是由人工設(shè)計(jì)提取特征,然后再用分
類器分類識別,比如劉小建提出一種使用深度信息進(jìn)行多特征提取的手勢識別算法,再應(yīng)用一個(gè)多分類的SVM 分類器對手勢進(jìn)行分類[8]。人工提取特征繁瑣、費(fèi)時(shí),可能還會(huì)因?yàn)樘崛√卣鳟a(chǎn)生的誤差而導(dǎo)致識別準(zhǔn)確率低。 隨著卷積神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺領(lǐng)域的迅速發(fā)展,對于將卷積神經(jīng)網(wǎng)絡(luò)用在手勢識別上有了突破性的進(jìn)展[9]。 朱雯文在對 LeNet-5卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分析的基礎(chǔ)上,提出了一種適合加速信號的LeNet-A 網(wǎng)絡(luò),其識別準(zhǔn)確率達(dá)到90.37%[10]。 龍輝基于深度學(xué)習(xí)理論將 MobileNet 和SSD 網(wǎng)絡(luò)相結(jié)合得到一種新的網(wǎng)絡(luò)模型,該模型的識別準(zhǔn)確率達(dá)到了 93.7%[11]。 為了提高識別的準(zhǔn)確率,神經(jīng)網(wǎng)絡(luò)層次越來越復(fù)雜,大幅度地提高了網(wǎng)絡(luò)的計(jì)算量的同時(shí),容易出現(xiàn)過擬合現(xiàn)象[12]。為此,本文提出的方法是:手勢識別前先對其進(jìn)行膚色閾值分割處理,并將傳統(tǒng)的AlexNet 網(wǎng)絡(luò)模型中的大卷積核替換成小卷積,刪除全連接層,不再使用LRN層,在每次卷積之后都加上 Dropout 層[13],以此來解決計(jì)算量大、過擬合問題,增強(qiáng)了模型的非線性,提高識別率。
設(shè)計(jì)一個(gè)視力檢測系統(tǒng),該系統(tǒng)通過手勢識別技術(shù)實(shí)現(xiàn)自動(dòng)化視力檢測[14]。 系統(tǒng)包括手勢采集模塊、手勢識別模塊、輸出控制模塊以及顯示器、揚(yáng)聲器等輸出模塊,其整體框架圖如圖1 所示。
圖1 視力檢測系統(tǒng)整體框架圖
視力檢測者看到顯示器顯示的“E”圖標(biāo)時(shí),直接用手部動(dòng)作給出“E”開口方向,通過攝像頭采集該手勢信息,對采集到的手勢圖片進(jìn)行預(yù)處理后輸入手勢識別模塊進(jìn)行識別, 根據(jù)控制模塊判斷結(jié)果,控制顯示器顯示不同視力等級的“E”圖標(biāo),再次重復(fù)進(jìn)行上述步驟,最后得出結(jié)果。 比對醫(yī)療檢測標(biāo)準(zhǔn)對應(yīng)的人體視力值,從而得到被測者的視力值并顯示最終結(jié)果。
視力檢測者在進(jìn)行視力檢測時(shí),看到“E”開口方向,直接用手勢動(dòng)作信息確定方向。 本文數(shù)據(jù)集包括視力檢測時(shí)的五種手勢(上、下、左、右、看不清),利用 Python 中的 OpenCV 調(diào)用電腦攝像頭,對錄制手勢視頻按照一定的幀數(shù)保存圖片,圖片的命名將直接作為對應(yīng)的標(biāo)簽。 五種手勢,每種手勢在不同角度、不同背景、不同亮度下采集1 300 張圖片,整個(gè)數(shù)據(jù)集包含6 600 張圖片。
電腦攝像頭采集的手勢圖片大小為300 像素×300 像素,為了加快訓(xùn)練網(wǎng)絡(luò)的收斂性,將采集到的手勢圖片進(jìn)行預(yù)處理,并對圖片進(jìn)行歸一化,得到大小為 227 像素×227 像素的圖片。 采集到的手勢數(shù)據(jù)集中部分手勢如圖2 所示。
圖2 手勢數(shù)據(jù)庫中樣例
本文利用基于YCrCb 顏色空間的Cr 分量和Otsu法閾值分割算法來對手勢訓(xùn)練集進(jìn)行降噪處理。
YCrCb 是彩色空間的一種, 其中Y 為亮度成分,Cb 和 Cr 分別為藍(lán)色和紅色的濃度偏移量成分。 因?yàn)閅CrCb 空間受亮度影響很小,膚色會(huì)產(chǎn)生很好的聚類,這樣就能把三維空間降為二維的CrCb 空間,膚色點(diǎn)會(huì)形成一定的形狀。 根據(jù)經(jīng)驗(yàn),滿足膚色的CrCb 的 值 域 為 :133 ≤Cr ≤173,77 ≤Cb ≤127, 其 他的為非膚色點(diǎn)。
Otsu 算法是由日本學(xué)者大津于1979 年提出的一種對圖像進(jìn)行二值化的高效算法,也稱為最大類間算法,計(jì)算簡單,不受圖像亮度和對比度的影響。Otsu 算法是按圖像的灰度特性將圖像分為背景和前景兩部分。 用方差作為灰度分布均勻的一種度量,前景和背景間的類間方差越大,說明構(gòu)成圖像的兩部分的差別越大。 公式表示如下:
其中ω0為前景的像素點(diǎn)占整幅圖像的比列,其平均灰度為 μ0,ω1為背景的像素點(diǎn)占整幅圖像的比列,其平均灰度為 μ1,類間方差記為 g。
對手勢圖像預(yù)處理過程分為以下三步:
(1)將 RGB 圖像轉(zhuǎn)換到 YCrCb 顏色空間,提取Cr 分量圖像;
(2)對 Cr 分量進(jìn)行高斯濾波;
(3)對高斯濾波后的 Cr 分量圖像用 Otsu 法做二值化閾值分割處理。 處理后的圖像效果如圖3所示。
圖3 閾值分割處理
卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn)是局部鏈接、權(quán)值共享和空間或時(shí)間上的下采樣(池化)。 卷積神經(jīng)網(wǎng)絡(luò)具有表征學(xué)習(xí)的能力,能按照其階層結(jié)構(gòu)對所輸入的信息進(jìn)行平移不變分類,采用梯度下降法最小化損失函數(shù),對網(wǎng)絡(luò)中的權(quán)重參數(shù)逐層進(jìn)行反向調(diào)節(jié),通過高頻的迭代訓(xùn)練來提高網(wǎng)絡(luò)的精度。卷積是CNN的核心,用卷積核掃描圖像,提取圖像中的特征信息。 不同的卷積核與上一層得到的特征圖作卷積運(yùn)算,然后加上偏置值得到輸出,再通過一個(gè)激活函數(shù)推出卷積結(jié)果,得到特征圖。 卷積層的輸出特征Fc表示為:
其中有 m 個(gè)卷積層,第 i 個(gè)出入特征為 Mi,對應(yīng)的卷積 核為 Ci,B1為 偏 置 值 ,f 表示激 活 函 數(shù) ,con 表示卷積函數(shù)。
對卷積輸出特性進(jìn)行池化操作,減小維度,再通過對全連接層進(jìn)行權(quán)值變換和激活,可獲得分類結(jié)果。 全連接層的分類函數(shù)可表示為:
式中:f 為激活函數(shù),W 是相應(yīng)權(quán)重,T 表示完全連接層的輸入特性,B2是偏置值。
Dropout 是一種防止模型過擬合的技術(shù),基本思想是在訓(xùn)練時(shí)隨機(jī)地丟棄一些神經(jīng)元,使網(wǎng)絡(luò)更稀疏,模型不會(huì)過于依賴某些局部特征,從而讓模型具有更好的魯棒性,提高模型的泛化能力。 Dropout優(yōu)化前后的對比如圖4 所示。
圖 4 Dropout 優(yōu)化前后對比圖
AlexNet 網(wǎng)絡(luò)結(jié)構(gòu)[15]是在 2012 年的 ImageNet 競賽中取得冠軍的一個(gè)網(wǎng)絡(luò)模型。 該模型共有8 層,包括 5 個(gè)卷積層和 3 個(gè)全連接層,在每一個(gè)卷積層中包含了激勵(lì)函數(shù)ReLU 以及局部響應(yīng)歸一化(LRN)處理,然后經(jīng)過降采樣(pooling 處理),最后通過一個(gè)Softmax 分類器進(jìn)行分類。 Softmax 模型是 logistic 回歸模型在多分類問題上的推廣,可以為每個(gè)輸出分類的結(jié)果都賦予一個(gè)概率值,表示屬于每個(gè)類別的可能性,Softmax 函數(shù)表示如下:
其中 zi為第 i 個(gè)節(jié)點(diǎn)的輸出值,C 為分類的類別個(gè)數(shù)。 AlexNet 的基本架構(gòu)如圖 5 所示。
GR-AlexNet(Gesture Recognition AlexNet) 模型是本文針對視力檢測所提出的模型。GR-AlexNet 模型如圖 6 所示。
大尺寸的卷積核具有更大的感受野,但是大尺寸的卷積核會(huì)帶來更多的參數(shù),增加計(jì)算量。 受文獻(xiàn)[16]的啟發(fā),用卷積核大小分別為 5×5、7×7 的兩個(gè)小卷積核來替代11×11 的大卷積核,減少參數(shù)個(gè)數(shù),加快計(jì)算。 再級聯(lián)一個(gè) 1×1 的卷積層,增加網(wǎng)絡(luò)模型的深度及非線性[17]。同時(shí),為了避免過擬合,每次卷積后增加一個(gè)Dropout 操作。
圖 5 AlexNet 模型結(jié)構(gòu)圖
圖 6 GR-AlexNet 模型結(jié)構(gòu)圖
(1)在 GR-AlexNet 網(wǎng)絡(luò)中,用 7×7、5×5、1×1 的三個(gè)小卷積核代替了原網(wǎng)絡(luò)中11×11 的大卷積核,改進(jìn)后的卷積層的具體參數(shù)如表1 所示。 去掉一層全連接層(FC7),具體的參數(shù)變化如表2 所示。 參數(shù)對比:改進(jìn)后參數(shù)減少1 458 144 個(gè)。
表 1 Conv1-1,Conv1-2,Conv1-3 具體參數(shù)
表2 原網(wǎng)絡(luò)與改進(jìn)網(wǎng)絡(luò)的參數(shù)變化對比
(2)在每次卷積后都增加一個(gè)Dropout 優(yōu)化操作,并且刪除激活函數(shù)與池化層之間的LRN 層。
實(shí) 驗(yàn) 環(huán) 境 為 64 位 Win10 系 統(tǒng) ,CPU 為 AMD Ryzen 7 4800H with Radeon Graphics,CPU 的 主 頻 為2.9 GHz,內(nèi)存為 8 GB。 訓(xùn)練模型是在 Anaconda 下基于 Python 語言的 Pycharm 編譯工具,采用 Tensor-Flow 深度學(xué)習(xí)框架。
本文實(shí)驗(yàn)數(shù)據(jù)集是采集的關(guān)于視力檢測時(shí)手勢,包括上、下、左、右和看不清 5 種手勢,每種手勢右 1 300 張,共計(jì) 6 600 張圖片。 圖片的大小統(tǒng)一為 227 像素×227 像素,隨機(jī)地選取其中的 80%作為訓(xùn)練集,20%作為測試集在網(wǎng)絡(luò)訓(xùn)練中,學(xué)習(xí)率設(shè)置為0.001,迭代次數(shù)設(shè)置為320,批次的大小設(shè)置為32,使用隨機(jī)梯度下降法來訓(xùn)練網(wǎng)絡(luò),更新參數(shù),最小化損失函數(shù),Dropout 的概率設(shè)置為0.9,使用ReLU 激活函數(shù),ReLU 激活函數(shù)的表達(dá)式如下:
4.3.1 識別準(zhǔn)確率對比
分別訓(xùn)練 LeNet5 模型、AlexNet 模型以及 GRAlexNet 模型,并且對其識別準(zhǔn)確率進(jìn)行對比。 識別準(zhǔn)確率與迭代次數(shù)的曲線如圖7 所示。
從圖7 中可以看出,識別準(zhǔn)確率在迭代步數(shù)達(dá)到 320 時(shí),趨于飽和。 其中,LeNet5識別準(zhǔn)確率為 90.62%,AlexNet 識別準(zhǔn)確率為 93.75%,VGG16 識別準(zhǔn)確率為 87.5%,GR-AlexNet 模型識別準(zhǔn)確率為96.88%,由此可以看出,針對于本文中的數(shù)據(jù)集,GR-AlexNet 模型有更高的識別率。
4.3.2 損失率對比
分 別訓(xùn) 練 LeNet5 模 型 、AlexNet 模 型 、VGG16 模型以及 GR-AlexNet 模型,將其損失率進(jìn)行對比。 損失率與迭代次數(shù)的曲線如圖8 所示。
針對本文的數(shù)據(jù)集,神經(jīng)網(wǎng)絡(luò)的損失率隨著訓(xùn)練步數(shù)的增加而降低,并且均在320 步時(shí)趨于最小值。 從圖8 中可以看出,傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)和改進(jìn)后的神經(jīng)網(wǎng)絡(luò)的損失率均隨著訓(xùn)練步數(shù)的增加而降低,并且均在 320 步時(shí)趨于最小值。 通過大量的實(shí)驗(yàn),VGG16 雖然具有最低的損失率,但是存在過擬合現(xiàn)象,所以VGG16 針對本文的數(shù)據(jù)集的識別準(zhǔn)確率很低。
圖7 識別準(zhǔn)確率與迭代次數(shù)關(guān)系曲線
圖8 損失率與迭代次數(shù)關(guān)系曲線
4.3.3 訓(xùn)練時(shí)間對比
對于本文中的手勢數(shù)據(jù)集,分別計(jì)算用AlexNet模型、VGG16 模型和 GR-AlexNet 模型訓(xùn)練的耗時(shí),且兩種模型的訓(xùn)練迭代次數(shù)均相同,其耗時(shí)時(shí)長如表 3 所示。
表 3 AlexNet 和 GR-AlexNet 下的訓(xùn)練耗時(shí)
從表 3 中可以看出,AlexNet 模型訓(xùn)練耗時(shí)在25 min 左右,GR-AlexNet 模型訓(xùn)練耗時(shí) 在 19 min 左右,而 VGG16 模型訓(xùn)練耗時(shí)在40 min 左右。 所以GR-AlexNet 模型具有較快的訓(xùn)練速度。
本文提出了一種改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)模型:GR-AlexNet 模型,用于對視力檢測涉及的5 種手勢進(jìn)行識別。 模型在足夠的樣本學(xué)習(xí)之后,可以自動(dòng)獲取樣本特征,多次訓(xùn)練后得到高性能模型。 與傳統(tǒng)的模型相比,GR-AlexNet 模型網(wǎng)絡(luò)參數(shù)減少,計(jì)算速度提高,模型的非線性增強(qiáng),具有更好的泛化性能,損失率也更低。 用測試樣本圖片對改進(jìn)的模型進(jìn)行測試,并且與傳統(tǒng)的 LeNet5、AlexNet 模型以及 VGG16 模型作對比實(shí)驗(yàn)。 GR-AlexNet 模型的識別準(zhǔn)確率較 LeNet5 提高了 6.26%,較 AlexNet 提高了 3.13%,較 VGG16 提高了 9.38%。 實(shí)驗(yàn)結(jié)果表明GR-AlexNet 模型在加快了訓(xùn)練速度的基礎(chǔ)上,也提高了識別精度。