覃福鈿
【摘 要】人工智能時代,現(xiàn)實生活的方方面面都在發(fā)生智能化的轉(zhuǎn)變。本文以手勢識別為例,講述了基于Tensorflow的卷積神經(jīng)網(wǎng)絡(luò)人工智能技術(shù),在人機交互的實際應(yīng)用中是如何實現(xiàn)的,包括了手勢圖像數(shù)據(jù)的采集和預(yù)處理、卷積神經(jīng)網(wǎng)絡(luò)的搭建、模型訓(xùn)練、以及如何應(yīng)用到實際工程項目中。
【關(guān)鍵詞】人工智能;卷積神經(jīng)網(wǎng)絡(luò);人機交互;手勢識別
人機交互是指人與計算機之間使用某種語言,以一定的方式進行信息交換的過程 [1]。常見的人機交互方式有大家比較熟悉的鍵盤、鼠標(biāo)、圖形化界面、觸摸屏等,隨著信息技術(shù)的發(fā)展,越來越智能化的交互方式也逐漸出現(xiàn),比如語音識別、智能客服、手勢識別等。本文論述手勢識別這個人機交互功能利用卷積神經(jīng)網(wǎng)絡(luò)的實現(xiàn)原理和過程。
1.卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)是一種包含卷積計算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)的最經(jīng)典算法之一。卷積神經(jīng)網(wǎng)絡(luò)避免了對參數(shù)的過度依賴,相比全連接神經(jīng)網(wǎng)絡(luò),能更好地識別高維數(shù)據(jù)。
卷積神經(jīng)網(wǎng)絡(luò)有輸入層、卷積層、激活函數(shù)、池化層、全連接層構(gòu)成。卷積層(Convolutional layer)有多個卷積核單元組成,是神經(jīng)網(wǎng)絡(luò)中不可缺少的部分,主要作用是提取圖像中的特征數(shù)據(jù)。激活函數(shù)(Activation Function)是在卷積之后加入偏置形成的,它的作用是增加卷積神經(jīng)網(wǎng)絡(luò)的非線性能力。池化層(Pooling layer),也叫降采樣層(subsampling),的作用是將卷積層提取到的不重要特征數(shù)據(jù)去掉,留下主要的特征數(shù)據(jù),即降低特征空間。全連接層(Full-Connected layer)是卷積神經(jīng)網(wǎng)絡(luò)隱含層的最后部分,并只向其它全連接層傳遞信號,它的作用則是對提取的特征進行非線性組合以得到輸出,即利用現(xiàn)有的高階特征完成學(xué)習(xí)目標(biāo)。
2.數(shù)據(jù)集采集和預(yù)處理
由于手勢操作的人機交互方式適合全年齡段的人,所以采集的數(shù)據(jù)集包括了老年人、中年人、青年和兒童,男女各5組數(shù)據(jù),每組數(shù)據(jù)包括了上、下、左、右、停止五種手勢,因此總共有200個數(shù)據(jù)。
首先,通過電腦的攝像頭進行采集手勢視頻的每一幀圖像,并將其保存到一個指定的目錄images中,且目錄images下再細(xì)分為up、down、right、left、stop五個子文件夾,分別保存上、下、左、右、停止五種手勢的圖片,然后將labels用數(shù)組[0,0,0,0,0]標(biāo)識,對應(yīng)位置為1標(biāo)識分類值。如圖1所示。
最后,將預(yù)處理好的數(shù)據(jù)使用shuffle()方法打亂,并且劃分為80%的訓(xùn)練數(shù)據(jù)集和20%的測試數(shù)據(jù)集,如圖2、圖3所示。
3.卷積神經(jīng)網(wǎng)絡(luò)搭建及訓(xùn)練
本文的手勢識別卷積神經(jīng)網(wǎng)絡(luò)設(shè)置三層卷積層,使用relu激活函數(shù)增加網(wǎng)絡(luò)的非線性,同時池化層使用max_pooling進行降采樣,網(wǎng)絡(luò)的最后搭建兩層全連接層,具體如下。
(1)定義卷積神經(jīng)網(wǎng)絡(luò)的一些參數(shù),輸入圖像尺寸f_height為64,濾波器的寬度filter_width為3,濾波器的高度filter_height為3,輸入數(shù)據(jù)通道數(shù)depth_in為3,隱含層1的通道數(shù)(特征數(shù)目)depth_out1為32,隱含層1的通道數(shù)(特征數(shù)目)depth_out2為32,隱含層2的通道數(shù)(特征數(shù)目)depth_out3為64,手勢分類數(shù)n_classes為5種。
(2)初始化權(quán)重weight和偏置值bias。
(3)定義卷積層和池化層如下圖所示,conv2d是卷積層,maxpool2d是池化層。卷積層的步長是1,池化層的步長是2,同時padding設(shè)置為same,即對圖像邊緣進行填充,避免卷積后圖像大小大幅度減小。
(4)構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),包括全連接層,如下圖所示,conv1、conv2、conv3分別是卷積層1、卷積層2、卷積層3,卷積層與全連接層的連接,全連接層fc1、fc2,如圖4所示。
(5)模型訓(xùn)練如圖所示,激活函數(shù)使用softmax( ),損失函數(shù)使用Tensorflow中reduce_mean( )方法進行計算,然后優(yōu)化器采用AdamOptimizer算法,此算法可以尋找全局最優(yōu),它通過反向傳播不斷修正權(quán)重和偏置值,不斷提高學(xué)習(xí)正確率。模型訓(xùn)練開始后,隨著時間的改變準(zhǔn)確率也在不斷改變,最終準(zhǔn)確率穩(wěn)定再90%左右。最后將訓(xùn)練好的參數(shù)使用tf.train.Saver( ).save( )進行保存。
參考文獻:
[1]李晶,李強,張彤宇.基于軟件交互設(shè)計綜合實踐教學(xué)研究[J].計算機教育,2017(09):167-171.
[2]邢志恒,黃澤坤.基于FPGA的手勢識別系統(tǒng)設(shè)計[J].科學(xué)技術(shù)創(chuàng)新,2020(28):122-124.
[3]王鑫,陳成凱,陳梓威,霍非凡,林樂坤,吳珂,劉浩.基于FDC2214單通道閾值分析的手勢識別系統(tǒng)[J].實驗技術(shù)與管理,2020,37(06):112-115+178.
[4]李凱,王永雄,孫一品. 一種改進的 DTW 動態(tài)手勢識別方法. 小型微型計算機系統(tǒng),2016,37(7):1600–1603.
[5]陳國良,葛凱凱,李聰浩. 基于多特征 HMM 融合的復(fù)雜動態(tài)手勢識別. 華中科技大學(xué)學(xué)報(自然科學(xué)版),2018,46(12):42–47.
[6]陳甜甜,姚璜,左明章,等. 基于深度信息的動態(tài)手勢識別綜述. 計算機科學(xué),2018,45(12):42–51,76.
基金項目:
廣東省高等教育學(xué)會“十三五”規(guī)劃2020年度高等教育研究專項課題(20GQN43);教學(xué)質(zhì)量與教學(xué)改革工程立項建設(shè)項目(東軟學(xué)院校(東軟學(xué)院?!?020〕137號)。