![基于深度學習的手勢識別算法實現(xiàn)_第1頁](http://file4.renrendoc.com/view/0c1a52bdede17474246f9498384c300a/0c1a52bdede17474246f9498384c300a1.gif)
![基于深度學習的手勢識別算法實現(xiàn)_第2頁](http://file4.renrendoc.com/view/0c1a52bdede17474246f9498384c300a/0c1a52bdede17474246f9498384c300a2.gif)
![基于深度學習的手勢識別算法實現(xiàn)_第3頁](http://file4.renrendoc.com/view/0c1a52bdede17474246f9498384c300a/0c1a52bdede17474246f9498384c300a3.gif)
![基于深度學習的手勢識別算法實現(xiàn)_第4頁](http://file4.renrendoc.com/view/0c1a52bdede17474246f9498384c300a/0c1a52bdede17474246f9498384c300a4.gif)
![基于深度學習的手勢識別算法實現(xiàn)_第5頁](http://file4.renrendoc.com/view/0c1a52bdede17474246f9498384c300a/0c1a52bdede17474246f9498384c300a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
內(nèi)容摘要基于深度學習的手勢識別處理計算機視覺領(lǐng)域中的關(guān)鍵技術(shù)之一,深度學習技術(shù)在近20年得到了快速的發(fā)展,其中在2014年就提出了VGG和GoogleNet這兩大高精度高準確率的網(wǎng)絡(luò)模型。手勢識別是在圖像中捕抓到手部關(guān)鍵信息再通過手勢給機器傳達信息。手勢識別大多數(shù)情況下都是在實時視頻作為應用環(huán)境,這就對模型有著實時處理和準確性這兩個基本要求。隨著科技的發(fā)展和5G時代的到來,身處于深度學習領(lǐng)域的手勢識別技術(shù)越來越完善,在技術(shù)層面上相對現(xiàn)在一定會有了很大的進步,但同時也面臨更加深層的困難,例如各個種群的人類膚色、背景復雜度、光照條件、多人情況下的手部重疊這類打擊性很大的干預因素,是每個開發(fā)手勢識別技術(shù)人員都會面臨的難題。本次論文將以近年來較為流行的深度學習領(lǐng)域中的卷積神經(jīng)網(wǎng)絡(luò)等等神經(jīng)算法展開,將獲取到的手部信息關(guān)鍵點給予邏輯處理得到準確無誤的信息。關(guān)鍵詞:手勢識別深度學習卷積神經(jīng)網(wǎng)絡(luò)手部關(guān)鍵信息點AbstractOneofthekeytechnologiesinthefieldofcomputervisioningesturerecognitionprocessingbasedondeeplearning,Deeplearningtechnologyhasdevelopedrapidlyinthepast20years.Amongthem,thetwohigh-precisionandhigh-accuracynetworkmodelsofVGGandGoogleNetwereproposedin2014.Gesturerecognitionistocapturethekeyinformationofthehandintheimageandthenconveytheinformationtothemachinethroughthegesture.Gesturerecognitionisinmostcasesusingreal-timevideoastheapplicationenvironment,whichhastwobasicrequirementsforreal-timeprocessingandaccuracyofthemodel.Withthedevelopmentoftechnologyandtheadventofthe5Gera,thegesturerecognitiontechnologyinthefieldofdeeplearningisbecomingmoreandmoreperfect.Theremustbealotofprogressonthetechnicallevelcomparedwiththepresent,butitalsofacesdeeperdifficulties,suchasThestrikinginterventionfactorssuchashumanskincolor,backgroundcomplexity,lightingconditions,andhandoverlapinthecaseofmultiplepeoplearechallengesfacedbyeveryonewhodevelopsgesturerecognitiontechnology.Thispaperwillbedevelopedwithneuralalgorithmssuchasconvolutionalneuralnetworks,whicharemorepopularinthefieldofdeeplearninginrecentyears,andthekeypointsofthehandinformationobtainedwillbelogicallyprocessedtoobtainaccurateinformation.
Keywords:gesturerecognitiondeeplearningconvolutionalneuralnetworkkeyinformationpointsofhand目錄第一章緒論 第一章緒論1.1課堂背景及研究目的和意義 從2000年以來深度學習理論和技術(shù)逐漸完善,人工智能中的手勢識別這項技術(shù)從被提出開始就一直受到來自不同職業(yè)群體的廣泛關(guān)注。其中的商業(yè)價值更是讓人垂涎欲滴,以至于久久霸占著大眾的視野同時也一直備受科研人員的關(guān)注。手勢識別之所以一直熱度不減。這主要得益于兩個原因,第一個原因是理論和科技已經(jīng)能足夠支撐起手勢識別這個項目。第二個原因是手勢交流是除了語言交流外第二種便捷交流的方式,以至于科普由手勢識別衍生的產(chǎn)品的困難程度遠遠低于同為人工智能的其他技術(shù)產(chǎn)品?,F(xiàn)如今該技術(shù)隨著時代的發(fā)展已經(jīng)越來越成熟,已經(jīng)開始運用在廣泛的領(lǐng)域中有汽車行業(yè)、消費電子領(lǐng)域、運輸部門、游戲行業(yè)、智能手機、家庭自動化等等。其中在手機領(lǐng)域中的華為已將該手勢識別技術(shù)帶入Mate30系列手機當中,可見其商業(yè)潛力!但是手勢識別這項技術(shù)一直有一個或多或少會困擾開發(fā)人員的難點,因為無接觸手勢識別技術(shù)是主要依靠光學等進行手勢探測,當光照程度不良好時、背景復雜時或像素值于手部像素接近時、手部被物品遮擋時等等都會給模型造成相當大的干擾。盡管如此,這些難點都可以去避免和修復。優(yōu)化數(shù)據(jù)和網(wǎng)絡(luò)等處理,例如進行灰度化和色域轉(zhuǎn)換、膚色切割、閾值化、手部關(guān)鍵信息點、判斷邏輯化、神經(jīng)網(wǎng)絡(luò)層進行調(diào)參和驗證。對設(shè)備進行升級,例如給攝像頭補光、使用RPG高清攝像頭等等。都可以達到理想的效果。以至于人們依然十分樂意從這個研究方向進行切入。本次實驗我也會利用到上述講到的理論技術(shù)進行研究達到在各種環(huán)境下的最優(yōu)化效果。最后5G時代的來臨一定是屬于人工智能大樹下手勢識別的一股春風,其商業(yè)用途之廣、惠及人群之多不言而喻。其實這句話早已被驗證,而我相信凡是一項技術(shù)被越來越多的人關(guān)注時,無論他是處于何種目的所驅(qū)動,都說明了一點它是當下人們最需要的一項功能系統(tǒng)。1.2手勢識別研究現(xiàn)狀隨著科技和經(jīng)濟的發(fā)展,使用計算機的用戶還是廣度都有了很大的提升。屬于人機交互領(lǐng)域的手勢識別也在這20年間逐漸走向了大眾的視野。在這里我將從實現(xiàn)手勢識別的技術(shù)和前人所研究的成果進行一個概況。手勢識別在系統(tǒng)中主要包括三個基本階段檢測,跟蹤和識別,就目前來看實現(xiàn)手勢識別最主流的技術(shù)是利用深度學習的卷積神經(jīng)網(wǎng)絡(luò)對目的數(shù)據(jù)進行關(guān)鍵信息提取以及訓練。但在這項技術(shù)的早期是難以做到讓人滿意的效果,主要的原因是當時的技術(shù)處于起步階段和計算機綜合能力有限所限制的。隨著時代的發(fā)展,理論越發(fā)完善的同時和計算機的綜合能力有著顯著提升,在2014年就提出了GoogleNet和Vgg這種深層次和高參數(shù)量特性的網(wǎng)絡(luò),而這種網(wǎng)絡(luò)帶來的就是高準確性。而這一切在深度學習領(lǐng)域種取得的成功主要原因是這項技術(shù)引起了眾多廣泛的關(guān)注。在2002年Bretzner[1]等人提出的使用RGB攝像頭對手部進行多尺寸特征收集。2010年沙亮[2]等人研究了基于無標記全手勢視覺的人機交互技術(shù),并提供了相應的解決方案。2011年微軟公司[3]公布了Kinect,使用有紅外線攝像頭對手勢進行識別和跟蹤。2015年江南大學的姜克[4]等人基于Kinect的研究實現(xiàn)了3D手勢識別2015年,谷歌ATAP部門[5]公布了ProjectSoli,它是采用了微小型雷達來識別手勢。手勢識別這項技術(shù)的進步得益于的深度學習的發(fā)展,正所謂工欲善其事必先利其器。而輸入的數(shù)據(jù)也由最初的2D逐漸變?yōu)?D、準確度和實時性也在逐漸升高。放眼看去,手勢識別隨著時間的向前、科技的發(fā)展,一路推陳出新。1.3主要研究內(nèi)容及論文結(jié)構(gòu)本文共分為五章,具體結(jié)構(gòu)如下:緒論。主要介紹在現(xiàn)階段手勢識別的研究背景、目的和意義,研究現(xiàn)狀、社會價值,并介紹本文的組織結(jié)構(gòu)膚色分割,主要解釋YCrCb的作用和針對正常黃種人的膚色的范圍進行分割。卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)理論[6]。介紹了卷積神經(jīng)網(wǎng)絡(luò)主要組成部分的理論知識,簡要闡明卷積神經(jīng)網(wǎng)絡(luò)的相關(guān)算法,并在手勢識別中起到的作用。GoogleNet在手勢識別上的應用,這一節(jié)將主要關(guān)注模型和實現(xiàn)手勢識別的細節(jié),并為了清晰整個過程會繪畫出流程圖??偨Y(jié),在本章中對本次論文做出總結(jié)和引用的其他論文,并提出存在的問題和改進的方向,且希望日后能對其中做出完善。此外對我有過幫助的人將表示感謝。第二章膚色切割2.1YCrCb顏色空間其實預處理對手部進行膚色切割時可以用的色域不止一種,相信有所了解的人也知道這一點,本次論文將使用YCrCb[7]空間。一般的圖像都是基于RGB空間的,在RGB空間里皮膚會受亮度影響相當大,當亮度足夠好時膚色可以在正常的范圍內(nèi),但是亮度低時膚色就無法呈現(xiàn)出來。因此我們需要將膚色和亮度分離開來,也就是說圖像在此空間時膚色點是離散的點。中間嵌有很多的非膚色,這為膚色區(qū)域標定帶來了難題。如果把RGB轉(zhuǎn)為YCrCb空間的話,該問題就可以較為輕松的解決掉。YCrCb又稱為YUV,之所以使用該色域空間是因為它能將亮度和色度分離開來,這也是RGB空間難以處理的一點。圖2-1梯度下降示例圖上圖2-1中Y表示為亮度(Luminance或Luma),通俗的講就是灰階值。而cr和cb表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用于指定像素的色彩。其中,cr和cb它們兩個受亮度的影響很小。因此這就是我選用YCrCb而不是使用其他顏色空間進行膚色檢測的依據(jù),此外正常的黃種人的Cr分量大約在140~175之間,而Cb分量大約在100~120之間。這也就為后續(xù)的閾值化提供了很好的切入點。當然我這種做法也有很明顯的缺點,因為我們是將圖片的RGB顏色空間轉(zhuǎn)換為YCrCb空間,如果圖片在RGB空間時由于受到了各種因素的影響導致膚色過于差勁,那么將其轉(zhuǎn)換為YCrCb空間也是無用之舉。所以這種算法還是無法完全避光照的強度等因素產(chǎn)生的影響,因此不算特別完美的算法。當然如果該系統(tǒng)設(shè)備將來會應用到特殊的環(huán)境下的話則需要加上濾波操作,例如中值濾波等等,效果會更好。2.2圖像閾值化在符合某種人為定義的規(guī)則之下的像素點便稱之為像素點分布規(guī)律。圖像閾值化就是利用了圖像素點分布規(guī)律進行切割的。所謂的閾值化往簡單方向說就是劃分成黑和白,通過設(shè)定一個標準如果該像素點符合這個標準則設(shè)置為白或不變,如果像素點不符合這個標準就設(shè)置為黑,這就是本次閾值化的大致原理。設(shè)f(i,j)表示圖像中的像素值區(qū)間[i,j],而i和j代表著正常亞洲人的像素值。當像素值落在[i,j]之間就設(shè)置為255(白色),如果不在此區(qū)間設(shè)置為0(黑色)對圖像進行像素點分割大致可以分為三步。第一步,在實現(xiàn)閾值化之前先讀取圖片,并保存在一個變量名為frame中,frame變量的類型為numpy.ndarray。這一步的目的是獲取整張圖像的像素值。為后續(xù)判斷和修改提供原材料。第二步,利用opencv庫中cvtColor函數(shù)將frame變量將RGB空間轉(zhuǎn)換成YCrCb空間。并單獨取出Cr和Cb兩個變量出來。第三步,我沒有使用opencv庫中的內(nèi)置閾值化函數(shù),而是自己利用for7if對該圖像進行處邏輯理,當Cr變量處于133和175區(qū)間之間并且Cb變量處于77和127區(qū)間之間時像素點,其值不變(在此區(qū)間的像素值是正常亞洲人膚色的像素值,保留不變),而不在此區(qū)間的像素值統(tǒng)一設(shè)置為0(其效果為黑色)。效果如下(圖2-2):圖2-2閾值化效果圖經(jīng)過閾值化處理后的圖像僅保留了手部原始圖像且其余背景均大致被剔除。這一步的主要目的是將不必要的圖像噪音點盡可能的除掉,為后續(xù)處理提供最干凈的數(shù)據(jù)。當然將圖像數(shù)據(jù)交付給神經(jīng)層時還需要將圖像灰度化,把RGB圖像的三層變?yōu)榛叶然瘍蓪樱詼p少神經(jīng)層不必要的計算壓力。但是這樣做也不能完全不免無噪音的情況,因為黑色的像素點它其實也是一個噪音,只不過被我們統(tǒng)一化了而已。第三章神經(jīng)網(wǎng)絡(luò)理論3.1向前傳播一個剛剛建立好的神經(jīng)網(wǎng)絡(luò),在還沒輸入數(shù)據(jù)去運行訓練時,各個神經(jīng)元之間的參數(shù)是隨機的,前向傳播過程,向輸入層輸入特征向量時,經(jīng)過權(quán)重參數(shù)w和偏置參數(shù)b的處理后再經(jīng)過一個激活函數(shù)處理得到中間隱含層1,同理再經(jīng)過第二個參數(shù)處理和激活函數(shù)得到中間隱含層2,依次類推。最后通過輸出處理得到輸出的過程。圖3-1前向傳播示意圖卷積神經(jīng)網(wǎng)絡(luò)的前向傳播需要三個信息,其一是卷積核提取的特征向量,其二是神經(jīng)元的連接關(guān)系(包含了卷積核、池化層和神經(jīng)元與神經(jīng)元之間的關(guān)系等等),其三是神經(jīng)網(wǎng)絡(luò)各神經(jīng)元的參數(shù),其中包括權(quán)重w和偏置b。3.2向梯度下降和方向傳播算法在說后向傳播之前有必要的先講一下梯度下降,因為梯度下降(gradientdescent)和反向傳播就像連體嬰兒一樣缺一不可的。在機器學習中應用十分的廣泛,它的主要目的是通過迭代找到目標函數(shù)的最小值,或者收斂到極小值。3.2.1梯度下降算法梯度下降算法的基本思想可以類比為一個人在山頂?shù)缴降椎倪^程。首先,我們有一個可微分的函數(shù)。這個函數(shù)就代表著一座山。我們的目標就是找到這個函數(shù)的最小值,也就是山底。可以想象一下,一般而言最快下山的方式就是找到當前位置最陡峭的方向并沿著這個方向下去。對于函數(shù)而言有三種策略去實現(xiàn)。方法1:隨機尋找(不太實用),類似暴力算法一樣用許多參數(shù)一一帶入,然后從里面選一個損失函數(shù)做小的參數(shù)組,這種做法費時費力且效果不理想。方法2:隨機局部搜索,在現(xiàn)有的參數(shù)基礎(chǔ)上,隨機搜索一下周邊的參數(shù)嗎,查看有沒有比現(xiàn)在更好的參數(shù),然后用新的參數(shù)替換現(xiàn)有的參數(shù),不斷迭代。方法3:梯度下降,通俗的講就是計算可微函數(shù)極小值(無條件約束),找到最陡峭的方向從高點逐一小步下降。注意如果每一次的步長如果過大則會錯過最陡峭的方向甚至最佳點,但步長過小則會頻繁計算去尋找下降的方向會造成耗時過長。所以需要合理的調(diào)整參數(shù)才能既保證不偏離方向的去尋找最佳點且耗時相對較短。圖3-2梯度下降示例圖假設(shè),y軸表示為損失函數(shù)的值而x軸表示取值。梯度下降算法的目的是將參數(shù)向右側(cè)移動使圓點向下降落使得損失最小。而參數(shù)的梯度可以通過求偏導的方式計算。參數(shù)X,其梯度公式為3.3,再確定一個學習率(步長)n。那么就可以實現(xiàn)參數(shù)梯度下降(公式3.4)從而求出損失的最小值。 (3.3) (3.4)例如:損失函數(shù)為3.5,那么參數(shù)x的更新公式為如圖3-6。假設(shè)步長為0.3且初始值為5,那么優(yōu)化過程為表3-7所示。 (3.5) (3.6)表3-7梯度下降優(yōu)化過程次數(shù)當前值梯度*學習率更新后參數(shù)值152*5*0.3=35-3=2222*2*0.3=1.22-1.2=0.830.82*0.8*0.3=0.480.8-0.48=0.3240.322*0.32*0.3=0.1920.32-0.192=0.12850.1282*0.128*0.3=0.07680.128-0.0768=0.05123.2.2反向傳播算法根據(jù)前面我們介紹了梯度下降算法,但是在實際的開發(fā)中往往是面對海量的數(shù)據(jù),如果沒有一種合理的機制去快速利用這些數(shù)據(jù)實現(xiàn)梯度下降算法的話,那么這個開發(fā)的成本是相當昂貴的。在20世紀中后期便提出了反向傳播算法來為此解決梯度下降算法的問題。反向傳播,通俗的講它是一個神經(jīng)網(wǎng)絡(luò)調(diào)整誤差并修正的學習過程。在機器學習中會反復的執(zhí)行正向傳播和反向傳播這個過程。執(zhí)行的順序為先正向后反向。在神經(jīng)網(wǎng)絡(luò)運行時正向傳播在輸入層接收到數(shù)據(jù)并逐層傳遞(其中就包含了隱含層),最終由輸出層輸出結(jié)果。如果輸出層輸出的結(jié)果與預期不一致則會進入反向傳播,對各層的權(quán)值參數(shù)等進行修改使得與預期期望值之間的誤差最小化。然后接著正向傳播,以此類推。圖3-8一次正向傳播如圖3-8所示,向x神經(jīng)元輸入-2、y神經(jīng)元輸入5和z神經(jīng)元輸入-4,最終整個網(wǎng)絡(luò)的輸出為-12。那么假如目標值為-11呢?這時就需要方向傳播進行修成。計算誤差為實際輸出值減去目標值,接著計算出圖3-8中的x、y、z的偏導數(shù),如3.9、3.10、3.11結(jié)果所示 (3.9) (3.10) (3.11)假設(shè)設(shè)置為1,就可以求出。然后就更新x、y和z的值(如公式3.12、3.13、3.14所示)。 (3.12) (3.13) (3.14)3.3GoogleInceptionNet網(wǎng)絡(luò)結(jié)構(gòu)在說明本次使用的模型之前,有必要先介紹一下GoogleInceptionNet網(wǎng)絡(luò)(也可稱為GoogleNet)。GoogleInceptionNet網(wǎng)絡(luò)模型的出現(xiàn)是在2014年的ILSVRC比賽中,有趣的是同時期也出現(xiàn)了VGG網(wǎng)絡(luò)模型,但本文主角不是VGG也就不過多討論。GoogleInceptionNet網(wǎng)絡(luò)的創(chuàng)新是屬于結(jié)構(gòu)體系上的創(chuàng)新??v觀前三個版本的模型結(jié)構(gòu),最主要的改動有兩點,第一點在Inceptionv1中摒棄了全連接網(wǎng)絡(luò)層改而使用全局平均池化層來代替。第二點在Inceptionv3中分別對卷積層和池化層進行了很大的改動,其中對大卷積核分解成多個小卷積核、池化層和卷積層改為并聯(lián)方式的結(jié)構(gòu)。圖3-15Inceptionv3結(jié)構(gòu)圖這一系列的改動其最直接的效果是準確率和錯誤率分別有了很明顯的提升和降低。此外在GoogleInceptionNet網(wǎng)絡(luò)模型中給我們最大的特點是它在控制計算量和參數(shù)量的同時有效的提高網(wǎng)絡(luò)的性能。因此在內(nèi)存和計算機計算能力都有限的情況下,選擇GoogleInceptionNet是明智地。況且由于計算量和參數(shù)量的降低在實時性的性能上也很使我鐘意。而在本次使用的模型結(jié)構(gòu)是基于GoogleNet來構(gòu)建的如3-5圖[8]所示。圖3-16模型結(jié)構(gòu)在Conv-M模塊是包含著兩個結(jié)構(gòu)Inception-v3[9]、反褶積和ReLU。Inception-v3結(jié)構(gòu)。該結(jié)構(gòu)的特點是增加了模型的寬度和深度,雖然在3-5圖中由于省略了很多內(nèi)部細節(jié)不能很好的直觀感受。大卷積核被分解成多個小卷積核。比如7*7的卷積核拆分成7*1卷積核核1*7卷積核,或者將5*5卷積核拆分成兩個3*3的卷積核。這樣做的結(jié)果,一方面因為卷積數(shù)目的增加導致獲取的特征數(shù)據(jù)信息有所增多,另一方面模型的參數(shù)有所減少(5*5的參數(shù)為25個而3*3核和3*3核的參數(shù)和為18個,降低了大約30%。)。但是該層在面對陰影等雜音時卷積核很有可能也會照樣采集導致特征數(shù)據(jù)信息中會有雜音[10],所有為了避免過度采集使用了反褶積[11]進行一些反補機制,特別是對于小規(guī)模和中等規(guī)模的卷積核的問題上采用的較多。此外傳統(tǒng)的卷積層和池化層串聯(lián)的方式也進行了革新改為并聯(lián)方式,極大的緩解了表達瓶頸使特征數(shù)據(jù)的卷積處理和池化處理都單獨分開,很大程度上降低了池化層的運算量且更重要的是將數(shù)據(jù)特征的表達能力發(fā)揮的淋漓盡致。需要注意的是卷積層和池化層生成的特征數(shù)據(jù)的尺寸需要一致,以至于后續(xù)處理時能夠合并將數(shù)據(jù)交給下一層網(wǎng)絡(luò)。為了增加模型非線性能力,還包含著relu激活函數(shù),對非對稱性結(jié)構(gòu)的數(shù)據(jù)具有處理能力。linear結(jié)構(gòu)是輔助分類器。網(wǎng)絡(luò)的深度相對較大,為了以有效的方式將梯度傳播給所有神經(jīng)層的能力是值得我們關(guān)注的。一個有趣的發(fā)現(xiàn)當網(wǎng)絡(luò)層處于中間這段的時候產(chǎn)生的特征數(shù)據(jù)信息是非常有識別力的。增加輔助分類器linear是希望模型在較低層就有識別的作用。這些輔助分類器的防止形式一般在Inception(4a)和(4d)模塊輸出之上。在整個訓練期間它們產(chǎn)生的損失都會疊在在一起被作為總損失(輔助分類器的損失加權(quán)值一般為0.3)。在該模型的結(jié)尾處也遵循了GoogLeNet的基本理念,拋棄了全連接層。這也是GoogLeNet極具惹人注目的特色。在傳統(tǒng)的卷積網(wǎng)絡(luò)中,往往會加上全連接層。但在數(shù)據(jù)集龐大的實驗中這樣的做法反而弊大于利。參數(shù)量呈現(xiàn)爆炸時增長,例如輸入100*100尺寸的數(shù)據(jù),假設(shè)輸入層中有100*100個節(jié)點,那么第一個隱含層有100節(jié)點那么在該層中含有的參數(shù)為(100*100+1)*100=1百萬個參數(shù)??梢韵胂蠛罄m(xù)的全連接層參數(shù)會是一個怎樣的數(shù)量級。這對于計算機來說是一個很大的負擔。就拿圖片數(shù)據(jù)來說往往具有空間性,而當這些數(shù)據(jù)進入到全連接層后會直接將這些數(shù)據(jù)變?yōu)?維的數(shù)據(jù)形式。這很大程度上摧毀了數(shù)據(jù)的表達能力。由于全連接層給計算機帶的負擔過于巨大,且對數(shù)據(jù)的損壞程度顯著。一般很難在CNN網(wǎng)絡(luò)中有多層全連接網(wǎng)絡(luò),也就很難弄成一個深層次全連接網(wǎng)絡(luò),限制了模型的表達能力。在GoogLeNet網(wǎng)絡(luò)中拋棄了全連接網(wǎng)絡(luò)。在代替的方法中用AveragePool池化層代替了,是為了保證特征數(shù)據(jù)進入softmax分類器之前,特征數(shù)據(jù)依然保留著最初的空間性(不被粗魯?shù)膲撼梢痪S數(shù)據(jù)形式),最后進行分類。所以GoogleNet網(wǎng)絡(luò)模型在面對龐大的數(shù)據(jù)集時,控制計算量和參數(shù)量的同時也獲得了非常好的性能,是一個非常優(yōu)秀且實用的模型。第四章GoogLeNet手勢識別應用無論在實時視頻中還是已經(jīng)錄制好的視頻中,往往都是先對每一幀圖片都進行了手掌檢測并實現(xiàn)跟蹤,但是在現(xiàn)實情況中我們會常常遇到兩大類難點。第一類,每一幀圖片中存在未知數(shù)量的手部,我們到底需要確定哪一個手部為數(shù)據(jù)的基準呢。第二類,手部經(jīng)常會有自我遮擋或相互遮擋(例如手指的彎曲)或物體遮擋(手因抓住物體而被遮擋)等等,使得手部的信息有所殘缺。通用的解決方法主要由手部跟蹤(Handtracking)和手掌檢測(Palmdetection)兩個組成,手部跟蹤器對視頻中的每一幀圖片進行邊界框檢測對人體手部實時跟蹤,再對邊界框中的手掌進行手掌檢測并描繪關(guān)鍵點。因此在后續(xù)的處理識別功能時僅僅對信息關(guān)鍵點進行操作即可。4.1算法實現(xiàn)4.1.1實現(xiàn)步驟1、導入訓練有素的GoogleNet的模型,使用手部圖像數(shù)據(jù)進行訓練,訓練出合乎理想的手勢模型。由于此數(shù)據(jù)集是用48個視頻中每30幀截取下來,用720*1280的尺寸和jpg格式將這些海量數(shù)據(jù)保存下來,將近20000張,因此礙于數(shù)據(jù)龐大,在這里先展示一部分數(shù)據(jù)。圖4-1數(shù)據(jù)集展示再將這些數(shù)據(jù)投給一句設(shè)置好的GoogleNet網(wǎng)絡(luò)classifier.caffemodel和type_classifier.caffemodel模型,訓練出hand_landmark.tflite手部追蹤器和palm_detection_without_custom_op.tflite手掌檢測器。由于這一過程已被官方人員所實現(xiàn),接下來我將著重講解怎么使用。此外為了對比一下性能,我將在這里另外使用Vgg19和LeNet網(wǎng)絡(luò)模型進行對同樣的數(shù)據(jù)進行訓練和測試。實驗過程將會使用訓練準確率、測試準確率和訓練時間這三個標準來進行對比。表4-2性能比較模型訓練集準確率測試集準確率訓練時間GoogLeNet100%94.4%38minVgg模型100%91.3%47minLeNet模型92.3%84.3%26min如表4-2所示,可以看出在訓練集準確率上其實三個模型都相差不多,尤其是GoogleNet和Vgg這兩個網(wǎng)絡(luò)最為接近,在訓練集準確率上都達到了100%,但是在測試集準確率上GoogleNet比Vgg高3.1%。單從準確率這一方面的數(shù)據(jù)來看,可以體現(xiàn)出GoogleNet的泛化性會來的更好。而LeNet是比較舊式的卷積網(wǎng)絡(luò),在綜合能力上比不上前兩個網(wǎng)絡(luò)模型屬于意料之中。最后從訓練時間來看由于Vgg的包含全連接層,而全連接層帶來的問題就是參數(shù)會急劇增多導致運算量增加,所以在時間上GoogleNet會占據(jù)優(yōu)勢。而LeNet模型相對于前兩個層次為淺模型,因此花費的時間肯定會比前兩個會少。單單從這一點來看LeNet為最優(yōu)但是綜合能力上它是三個里面最不理想的。2、讀入視頻文件,彈出相應界面。在界面中通過攝像頭獲取輸入信息并將逐幀圖片輸入給程序[12],如果檢測到手掌數(shù)據(jù)就進行后續(xù)的處理,如果沒有則繼續(xù)讀幀。如圖4-3所示,在僅僅露出手臂等其他情況下,是沒有檢測出手掌的。圖4-3無檢測出手部3、手掌傳入給程序中,緊接著就是閾值化,對膚色進行分割并灰度化交給網(wǎng)絡(luò)層并得到關(guān)鍵點信息。4、得到手部信息關(guān)鍵點后,根據(jù)5個手勢各個分布的關(guān)鍵點進行邏輯處理。先從食指判斷它的關(guān)鍵點,依次為中指、無名指、尾指、大拇指。如果5號至8號關(guān)鍵點的坐標呈現(xiàn)一個線性的。那么我們有理由預判它為1。再對中指、無名指、尾指、拇指輪流進行判斷,假設(shè)此時中指的關(guān)鍵點坐標呈現(xiàn)一個非線性,那么無名指、尾指、拇指進行邏輯處理時只要其中有一個是呈現(xiàn)線性的,就不給予輸出(因為已經(jīng)超出了預設(shè)的手勢)。如果除了食指而其他的手指均不呈現(xiàn)線性,那么輸出1數(shù)字。圖4-4手掌關(guān)鍵點信息5、將輸出信號傳給視頻界面顯給當前做出手勢的結(jié)果。為了方便查看在這里畫出了實現(xiàn)手勢識別的流程圖。圖4-5實現(xiàn)的流程圖4.1.2環(huán)境與過程(a)實驗環(huán)境硬件設(shè)備:CPU:IntelCorei77500U2.70GHz內(nèi)存:8G顯卡:NVIDIAGEFORCE940MX開發(fā)環(huán)境:Windows10開發(fā)語言及其編程軟件:Python+Jupyternotebook(b)實驗過程本次論文使用手部跟蹤器和手掌檢測器來提取特征圖。本次論文中實驗視頻均為本人所自行拍攝的手勢視頻。但是在實際運用過程中周圍的環(huán)境一定比開發(fā)時更加廣泛和復雜。所以為了統(tǒng)一數(shù)據(jù)尺寸將其設(shè)置為256*256*3格式。此外也為了避免在識別的過程中出現(xiàn)多個邊界框的重疊的現(xiàn)象,我使用SSD瞄點和非最大抑制算法[13],在找到局部極大值時抑制非極大值元素。并將閾值設(shè)置為0.7才能進入候選框,在候選框選取局部極大值,查看圖4-3。圖4-6非最大值抑制算法在對每一幀(間隔5幀)圖片進行檢測時,檢測到手部時將會對其進行膚色分割并灰度化,預處理結(jié)束后才會交給卷積網(wǎng)絡(luò)。手掌檢測器檢測到手掌并設(shè)置其中的關(guān)鍵點[14]后,因為事先知道手部跟蹤器跟蹤手掌在圖片中的坐標并記錄下來,將這些關(guān)鍵點返回到原本圖片的坐標上并將這些點相連(關(guān)鍵點信息為紅色,線段為黃色)。圖4-7效果圖剩下的就是對這些關(guān)鍵點進行邏輯處理得出該手勢的含義[15]。其中判斷手勢的規(guī)則,當表示1時只能豎起一個食指,表示2時需要同時豎起食指和中指,表示3時需要豎起食指、中指和無名指,表示4時需要豎起食指、中指、無名指和尾指,表示5時需要攤開手掌正對攝像頭。就拿2手勢而言,8號關(guān)鍵點減去6號關(guān)鍵點,6號關(guān)鍵點減去0號關(guān)鍵點。然后除以各自的范數(shù)將向量單元化避免數(shù)據(jù)過大或者過小有溢出現(xiàn)象,再進行點積運算,如果大于預設(shè)好的閾值那么就顯示手勢2(1手勢成功的前提下)。需要注意的是用戶使用了預設(shè)好的手勢時就輸出結(jié)果,如果用戶使用的手勢是我們沒有預設(shè)的手勢,雖然運算關(guān)鍵點會正常運行但因為沒有與之匹配的類型則將不輸出結(jié)果。在實時性方面,由于將圖片數(shù)據(jù)經(jīng)過一系列的處理才能輸出結(jié)果,這一過程是需要一些時間的,當然如果cpu和gpu的配置相當高的話,那么這一過程的時間可以忽略不記。但如果硬件配置一般的話是不能立刻將結(jié)果返回到界面中以至于有延時效果,因此在計算本幀圖片的結(jié)果后,我將其輸出到下一幀的圖片上。圖4-8手勢識別效果圖第五章結(jié)論隨著技術(shù)的發(fā)展,實現(xiàn)手勢識別這項系統(tǒng)已經(jīng)不僅僅局限于本篇論文所提及的技術(shù)。我之所以使用卷積網(wǎng)絡(luò)來作為本片的基礎(chǔ)。兩個原因,第一個原因是因為在近幾年卷積網(wǎng)絡(luò)的發(fā)展越來越趨向于高準確率和低參數(shù)量,這對于實時性和設(shè)備限制都有著很大的幫助。第二個原因是個人對這一領(lǐng)域有著相當不錯的興趣,這就是我做手勢識別的最初動機。這里還有一些小插曲,我剛開始做的時候是用傳統(tǒng)的卷積網(wǎng)絡(luò)但效果是相當讓人沮喪,無論在實時響應性還是準確率上。以至于我不得不尋找新的解決辦法,這就有了現(xiàn)在的GoogleNet網(wǎng)絡(luò)。因為GoogleNet的改善了卷積層和池化層,其中的全連接層跟是直接拋棄掉,一邊讓網(wǎng)絡(luò)深層次的同時還防止了參數(shù)量不爆炸。得益于站在巨人的肩膀上,在光照等因素良好的情況下準確率會高達92%。但盡管如此我的手勢識別系統(tǒng)還是存在這問題。例如在沒有手掌的情況下總是會時不時的彈出關(guān)鍵點信息,這可能與網(wǎng)絡(luò)的錯判或非最大抑制算法存在的缺陷有關(guān),而且因為對圖片的計算和預處理導致了實時性的性能有所下降。并且在有手掌的情況下關(guān)鍵點會存在不能準確顯示的情況導致輸入正確手勢時會顯示不出正確的結(jié)果。而且該系統(tǒng)也非常容易環(huán)境因素的干擾,如果手部是處于黑暗環(huán)境下,那么我所作的一切將不會奏效。這些
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何寫退休申請書
- 2024-2026年中國手機音樂客戶端行業(yè)全景評估及投資規(guī)劃建議報告
- 中國皮鞋制造行業(yè)市場全景評估及發(fā)展戰(zhàn)略研究報告
- 供暖系統(tǒng)行業(yè)市場前景預測及投資價值評估分析報告
- 垃圾車申請書
- 鋁制品項目可行性研究報告模板范文(立項備案項目申請)
- 2025年大平墊圈項目投資可行性研究分析報告
- 中國維A酸行業(yè)市場運營態(tài)勢分析及投資前景預測報告
- 2024年固廢治理行業(yè)分析報告
- 印章管理辦法(公安部)
- 人教版高一數(shù)學上冊期末考試試卷及答案
- 振動振動測試基礎(chǔ)知識培訓課件
- 教學設(shè)計 分數(shù)的再認識 省賽一等獎
- DBJ51-T 151-2020 四川省海綿城市建設(shè)工程評價標準
- GB/T 3795-2006錳鐵
- GB/T 31329-2014循環(huán)冷卻水節(jié)水技術(shù)規(guī)范
- 京東1+X理論考試試題及答案
- 人教版四年級下冊數(shù)學應用題練習全
- 清新淡雅簡潔通用模板課件
- 北京市鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心地址醫(yī)療機構(gòu)名單(344家)
評論
0/150
提交評論