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