劉妙閣

摘要:隨著嵌入式設備智能化水平不斷提高,人和設備交互方式也多樣化,手勢就是其中一種新的更自然的人和設備交互方式。實現有效的手勢識別系統具有實際意義。分類算法的選擇對手勢識別性能有重要影響,本文選擇改進SVM算法作為識別算法。SVM算法相比神經網絡算法具有更好的泛化性能。但原始SVM算法直接作為手勢的分類算法還是無法滿足應用需求,所以本文提出了改進SVM算法。經過實驗驗證了改進算法比原算法有更快的訓練、識別速度。
關鍵詞:手勢識別 支持向量機 嵌入式系統
中圖分類號:TN912 文獻標識碼:A 文章編號:1007-9416(2016)05-0000-00
手勢識別的分類器選擇對識別性能有較大影響,選擇好的分類器才能達到較好的識別準確率。SVM算法(SVM,Support Vector Machine)是基于統計學習理論的分類算法[1],SVM相對較早的神經網絡等分類算法有更好的泛化性能,本論文選擇它作為分類算法。SVM算法一般運行在PC機或服務器,將整個SVM算法在嵌入式平臺實現有很多問題要解決。本文針對手勢識別應用,改進SVM算法,然后將算法以C++庫的形式提供給手勢識別應用程序。
1 系統設計
本文實驗使用的嵌入式平臺是飛凌的OK6410開發板,處理器采用的是SAMSUNG公司的基于ARM11的S3C6410芯片,采用USB攝像頭ZC301采集視頻圖像。SVM算法是智能算法,與模板匹配等分類算法相比有自身獨有的學習能力。為了縮短識別時間,提高實時性,本文手勢識別的過程在使用簡單的膚色模型分割出膚色區域后直接提取特征訓練SVM分類器,省去了預處理等步驟。
2 改進SVM手勢識別算法
2.1樣本子集篩選
SVM算法適用于小規模訓練樣本集,較大的樣本集會降低運算速度,占用較大內存空間。SVM模型訓練時所需存儲空間與訓練樣本數的平方成正比,時間復雜度與訓練樣本數的立方成正比[2]。
為獲得分類模型,不總是需要提供完整的訓練集,因為訓練集中有噪聲樣本和不影響分類模型的樣本,尤其當使用SVM作為分類器時。SVM算法尋求最大間隔超平面將兩類樣本分開,訓練得到的模型只需要少部分樣本(支持向量)信息,這些樣本分布在特征空間中同類樣本集合的邊緣,去掉位于其它位置的樣本得到的模型是一樣的。基于這一點,本文首先對正負樣本分別進行聚類,得到若干集合,然后去掉集合內部的樣本,保留集合邊緣附近的樣本構成訓練樣本子集。首先對正負樣本分別進行聚類,得到若干集合。 K均值聚類等劃分類型的聚類算法都存在一個問題,就是k值的選取需要花費時間。為了減少訓練時間,本文采用無需選取參數的層次聚類,聚類完成后去除每個集合內部樣本。
2.2 SVM核函數選擇
SVM核函數的選擇對于算法的性能有較大影響[3],目前核函數的選擇還沒有很強的規律可循,可以通過對比不同核函數的SVM分類各方面性能(如錯誤率和支持向量個數)來選擇最適用的核函數。常用的核函數有多項式核函數、徑向基核函數、sigmoid核函數。
近些年也有較多新的核函數被提出像切比雪夫核函數,小波核函數等新的核函數。切比雪夫核是用于標量值的標準核。一種構成新核函數的方法是混合現有的核函數,但是需要注意不能增加過多參數,否則會降低訓練速度。徑向基核函數的參數只有一個,而且經對比它是常用核函數中應用于手勢識別性能最好的核函數。本文將切比雪夫核函數、小波核函數和徑向基核函數結合,產生新的核函數,將兩個核函數相乘得到的核函數一般有兩個核函數的特性和優點,對比新的混合核函數和單一核函數的性能,選取性能最佳的核函數。
對比實驗結果表明徑向基核函數和切比雪夫核函數混合成的核函數有最低錯誤率和最少支持向量數,說明它是手勢識別應用的最適合的核函數,所以本文選其作為核函數。
3 實驗結果及分析
本系統選擇Linux作為嵌入式操作系統,界面設計基于當前流行的android實現。由于手勢識別算法的運算量較大,所以適合用執行效率高的C/C++語言而不是JAVA實現。SVM算法的訓練和預測均用到了浮點數,一般嵌入式系統并不支持浮點運算。如果在嵌入式系統中采用軟浮點運算,運算速度會大大降低,不能滿足實時性要求。為加快手勢識別算法在嵌入式系統的運行速度,本文將浮點運算轉化為定點運算。然后將改進SVM的C++算法源程序編譯成.so庫文件,將生成的.so庫文件拷貝到工程根目錄 /libs/armeabi/中,android應用程序就可以調用庫文件中函數。程序分成手勢圖像樣本采集,分類模型訓練和手勢識別三部分。實驗結果表明系統能較好地識別出手勢代表的數字,光照條件的變化和手的旋轉對手勢識別的影響較小。
本文對比了基于SVM算法和本文提出的改進SVM算法兩種分類器的手勢識別程序在嵌入式系統中的性能如表1。
從表中可以看出改進SVM算法在識別準確率,訓練時間和測試時間上都比原始SVM算法要好。實驗結果驗證了本文提出的SVM手勢識別算法的可行性。
4 結語
本文對SVM算法的改進包括:
(1)篩選訓練樣本子集,減少訓練時間。
(2)采用切比雪夫-徑向基混合核函數作為手勢識別SVM算法的核函數。
(3)采用定點運算代替浮點運算,以較小的代價換取了更快的運算速度。
最后對比了基于不同分類算法的嵌入式手勢識別系統的性能,驗證了本文提出的改進SVM手勢識別算法的可行性。
參考文獻
[1] 李航.統計學習方法[M].北京:清華大學出版社,2012:95.
[2] Ha M, Wang C, Chen J.The support vector machine based on intuitionistic fuzzy number and kernel function[J].Soft Computing,2013,17(4):635-641.