當前位置:
首頁 > 科技 > 手勢識別如何搞定?我們需要基於大型視頻資料庫的端到端的學習

手勢識別如何搞定?我們需要基於大型視頻資料庫的端到端的學習

GIF/1.7M

圖:pixabay

原文來源:medium

作者:Twenty Billion Neurons

「機器人圈」編譯:多啦A亮

意圖手勢

手勢,和說話一樣,是人類交流的一種自然形式。事實上,它們可能是最自然的表達形式。進化研究表明,人類語言以手勢動作開始,而不是聲音。事實證明,嬰兒用手勢來傳達情感和慾望——在他們學會說話之前。

因此,許多技術公司一再試圖用手勢控制器替換鍵盤和滑鼠,因為這樣可以記錄用戶的手或手臂動作的意圖,這一點也就不足為奇了。雖然第一批這樣的系統使用有線手套(https://en.wikipedia.org/wiki/Wired_glove),但現代方法往往依賴於特殊的攝像機和計算機視覺演算法。最著名的例子是2010年11月推出的微軟Kinect(https://en.wikipedia.org/wiki/Kinect),問世時作為最暢銷的消費設備而創吉尼斯世界紀錄。儘管Kinect取得了初步的成功,但手勢控制器在消費者中並未得到廣泛的認可。

其原因可能是傳統的手勢控制系統有以下幾個缺點:首先,它們要求用戶購買諸如立體照相機(stereo camerash,https://en.wikipedia.org/wiki/Stereo_cameras)或新型3D圖像感測器(time-of-flight cameras,https://en.wikipedia.org/wiki/Time-of-flight_camera)之類的特殊硬體來捕捉三維的視覺數據。這排除了像筆記本電腦或智能手機這樣的標準消費硬體。第二,現有系統的性能不完善。現實世界是凌亂的,每個用戶都傾向於以不同的方式執行給定的手勢。這使得建立強大的、與用戶無關的識別模型變得困難。

圖:我們解決手勢識別問題的流水線。它使用端到端的方法,在該模型中只學習輸入手勢視頻片段和相應的標籤。

在TwentyBN上,我們採用了不同的手勢識別方法,使用了一個非常大的注釋數據集的動態手勢視頻和神經網路訓練了這些數據。我們創建了一個端到端的解決方案,可以在各種相機平台上運行。這使得我們能夠構建一個魯棒的手勢識別系統,並且僅使用RGB相機實時工作。

「Jester」數據集

為了訓練我們的系統,我們使用了一個大量數據集,這些數據集是我們社區群眾工作者拍攝的短而密集的視頻剪輯。數據集包含25個不同類別的人類手勢中的大約15萬個視頻,用於訓練/開發/測試,視頻分配比例為8:1:1;它還包括兩個「無手勢」課程,以幫助網路區分具體的手勢和未知的手部動作。視頻顯示人類演員在網路攝像頭前執行通用手勢,例如「向左滑動/向右滑動」、「向上/向下滑動兩個手指」或「向前/向前滾動」。如果你想了解更多關於這個數據集,你可能感興趣地發現,我們已經發布了一個非商業用途的創作公共許可證下具有重大意義的快照(snapshot)技術。https://www.twentybn.com/datasets

這些視頻片段具有挑戰性,因為它們捕捉真實世界的複雜動態。給你一個示例,看看這個視頻剪輯,顯示一個人做手勢:

圖:來自「Jester」數據集的示例剪輯。

雖然手勢易於被人類識別,但由於視頻素材包含次優照明條件和背景噪音(貓穿過現場),因此對於計算機來說很難理解。Jester上的訓練迫使神經網路學習可以將信號(手動)與雜訊(背景運動)分離的視覺特徵的相關層次。基本的運動檢測是不夠的。

模型架構

我們過去幾個月的工作重點是神經網路的設計和訓練,有效地利用了我們日益增長的Jester數據集。我們研究了幾種結構,以提出滿足我們高性能要求並創建最少運行時間消耗的解決方案。最後,我們聚集在一個包含三維卷積網路(3D-CNN)以提取時空特徵的架構、一個循環層(LSTM)來建模更長的時間關係,以及一個輸出類別概率的softmax層。

圖:描述我們的模型架構的示意圖。

與處理圖像的2D-CNN相反,3D-CNN在圖像處理方面表現得更好,3D-CNN使用將二維卷積擴展到時域的三維濾波器。視頻被處理為幀的三維「volume」。在神經網路的較低層中使用這樣的3D濾波器是有幫助的,特別是在運動發揮關鍵作用的任務中。網路的輸出是一系列特徵,每一個特徵都可以看作是一個小的輸入視頻片段的壓縮表示。

然後,特徵序列由LSTM層處理,使得更長的時間依賴性成為可能。在測試時,我們利用一個循環網路是一個可以穿越時間的動態系統這一事實。在訓練時,每個循環隱藏狀態通過softmax層轉換成類概率的向量,並且獲得的預測序列在時間上被平均化。平均化的向量用於計算損失。人們可以認為這是一種要求網路儘快輸出適當標籤的方法,迫使它與視頻中發生的情況保持同步。這種常見的方法使得模型能夠具有反應性,並在完全完成手勢之前在線輸出正確的類的最佳猜測。

我們的3D-CNN架構是按順序排列的濾波器大小為1和3的層序列。濾波器大小為1的層用於解釋信道相關性,並減少下一層的信道數。具有濾波器大小為3的層捕獲空間信息。最終架構能夠以87%的離線驗證精度達到18fps的處理速度。

圖:我們處理視頻的整體流水線

結論

為了展示我們的結果,我們使用Python和Javascript構建了一個簡單的客戶端伺服器系統,我們可以用它來實時演示我們網路的推理過程。

GIF/1.6M

該系統由幾個並行進程組成,每個進程各自負責系統的不同部分:視頻捕獲、網路推理、編排和HTTP服務。該模型在TensorFlow中實現,我們使用protocol-buffers來保存並載入網路。這使我們可以在Web瀏覽器中查看當前的攝像頭視頻流,並檢查到預測的結果質量。你可以在此查看更長的視頻結果。(https://www.youtube.com/watch?v=VlPnqL5osYQ)

點擊鏈接查看原文:https://medium.com/twentybn/gesture-recognition-using-end-to-end-learning-from-a-large-video-database-2ecbfb4659ff

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器人圈 的精彩文章:

圖像分類、目標檢測、圖像分割、圖像生成……一文「計算機視覺」全分析
TensorFlow 1.3的Dataset和Estimator?谷歌大神來解答
如何更好地理解神經網路的正向傳播?我們需要從「矩陣乘法」入手
遞歸神經網路RNN怎樣加速?看PyTorch如何進行動態批處理

TAG:機器人圈 |