手語識(shí)別和翻譯
摘要:為了使聾啞人與更多不懂手語的人自然地交流,本作品將手語翻譯成文字和語音,利用Microsoft Kinect記錄手語手勢(shì)的三維坐標(biāo),通過機(jī)器學(xué)習(xí)和優(yōu)化算法,在Intel Atom平臺(tái)上實(shí)現(xiàn)了手語翻譯。
本文引用地址:http://www.ex-cimer.com/article/137079.htm簡(jiǎn)介
手語是聾啞人士的主要溝通工具,它是利用手部和身體的動(dòng)作來傳達(dá)意義。雖然手語幫助它的使用者之間互相溝通,但聾啞人士與一般人的溝通卻十分困難,這個(gè)溝通障礙是源于大部分人不懂得手語。
另一方面,聾啞小朋友由于很難表達(dá)自己,以及中國(guó)的聾啞教師數(shù)量有限,導(dǎo)致他們的學(xué)習(xí)出現(xiàn)困難,得不到和普通小朋友同等的學(xué)習(xí)機(jī)會(huì)。
為了解決這個(gè)問題,我們?cè)O(shè)計(jì)實(shí)現(xiàn)了一個(gè)從手語動(dòng)作翻譯成文字和聲音的翻譯器,令學(xué)習(xí)手語更有趣、更方便、更容易,以達(dá)到這個(gè)項(xiàng)目縮少聾啞人士與其他人的溝通障礙的目的。
工作原理和算法
特征提取
深度圖像的分辨率是640x480,意味著每秒鐘的數(shù)據(jù)有17.6MB,存儲(chǔ)如此大量的數(shù)據(jù)是不可能的。同時(shí)許多沒有用處的數(shù)據(jù)(例如背景)都包含在原始數(shù)據(jù)中。因此我們必須從原始數(shù)據(jù)中提取出有用的信息。骨架是一種可以用來表示手語的有用信息。
我們利用Kinect和OpenNI提取用戶的骨架節(jié)點(diǎn)得到XYZ三點(diǎn)的坐標(biāo)。我們一共提取了6個(gè)骨架節(jié)點(diǎn),左手、左手肘、左肩、右手、右手肘、右肩。對(duì)于每一幀,我們從這些節(jié)點(diǎn)中計(jì)算出14個(gè)特征向量來表示這一幀的手語動(dòng)作。經(jīng)過標(biāo)準(zhǔn)化計(jì)算,我們用121幀來表示一個(gè)手語詞語,因此每一個(gè)詞語有1694個(gè)特征。
原始數(shù)據(jù)標(biāo)準(zhǔn)化
我們通過均勻分配和插值使原始數(shù)據(jù)標(biāo)準(zhǔn)化。通過二次插值法,利用最相近的三個(gè)原始數(shù)據(jù)計(jì)算出標(biāo)準(zhǔn)化的數(shù)據(jù),使得每一個(gè)手語動(dòng)作都統(tǒng)一用121幀來表示。
支持向量機(jī)
SVM(支持向量機(jī))是統(tǒng)計(jì)學(xué)和計(jì)算機(jī)科學(xué)中的概念,簡(jiǎn)而言之,給定一組已經(jīng)分好類別的數(shù)據(jù),而且分類依據(jù)是未知的,支持向量機(jī)訓(xùn)練算法可以通過計(jì)算構(gòu)建一個(gè)模型 ,一組新的數(shù)據(jù)到來時(shí)可以預(yù)測(cè)出新的數(shù)據(jù)屬于哪一個(gè)類別。
SVM的模型將所有數(shù)據(jù)映像到一個(gè)高維空間里,并計(jì)算出不同類別數(shù)據(jù)之間的最大化幾何邊緣區(qū),然后把新的數(shù)據(jù)映射到同一個(gè)空間,根據(jù)之前計(jì)算出的最大化幾何邊緣區(qū)來預(yù)測(cè)新的數(shù)據(jù)屬于哪一個(gè)類別。
平臺(tái)限制與解決方法
平臺(tái)限制
使用Kinect的建議系統(tǒng)需求是CPU有雙核2.66 GHz或以上,內(nèi)存有2GB或以上,但Intel提供的平臺(tái)只有分別1GHz CPU和1G 內(nèi)存,明顯與系統(tǒng)需求有差異。
即使我們使用Linux操作系統(tǒng),處理器使用率依舊滿載,并且?guī)手挥写蠹s2到4左右,遠(yuǎn)少于正常的30幀。在這種條件下,再加上處理器資源已被提取資源的線程占據(jù),所以不可能在處理器里進(jìn)行資料分析的工作。
瓶頸
為了找出瓶頸,我們首先關(guān)閉了圖像用戶接口。雖然處理器使用率降至85%,但幀率跟之前的一樣。我們觀察得到其中一個(gè)OpenNI控制的線程依然是占領(lǐng)了整個(gè)線程。只是由于所提供的平臺(tái)是雙線程的關(guān)系,使用率分別被定在50%及35%。
評(píng)論