摘 要:針對現(xiàn)有智能家電的控制方式不夠簡便的問題,提出一種用卷積神經(jīng)網(wǎng)絡(luò)識別手勢并控制開關(guān)的方式。首先將手勢圖像作為輸入,結(jié)合卷積神經(jīng)網(wǎng)絡(luò)的經(jīng)典模型,利用灰度規(guī)范化、腐蝕和膨脹等圖像處理方法對原始手勢圖像進行預(yù)處理,得到灰度等級區(qū)分明顯、邊緣清晰的二值化圖像,進而選定質(zhì)心坐標進行手勢定位;然后根據(jù)下邊沿定位分割法對手勢進行精確分割;最后引用跳變沿檢測算法進行手勢識別。將識別的結(jié)果傳入Arduino處理器,作為家電開關(guān)的信號,實現(xiàn)一種全新的智能開關(guān)方式。這種方法一定程度上能更高效、更準確地識別手勢,同時促進家電智能化的實現(xiàn),讓更多老人享受到科技發(fā)展帶來的便捷。
關(guān)鍵詞:卷積神經(jīng)網(wǎng)絡(luò);智能家電;手勢開關(guān);手勢分割;手勢識別;智能開關(guān)
中圖分類號:TP391.4 文獻標識碼:A 文章編號:2095-1302(2024)07-00-04
0 引 言
近年來,老齡化問題開始被社會各界所關(guān)注。與此同時,越來越多的智能化家電逐漸走入我們的日常生活,而老年人卻很難適應(yīng)智能化家電的繁瑣操作流程。若能將智能家電的開關(guān)簡化,利用手勢來控制,則會大大方便人們使用家電。手勢的準確提取一直是人機交互領(lǐng)域研究的熱門話題,基于深度學(xué)習(xí)的手勢識別方法被證明優(yōu)于傳統(tǒng)的手勢識別方法。本文利用卷積神經(jīng)網(wǎng)絡(luò)的手勢識別方式,準確判斷手勢形狀,進而對家電進行開關(guān)控制,從而服務(wù)更多人群。
1 卷積神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)是一種帶有卷積結(jié)構(gòu)的深層神經(jīng)網(wǎng)絡(luò)[1],相比較K近鄰 (K-Nearest Neighbor, KNN)模式進行手勢模板匹配分類,其資源損耗明顯較低,并且是將深層神經(jīng)網(wǎng)絡(luò)運用在圖像分類和識別上的最為典型的形式。其主要針對的是圖像處理,一般包括卷積層、池化層和全連接層。
1.1 卷積層
每一張手勢圖像都是由若干個小樣本組成,選出每一小塊樣本進行學(xué)習(xí),獲得在每一小塊樣本中學(xué)習(xí)到的特征。由于卷積神經(jīng)網(wǎng)絡(luò)具有關(guān)聯(lián)性,會將獲得的特征推廣到整個圖像中去尋找具有相似特征的區(qū)域。通常這個匹配的過程被稱為卷積操作。卷積層的公式表示為[2]:
(1)
式中:l表示當前的網(wǎng)絡(luò)層數(shù),l-1為前一層網(wǎng)絡(luò);yjl表示當前卷積層的第j個特征圖;xil-1表示前一層的第i個特征;wi, j
為i和j之間的卷積核。假設(shè)現(xiàn)有特征圖大小為10×10,卷積核大小為 5×5,先在特征圖中選取5×5大小的區(qū)域與卷積核相卷積;然后加上一個偏差bjl,通過激活函數(shù)f(x),即可得到對應(yīng)區(qū)域的值;再以步長為1在特征圖上滑動,最終以同樣的方法遍歷完特征圖上所有像素點。
1.2 池化層
對卷積后的特征圖不能直接進行識別,還需要降低特征維數(shù),這樣就可以降低網(wǎng)絡(luò)的復(fù)雜度,減少計算量,這被稱作池化,也叫降采樣。其本質(zhì)是經(jīng)過卷積后圖像的尺寸會被壓縮,但不會改變特征量信息,而特征圖的尺寸在經(jīng)過池化后像素大大減小。對池化區(qū)域和特征圖進行卷積等運算,轉(zhuǎn)換成相對應(yīng)的值,這樣就能將原始的特征圖像進行壓縮,很大程度上減少計算量,降低機器的運行負載。
1.3 全連接層
全連接層作為卷積神經(jīng)網(wǎng)絡(luò)的最后一層,每個神經(jīng)元與前一層所有神經(jīng)元相連接[3],但該層神經(jīng)元之間不相互連接,究其實質(zhì)也是一種卷積層。全連接層會將最終計算結(jié)果輸出到分類器,便于后續(xù)操作。
2 圖像預(yù)處理
本文結(jié)合卷積神經(jīng)網(wǎng)絡(luò)針對家電的開關(guān)進行設(shè)計,主要對手勢的識別展開研究,最終將識別結(jié)果傳送到Arduino處理器,從而控制家電開與關(guān)。具體手勢識別過程如圖1所示,先利用各種方法對采集到的手勢圖像進行預(yù)處理,然后進行手勢定位與手勢分割,最后對得到的有效二值化圖像進行識別,得到識別結(jié)果。
對于新采集到的圖像,通常其背景會干擾最終結(jié)果的提取,所以需要對圖像進行預(yù)處理[4];然后需要對圖像進行定位,確定識別區(qū)域,再利用數(shù)學(xué)模型對區(qū)域內(nèi)的有效手勢進行分辨,得到手勢識別的結(jié)果。在提取特征值時將所有像素點分為膚色區(qū)和非膚色區(qū),特征提取過程中由于光線的明暗、圖片清晰度等多種因素的影響,物體的顏色會發(fā)生改變,若手勢較為復(fù)雜,往往會影響膚色區(qū)和非膚色區(qū)的辨別。
使用卷積神經(jīng)網(wǎng)絡(luò)處理圖像后,部分變換后的圖像的像素坐標不能和原圖像整數(shù)坐標相互對應(yīng)。因此,可以采用灰度級插值法和灰度規(guī)范化圖像處理方法進行修正,灰度級插值法經(jīng)常采用的方法有最近鄰插值法、雙線性插值法和雙三次插值法。這三種方法各有優(yōu)缺點,具體見表1所列。
從表1可以看到,灰度級插值法中并沒有一個完美的處理方法。相比較而言,灰度規(guī)范化的圖像處理方法可以更高精度地提高圖像質(zhì)量,圖像細節(jié)處理更加清晰,具體如下。
直方圖均衡化利用頻率關(guān)系可以精確降低噪聲,圖像中各灰度級像素的概率可以表示為:
式中:rk表示第k個灰度級;nk表示第k級灰度的像素;N表示圖像的像素總數(shù)。從上面的概率表達式可以看出,表征圖像的關(guān)鍵統(tǒng)計值是圖像灰度概率密度函數(shù)的近似值。從統(tǒng)計學(xué)角度來看,轉(zhuǎn)換后的灰度分布為均勻分布[5]。對比度越小,灰度級k值越小,因此對應(yīng)的灰度直方圖分布也較為均衡,主要集中在一個區(qū)域。利用概率公式可以得出,其灰度級出現(xiàn)概率相同時,圖像包含的特征信息量最大。r表示原圖像灰度歸一化后的圖像灰度;s表示直方圖均衡化后的圖像灰度;T(r)為變換函數(shù);r和s之間一一對應(yīng),s=T(r)應(yīng)滿足下列條件[6]:
①s在[0,1]區(qū)間內(nèi)單調(diào)遞增;
②在[0,1]區(qū)間,反變換r=T-1(s)存在,且單調(diào)遞增。
條件①保證從黑到白的順序,條件②則保證映射后像素灰度在允許范圍內(nèi)。假設(shè)隨機變量s的分布函數(shù)為Fs(s),根據(jù)分布函數(shù)的定義,則有:
然后兩邊對s求導(dǎo)得:
對直方圖均衡化有Ps(s)=1,則:
兩邊積分得:
直方圖均衡化會讓圖像細節(jié)更加清晰。由于圖像處理過程中都按照黑白圖像處理,因此直方圖的灰度等級很重要,而直方圖均衡化可以平衡各灰度等級分布,為后續(xù)的操作打下良好的基礎(chǔ)。
(2)灰度變換
灰度變換主要針對灰度級動態(tài)區(qū)域,借助圖像灰度值的分布概率密度函數(shù)均值和均方差公式,最終將灰度統(tǒng)一化調(diào)整為0和1。通常會設(shè)定分布概率密度函數(shù)均值和均方差公式如式(7)所示。設(shè)一幅尺寸為N×M的圖像,灰度值分布用矩陣I(i, j)來表示,i和j表示像素點,代表圖像中某點對應(yīng)的矩陣元素值[7],且1≤i≤M,1≤j≤N。
這樣處理的圖像對比度明顯,細節(jié)突出。
在手勢識別中,圖片有了較強的對比度還不夠,在所采集到的圖像中往往手部區(qū)域圖像是離得最近的,經(jīng)過處理會得到對比度較為明顯的圖像,深度值差別比較大,還需要對圖像進行二值化處理,因此利用閾值判斷的方法進行二值化[8]。
首先設(shè)定一個中心點,同時確定一個閾值,若像素點與中心點的距離小于閾值時,該點值為1,則判斷其為手掌點;距離大于閾值的像素點,值為0,為非手掌點,也可理解為非膚色點,可以丟棄。由此可知,區(qū)分手勢區(qū)域和背景區(qū)域主要靠判斷像素點與中心點的距離是否在閾值范圍內(nèi)。
閾值分割后的圖像主要以二值手勢圖像存在,但圖像中還存在一些噪音,為了減少圖像中大的噪點,從而保證輸入數(shù)據(jù)計算量的減少和網(wǎng)絡(luò)運行速度的加快,這里引用腐蝕和膨脹對圖像進行預(yù)處理。設(shè)定圖像中有手勢出現(xiàn)的像素值為1,如圖2所示為腐蝕原理圖,在3×3腐蝕處理區(qū)域,只要有一個像素點為背景區(qū)域,也就是圖中的0,就把這9個像素點都變成0[9],全變成背景像素點。而膨脹處理則恰好相反,只要發(fā)現(xiàn)膨脹區(qū)域有一個手勢點,就把膨脹區(qū)域中9個像素點都變成手勢區(qū)域,設(shè)定為1,如圖3所示。通常在圖像處理過程中采用先腐蝕再膨脹的方式,腐蝕可以除去背景區(qū)域的噪點,膨脹可以將手勢區(qū)域被誤腐蝕的部分恢復(fù)出來。經(jīng)過一系列的圖像預(yù)處理,最終得到邊緣清晰、沒有噪音的二值化圖像。
3 手勢定位
對圖像進行預(yù)處理后,便可以輕松獲取有效的目標區(qū)域,稱為手勢定位。手勢定位主要是選取有效的手勢圖像區(qū)域,經(jīng)過前面的一系列處理,原始圖像轉(zhuǎn)變?yōu)槎祷南袼攸c,像素值只有0和1,選取手勢區(qū)域時要以手勢所在的區(qū)域為主,因此主要統(tǒng)計像素值為1的像素點。利用質(zhì)心公式得到手勢定位的中心,進而保證能夠?qū)⑺惺謩萦行Х指畹蕉ㄎ粎^(qū)域中。質(zhì)心計算[10]如式(8)所示:
(8)
4 手勢分割
手勢分割的目的主要是確定有效手勢區(qū)域,將無用的背景區(qū)域刪除,這一步的精確度決定了后續(xù)手勢識別的準確性。本文的手勢分割利用手勢下邊沿定位分割法,這種方式的原理易理解,操作簡單,可以實現(xiàn)手勢精確分割。經(jīng)過前面對圖像的處理,分割區(qū)域便包含需要提取的手勢信息。手勢分割圖如圖4所示。根據(jù)上述質(zhì)心公式便可得到準確的手勢定位,圖中虛線的交點即為所得到的質(zhì)心坐標,假設(shè)為(XO,YO)。手勢分割時首先確定手勢的上下邊界,這樣就很容易獲取質(zhì)心坐標到手邊緣的距離,上下左右四個方向分別定義為Length、Length1、Length2、Length2。由于人手的比例大致是固定的,研究表明:Length1≈1.8×Length,Length2≈1.4×Length。利用移位運算將小數(shù)轉(zhuǎn)化為整數(shù),原公式可變?yōu)椋篖ength1=Length+(Length×52)gt;gt;6, Length2=Length+(Length×52)gt;gt;7。
由圖4可以看到,手勢區(qū)域確定時會有一個矩形區(qū)域。為了更加精確,利用橫坐標的極值和縱坐標的極值表示[11],假設(shè)橫坐標極值為Xmin、Xmax,縱坐標極值為Ymin和Ymax??梢詫⒕唧w數(shù)值表示為:Xmin=XO-Length2,Xmax=XO+Length2,Ymin=YO-Length,Ymax=YO+Length1。這樣就將手勢精確到矩形區(qū)域中。本文主要為了控制家電的開與關(guān),另外需要連接Arduino主控芯片,因此選擇手掌表示家電的開,拳頭表示家電的關(guān)。手勢分割的仿真圖如圖5、圖6所示。
5 手勢識別
精確的手勢分割為準確的手勢識別打下了基礎(chǔ),手勢識別采用跳變沿檢測的算法[12-13]。該算法會對像素的跳變進行計數(shù),不管是正跳變(0變?yōu)?)還是負跳變(1變?yōu)?)均會加1。經(jīng)過前面的操作,已經(jīng)準確得到要識別的二值化圖像區(qū)域,因此利用跳變沿檢測的算法,很容易就可以找到發(fā)生變化的像素。手勢識別過程中沒有必要將手勢分割區(qū)域中所有像素點一一遍歷,選取手指經(jīng)常出現(xiàn)的區(qū)域
即可。結(jié)合圖4、圖5和圖6,可以發(fā)現(xiàn)手指經(jīng)常出現(xiàn)的區(qū)域橫坐標極值不變,以小拇指出現(xiàn)的區(qū)域為例,只要Ymax=YO+Length1即可。如圖7所示為手掌識別圖,如果手勢是手掌,Ymax跨越了4根手指,結(jié)合跳變沿檢測算法,像素的二值化變化了8次。圖8為拳頭識別圖,像素僅僅跳變了2次。這樣根據(jù)跳變次數(shù)的不同,即可區(qū)分此時的手勢是手掌還是拳頭,進而將各自對應(yīng)的信號傳送給Arduino處理器,用來控制家電的開與關(guān),實現(xiàn)手勢開關(guān)的功能。
6 結(jié) 語
卷積神經(jīng)網(wǎng)絡(luò)具有強大的學(xué)習(xí)能力和獨特的權(quán)值共享思想[13],在手勢識別方面表現(xiàn)出了很高的價值,能夠消除人工提取特征的缺陷,增加算法的精度,提高算法的識別率。本文基于卷積神經(jīng)網(wǎng)絡(luò)識別手勢,將識別的結(jié)果傳入Arduino處理器,作為家電開關(guān)的信號,實現(xiàn)了一種全新的智能開關(guān)方式,簡化了操作,以期幫助更多特殊群體。
參考文獻
[1]趙陽.基于卷積神經(jīng)網(wǎng)絡(luò)的手勢識別方法研究[D].天津:天津大學(xué),2019.
[2]楊文斌,楊會成.基于卷積神經(jīng)網(wǎng)絡(luò)的手勢識別方法[J].安徽工程大學(xué)學(xué)報,2018,33(1):41-46.
[3]范藝晶,羅濤,李劍峰,等.基于腦電時-空特征的深度學(xué)習(xí)失眠障礙檢測算法[J].北京生物醫(yī)學(xué)工程,2022,41(2):161-166.
[4]羅標.基于深度學(xué)習(xí)的手勢識別方法研究[D].荊州:長江大學(xué),2022.
[5]李博彤,畢海巖,賈宓,等.提升地下管線外破事件圖像識別準確性方法研究[J].電力設(shè)備管理,2021,6(3):53-55.
[6]羅標,崔艷榮.智慧學(xué)生特征畫像方法研究[J].電腦知識與技術(shù),2021,17(3):48-49.
[7]郭錦輝.手勢識別及其在人機交互系統(tǒng)中的應(yīng)用[D].廣州:華南理工大學(xué),2019.
[8]張國山,趙陽,馬紅悅.基于卷積神經(jīng)網(wǎng)絡(luò)的手勢識別[J].光電子·激光,2019,30(12):1317-1322.
[9]郭鵬崗,張林林,柳長源,等.基于手勢識別的智能窗遠程監(jiān)控系統(tǒng)[J].信息技術(shù),2022,46(7):19-25.
[10]郭小沛.基于數(shù)據(jù)手套和Kinect的手勢識別算法研究[D].濟南:濟南大學(xué),2019.
[11]曹方洲.基于深度學(xué)習(xí)的動態(tài)手勢識別方法研究[D].西安:西安理工大學(xué),2021.
[12]羅標,陳勇.融合TCN的時空域雙流動態(tài)手勢識別方法[J].現(xiàn)代電子技術(shù),2022,45(1):50-55.
[13]趙洪月.基于卷積神經(jīng)網(wǎng)絡(luò)的動態(tài)手勢識別方法研究[D].哈爾濱:哈爾濱理工大學(xué),2021.