黃彥銘,寧媛
(貴州大學(xué) 電氣工程學(xué)院,貴陽(yáng) 550025)
人的手勢(shì)自身就具有廣泛的多義性、多樣性、多元化以及空間和時(shí)間上的差異性等多種獨(dú)特的特點(diǎn),再加上人手形體的復(fù)雜性以及人體視覺(jué)的不確定性,所以基于視覺(jué)的手勢(shì)識(shí)別成為了多學(xué)科、多領(lǐng)域交叉的研究難題。
手勢(shì)識(shí)別主要是利用機(jī)器設(shè)備對(duì)人的手、胳膊等各關(guān)節(jié)的空間角度位置進(jìn)行檢測(cè)。這些機(jī)器設(shè)備大多是通過(guò)有線通信技術(shù)將計(jì)算機(jī)系統(tǒng)與人體互相結(jié)合連接,讓使用者的手勢(shì)信息準(zhǔn)確地傳送至識(shí)別系統(tǒng)內(nèi),其中典型設(shè)備以數(shù)據(jù)手套等機(jī)器設(shè)備為代表[1]。數(shù)據(jù)手套是由各種傳感器組成的,使用者利用這些傳感器將自身手的位置、角度以及手指的角度等信息錄入到計(jì)算機(jī)系統(tǒng)內(nèi),達(dá)到手勢(shì)識(shí)別的目的。盡管數(shù)據(jù)手套能夠?qū)θ耸肿R(shí)別達(dá)到良好的識(shí)別檢測(cè)效果,但由于其價(jià)格昂貴,難以普遍應(yīng)用。在此之后,光學(xué)標(biāo)記方法的出現(xiàn)淘汰了數(shù)據(jù)手套,使用者的手上戴上光學(xué)標(biāo)記,通過(guò)紅外傳感器將人手位置、形態(tài)等變化傳送到系統(tǒng)內(nèi),達(dá)到良好的識(shí)別效果,但此方法約束了人手的活動(dòng)范圍,也避免不了復(fù)雜的設(shè)備使用[2]。
雖然引入外部設(shè)備能夠提升手勢(shì)識(shí)別的快速性、穩(wěn)定性以及準(zhǔn)確性,但卻會(huì)掩蓋手勢(shì)的自然表達(dá)方式,于是基于視覺(jué)的手勢(shì)識(shí)別方式應(yīng)運(yùn)而生[3]。
本研究的設(shè)計(jì)流程如圖1 所示。利用OpenCV調(diào)用電腦攝像頭采集人體手勢(shì)圖像,建立手勢(shì)庫(kù),以此為基礎(chǔ),對(duì)手勢(shì)庫(kù)中所采集到的手勢(shì)圖像進(jìn)行預(yù)處理,將圖像中的手勢(shì)部分提取出來(lái),分為測(cè)試集和訓(xùn)練集2 部分。其中,訓(xùn)練集用于導(dǎo)入所設(shè)計(jì)的CNN 卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行模型訓(xùn)練,測(cè)試集則是對(duì)所得到的訓(xùn)練模型進(jìn)行準(zhǔn)確率測(cè)試,當(dāng)測(cè)試準(zhǔn)確率達(dá)標(biāo),則輸出保存訓(xùn)練模型,以此作為實(shí)時(shí)手勢(shì)圖像的手勢(shì)判斷模型。
圖1 總體設(shè)計(jì)流程Fig.1 Overall design
圖像預(yù)處理在數(shù)字圖像中占有很重要的地位,圖像質(zhì)量的好壞,直接影響分析,例如分類、識(shí)別、分割等,圖像預(yù)處理部分就是基礎(chǔ),也是重中之重。圖像預(yù)處理即是將手中的原始圖像進(jìn)行加工,處理。在本研究中針對(duì)手勢(shì)圖像,采用了數(shù)據(jù)增廣,膚色提取和形態(tài)學(xué)處理3 種方法做圖像預(yù)處理。
作為深度學(xué)習(xí)預(yù)處理中的常用技巧之一,數(shù)據(jù)增廣的作用是增加數(shù)據(jù)集的量,增加數(shù)據(jù)集的多元性以及多樣性,使所得到的訓(xùn)練模型具有更強(qiáng)的泛化能力。通過(guò)數(shù)據(jù)增廣提升數(shù)據(jù)集中的相關(guān)數(shù)據(jù),能防止網(wǎng)絡(luò)學(xué)習(xí)到不相關(guān)的特征,更多的學(xué)到與數(shù)據(jù)有關(guān)的性能,顯著的提升整體的性能,目前數(shù)據(jù)增廣主要包括:水平/垂直翻轉(zhuǎn)、旋轉(zhuǎn)、縮放、裁剪、剪切、平移、對(duì)比度、色彩抖動(dòng)、噪聲等[4]。本研究中主要運(yùn)用圖像平移、翻轉(zhuǎn)以及旋轉(zhuǎn)3 種常用數(shù)據(jù)增廣方法。
假設(shè)圖像的原始坐標(biāo)為(x0,y0),平移后的坐標(biāo)為(x,y),則平移前和平移后的坐標(biāo)關(guān)系如式(1)所示:
平移是指所有的像素在x和y方向各平移相應(yīng)單位,平移變換對(duì)應(yīng)的數(shù)學(xué)矩陣為式(2):
圖像翻轉(zhuǎn)包括水平翻轉(zhuǎn)和垂直翻轉(zhuǎn),其中水平翻轉(zhuǎn)對(duì)應(yīng)的數(shù)學(xué)矩陣如式(3)所示,垂直翻轉(zhuǎn)對(duì)應(yīng)的數(shù)學(xué)矩陣如式(4)所示:
圖像旋轉(zhuǎn)則是需要確定旋轉(zhuǎn)角,旋轉(zhuǎn)對(duì)應(yīng)的數(shù)學(xué)矩陣如(5)所示:
本文對(duì)原始手勢(shì)圖像所做的數(shù)據(jù)增廣示例,如圖2 所示。
圖2 數(shù)據(jù)增廣示例圖Fig.2 Data augmentation example diagram
常規(guī)下原始手勢(shì)圖像都是基于RGB(三原色)空間下的圖像,這樣的圖像更便于在硬件中理解與處理。而在機(jī)器視覺(jué)中,為了提取RGB 原始手勢(shì)圖像中的手勢(shì)部分,通常是將RGB 轉(zhuǎn)換為HSV 顏色空間,其中H代表色度 hue,S代表飽和度saturation,V代表亮度value,各個(gè)參數(shù)的范圍見(jiàn)表1[5]。因此,在HSV 顏色空間中能通過(guò)對(duì)3 個(gè)參數(shù)的范圍進(jìn)行一個(gè)設(shè)定,在此范圍內(nèi)的即為膚色區(qū)域,也就是手勢(shì)區(qū)域。而膚色區(qū)域的H、S、V3 個(gè)參數(shù)范圍如式(6)所示。
表1 HSV 參數(shù)范圍Tab.1 HSV parameter range
基于HSV 顏色空間的膚色提取預(yù)處理圖像示例如圖3 所示。
圖3 基于HSV 顏色空間的膚色提取示例圖Fig.3 Skin color extraction based on HSV color space example diagram
數(shù)學(xué)形態(tài)學(xué)中有2 個(gè)基本運(yùn)算,即腐蝕和膨脹。腐蝕和膨脹是針對(duì)圖像高亮部分而言,其操作就是將圖像或圖像的一部分A,與卷積核B 進(jìn)行卷積后的取值與賦值操作。
圖像腐蝕操作就像“領(lǐng)域被蠶食”一樣,將圖像的高亮部分縮減化,其運(yùn)行所得到的結(jié)果圖與原圖中的高亮區(qū)域相比面積更小,線條更細(xì)。其數(shù)學(xué)表達(dá)式(7)如下:
式(7)表示圖像A 用卷積核B 來(lái)進(jìn)行腐蝕處理,通過(guò)卷積核B 與圖像A 進(jìn)行卷積計(jì)算,得出B覆蓋區(qū)域的像素最小值,并用這個(gè)最小值來(lái)替代參考點(diǎn)的像素值,即是求局部最小值操作,這樣原圖中的高亮區(qū)域就會(huì)逐漸減小。
圖像膨脹操作是腐蝕操作的逆操作,就像“領(lǐng)域的擴(kuò)張”一樣,將圖像中的高亮區(qū)域擴(kuò)張,其運(yùn)行所得到的結(jié)果圖與原圖的高亮區(qū)域相比面積更大,線條更粗。其數(shù)學(xué)表達(dá)式(8)如下:
式(8)表示圖像A 用卷積核B 來(lái)進(jìn)行膨脹操作,即是求局部最大值,達(dá)到增大原圖高亮區(qū)域的目的。
腐蝕與膨脹兩者結(jié)合形成了開運(yùn)算和閉運(yùn)算。開運(yùn)算是先腐蝕再膨脹,主要目的為去除孤立的小點(diǎn);閉運(yùn)算則是先膨脹再腐蝕,主要目的為填平小孔,彌合小裂縫。本研究中運(yùn)用了兩次開運(yùn)算,用以加強(qiáng)對(duì)圖像的處理效果,處理示例如圖4 所示。
圖4 腐蝕膨脹示例圖Fig.4 Corrosion and expansion example diagram
本文采用深度學(xué)習(xí)中的CNN 卷積神經(jīng)網(wǎng)絡(luò)來(lái)對(duì)所得到的預(yù)處理手勢(shì)圖片進(jìn)行模型訓(xùn)練,相較于簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)模型,CNN 卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)在于不再單一地對(duì)每個(gè)圖片像素做處理,而是對(duì)一小塊區(qū)域的處理。這種做法加強(qiáng)了圖像信息的連續(xù)性,使得神經(jīng)網(wǎng)絡(luò)看到的是一個(gè)圖像,而非一個(gè)點(diǎn),同時(shí)也加深了神經(jīng)網(wǎng)絡(luò)對(duì)圖像的理解,卷積神經(jīng)網(wǎng)絡(luò)有一個(gè)批量過(guò)濾器,通過(guò)重復(fù)的收集圖像的信息,每次收集的信息都是小塊像素區(qū)域的信息,將信息整理,先得到邊緣信息,再用邊緣信息總結(jié)出更高層的信息結(jié)構(gòu),得到部分輪廓信息,然后得到完整的圖像信息特征,最后將特征輸入全連接層進(jìn)行分類,得到分類結(jié)果。本文中卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)流程如圖5 所示。
圖5 CNN 卷積神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)流程Fig.5 CNN convolutional neural network model design process
使用預(yù)處理數(shù)據(jù)集訓(xùn)練的模型的準(zhǔn)確率和損失函數(shù)如圖6 和圖7 所示??梢钥吹?,隨著訓(xùn)練模型步驟的增多,其深度的加深,即采集到的訓(xùn)練集的特征的逐步增多,訓(xùn)練的準(zhǔn)確率逐步增高,最后逐漸穩(wěn)定在0.96~0.97 之間,而損失函數(shù)也逐步的降低到0.6 左右。
圖6 訓(xùn)練集準(zhǔn)確率Fig.6 Training set accuracy
圖7 損失函數(shù)Fig.7 Loss function
為了更好的實(shí)現(xiàn)人機(jī)交互,本文利用PyQt5 的designer 工具生成了人機(jī)交互界面,調(diào)用電腦攝像頭對(duì)實(shí)時(shí)拍攝的手勢(shì)圖像進(jìn)行識(shí)別,測(cè)試結(jié)果如圖8所示。
圖8 測(cè)試結(jié)果圖Fig.8 Test result chart
本文選用的工具是Spyder,對(duì)一、二、三、四,4種手勢(shì)圖像進(jìn)行圖像增廣、膚色提取和腐蝕膨脹等預(yù)處理操作,設(shè)計(jì)了CNN 卷積神經(jīng)網(wǎng)絡(luò)對(duì)預(yù)處理圖像進(jìn)行分類、驗(yàn)證以及識(shí)別,并用PyQt5 的designer工具實(shí)現(xiàn)了人機(jī)交互界面顯示實(shí)驗(yàn)結(jié)果,得到了較為滿意的實(shí)驗(yàn)結(jié)果,為圖像預(yù)處理以及人機(jī)交互奠定了良好的基礎(chǔ)。