手語(yǔ)識別和翻譯
摘要:為了使聾啞人與更多不懂手語(yǔ)的人自然地交流,本作品將手語(yǔ)翻譯成文字和語(yǔ)音,利用Microsoft Kinect記錄手語(yǔ)手勢的三維坐標,通過(guò)機器學(xué)習和優(yōu)化算法,在Intel Atom平臺上實(shí)現了手語(yǔ)翻譯。
本文引用地址:http://dyxdggzs.com/article/137079.htm簡(jiǎn)介
手語(yǔ)是聾啞人士的主要溝通工具,它是利用手部和身體的動(dòng)作來(lái)傳達意義。雖然手語(yǔ)幫助它的使用者之間互相溝通,但聾啞人士與一般人的溝通卻十分困難,這個(gè)溝通障礙是源于大部分人不懂得手語(yǔ)。
另一方面,聾啞小朋友由于很難表達自己,以及中國的聾啞教師數量有限,導致他們的學(xué)習出現困難,得不到和普通小朋友同等的學(xué)習機會(huì )。
為了解決這個(gè)問(wèn)題,我們設計實(shí)現了一個(gè)從手語(yǔ)動(dòng)作翻譯成文字和聲音的翻譯器,令學(xué)習手語(yǔ)更有趣、更方便、更容易,以達到這個(gè)項目縮少聾啞人士與其他人的溝通障礙的目的?! ?/p>

工作原理和算法
特征提取
深度圖像的分辨率是640x480,意味著(zhù)每秒鐘的數據有17.6MB,存儲如此大量的數據是不可能的。同時(shí)許多沒(méi)有用處的數據(例如背景)都包含在原始數據中。因此我們必須從原始數據中提取出有用的信息。骨架是一種可以用來(lái)表示手語(yǔ)的有用信息。
我們利用Kinect和OpenNI提取用戶(hù)的骨架節點(diǎn)得到XYZ三點(diǎn)的坐標。我們一共提取了6個(gè)骨架節點(diǎn),左手、左手肘、左肩、右手、右手肘、右肩。對于每一幀,我們從這些節點(diǎn)中計算出14個(gè)特征向量來(lái)表示這一幀的手語(yǔ)動(dòng)作。經(jīng)過(guò)標準化計算,我們用121幀來(lái)表示一個(gè)手語(yǔ)詞語(yǔ),因此每一個(gè)詞語(yǔ)有1694個(gè)特征。
原始數據標準化
我們通過(guò)均勻分配和插值使原始數據標準化。通過(guò)二次插值法,利用最相近的三個(gè)原始數據計算出標準化的數據,使得每一個(gè)手語(yǔ)動(dòng)作都統一用121幀來(lái)表示。
支持向量機
SVM(支持向量機)是統計學(xué)和計算機科學(xué)中的概念,簡(jiǎn)而言之,給定一組已經(jīng)分好類(lèi)別的數據,而且分類(lèi)依據是未知的,支持向量機訓練算法可以通過(guò)計算構建一個(gè)模型 ,一組新的數據到來(lái)時(shí)可以預測出新的數據屬于哪一個(gè)類(lèi)別。
SVM的模型將所有數據映像到一個(gè)高維空間里,并計算出不同類(lèi)別數據之間的最大化幾何邊緣區,然后把新的數據映射到同一個(gè)空間,根據之前計算出的最大化幾何邊緣區來(lái)預測新的數據屬于哪一個(gè)類(lèi)別。
平臺限制與解決方法
平臺限制
使用Kinect的建議系統需求是CPU有雙核2.66 GHz或以上,內存有2GB或以上,但Intel提供的平臺只有分別1GHz CPU和1G 內存,明顯與系統需求有差異。
即使我們使用Linux操作系統,處理器使用率依舊滿(mǎn)載,并且幀率只有大約2到4左右,遠少于正常的30幀。在這種條件下,再加上處理器資源已被提取資源的線(xiàn)程占據,所以不可能在處理器里進(jìn)行資料分析的工作。
瓶頸
為了找出瓶頸,我們首先關(guān)閉了圖像用戶(hù)接口。雖然處理器使用率降至85%,但幀率跟之前的一樣。我們觀(guān)察得到其中一個(gè)OpenNI控制的線(xiàn)程依然是占領(lǐng)了整個(gè)線(xiàn)程。只是由于所提供的平臺是雙線(xiàn)程的關(guān)系,使用率分別被定在50%及35%。
評論