手語(yǔ)識(shí)別和翻譯
其后我們關(guān)掉骨架提取的功能,使用率大幅降低到只有25%。經(jīng)過(guò)進(jìn)一步性能分析的工作,我們證實(shí)了瓶頸的來(lái)源就是骨骼提取。不幸地,骨骼提取的算法并不是開(kāi)源的,而是被PrimeSence所保護(hù)。所以我們并不能通過(guò)修改原代碼或是把算法放到FPGA里以達(dá)致降低處理器使用率的效果?! ?/p>本文引用地址:http://butianyuan.cn/article/137079.htm
解決方法
為了解決這個(gè)問(wèn)題,我們嘗試選擇性地使用原始數(shù)據(jù)。原來(lái)數(shù)據(jù)傳遞方式是用戶(hù)產(chǎn)生器(User Generator)直接從深度圖像產(chǎn)生器(Depth Generator)得到原始數(shù)據(jù)。新的方法就是設(shè)立一個(gè)仿真深度圖像產(chǎn)生器(Mock Depth Generator)。它會(huì)仿真成原來(lái)的產(chǎn)生器,而用戶(hù)產(chǎn)生器則從它得到數(shù)據(jù)。
當(dāng)Kinect得到新的數(shù)據(jù),它會(huì)將數(shù)據(jù)傳給深度產(chǎn)生器,然后后者會(huì)發(fā)給仿真深度圖像產(chǎn)生器。而每隔一個(gè)幀,仿真深度圖像產(chǎn)生器會(huì)將得到的數(shù)據(jù)傳給用戶(hù)產(chǎn)生器。換言之,兩幀從Kinect上得到的數(shù)據(jù),只有一幀會(huì)真正被用作提取骨架,而另一幀將會(huì)被忽略。
這個(gè)做法雖然令幀率降低到15,但處理器使用率卻降至只有50%。而且經(jīng)過(guò)我們的驗(yàn)證,幾乎沒(méi)有出現(xiàn)丟幀的情況,即使出現(xiàn)亦沒(méi)有影響到提取骨架節(jié)點(diǎn)的質(zhì)素。經(jīng)過(guò)這個(gè)特殊處理,我們確定在這平臺(tái)使用Kinect是可行的,甚至還可提取額外的處理器資源用以其他運(yùn)算工作。
設(shè)計(jì)和實(shí)現(xiàn)
概述
系統(tǒng)通過(guò)Kinect獲取深度影像,并使用應(yīng)用程序OpenNI從深度影像中提取用戶(hù)的骨架。在獲取的骨架中,我們選取左右手、肘、肩六個(gè)關(guān)節(jié)點(diǎn)??偟膩?lái)看,用戶(hù)完成了一個(gè)手語(yǔ),通過(guò)Kinect和OpenNI,系統(tǒng)將記錄一系列的幀,每一幀由左右手、肘、肩六個(gè)關(guān)節(jié)點(diǎn)的三維空間向量組成。用戶(hù)每一次完成同一個(gè)手語(yǔ)都會(huì)有差別,所以我們?cè)谔卣魈崛≈靶枰獙?duì)記錄的幀進(jìn)行常態(tài)化處理。我們使用支持向量機(jī)(SVM)對(duì)提取的特征向量進(jìn)行分類(lèi)。每一類(lèi)表示一個(gè)手語(yǔ)。圖2描述了整個(gè)手語(yǔ)識(shí)別的流程。
手語(yǔ)獲取
雙手交叉握于腹部前方。這一動(dòng)作我們稱(chēng)之為“預(yù)備動(dòng)作”,表示手語(yǔ)的開(kāi)始和結(jié)束。為了避免潛在的識(shí)別錯(cuò)誤,我們要求每相鄰的兩幀(0.13s),用戶(hù)至少移動(dòng)5厘米。如果用戶(hù)做預(yù)備動(dòng)作超過(guò)100幀(6.67s),系統(tǒng)將會(huì)停止獲取手語(yǔ)數(shù)據(jù)。
數(shù)據(jù)處理
正如我們之前提到的常態(tài)化處理,我們將獲取的一系列幀通過(guò)均分和插入的方法統(tǒng)一成121幀,即2178個(gè)三維空間向量。我們對(duì)常態(tài)化處理后的數(shù)據(jù)進(jìn)行特征提取,產(chǎn)生1694個(gè)特征向量。最后我們將所有的特征向量放在一個(gè)矩陣?yán)?,用于SVM分類(lèi)。
手語(yǔ)訓(xùn)練和分類(lèi)
LIBSVM是一個(gè)用于支持向量機(jī)的集成軟件,支持多類(lèi)分類(lèi)。用戶(hù)使用LIBSVM提供的庫(kù),可以更容易地使用SVM。我們使用“svm-train”讀取輸入文件(Input File),生成模型文件(Model file)。我們的輸入文件包含1694個(gè)特征向量。我們對(duì)每個(gè)手語(yǔ)單詞訓(xùn)練20到30次。到目前為止,我們總共訓(xùn)練了48個(gè)手語(yǔ)。我們可以通過(guò)訓(xùn)練更多的手語(yǔ)擴(kuò)展我們的數(shù)據(jù)庫(kù)。
使用“svm-predict”可以預(yù)測(cè)用戶(hù)所做的手語(yǔ)屬于哪一類(lèi)。
參考文獻(xiàn):
[1]Chinese Sign Language [R/OL].http://baike.baidu.com/view/42806.htm
[2]OpenNI [R/OL].http://75.98.78.94/About.aspx
[3]PrimeSense 3D Sensor Data Sheet[R/OL].http://www.primesense.com/press-room/resources/file/4-primesense-3d-sensor-data-sheet?lang=en
[4]LIBSVM [R/OL].http://www.csie.ntu.edu.tw/~cjlin/libsvm/
[5]Hardware Requirements of Kinect[R/OL].http://www.microsoft.com/en-us/kinectforwindows/purchase/sensor_setup.aspx
[6]FPGA-based MP3 Player[R/OL].http://cegt201.bradley.edu/projects/proj2010/fpgamp3/FPGAMP3_Project_Report.pdf
[7]Altera wiki - MP3 player[R/OL].http://www.alterawiki.com/wiki/MP3_Player
評(píng)論