1. 目前進展
1.1 相關資料
1.2 流程
1.3 困難
1.4 組件
1.5 生成方法與判別方法
1.5.1 生成方法(Generative Methods)
1.5.2 判別方法(Discriminative Approaches)
1.6 手勢姿態估計方法
1.6.1 方法分類
Model-Driven | Data-Driven |
User interacts primarily with a (mathematical) model and its results |
User interacts primarily with the data |
Helps to solve well-defined and structured problem (what-if-analysis) |
Helps to solve mainly unstructured problems |
Contains in general various and complex models |
Contains in general simple models |
Large amounts of data are not necessary |
Large amounts of data are crucial |
Helps to understand the impact of decisions |
Helps to prepare decisions by showing developments in the past and by identifying relations or patterns |
1.6.2 方法彙總
1.6.3 架構
1.7 關節描述及自由度(DOF)
1.8 訓練數據及其生成方法
1.8 測試數據(都是真實數據)
2. 生成模型 (Model Based Methods)
主要問題:初始化複雜、容易陷於局部最優
【1.1】(2014) Realtime and Robust Hand Tracking from Depth.
Chen Qian; Xiao Sun, Yichen Wei, Xiaoou Tang, Jian Sun
- 只使用CPU可達到25FPS,誤差小於10mm
- 使用48個球簡單定義手模型,並且定義了一個快速的cost函數;
- 定義了一個自由度(DOF)爲26 的手的模型,其中的6個自由度代表全局的手的模型(整體);每一個手指還有4個自由度(總共20個)。同時還加上了手的運動學的限制。
- 使用基於梯度的隨機優化方法,使其快速收斂並獲取好的精確度;
1)基於梯度的優化方法。但是明顯的缺點是:很容易被陷在局部最優裏面,同時對於非剛體的處理效果也不是很好。
2)PSO: 是一種從參數空間搜索最優化參數的方法。在演化的過程中,整個點雲的最好位置以及以及每一個點的局部最好的位置都被記錄下來。在每一個的演化的過程中,粒子的速度都以它前一個速度的某種運算來更新。這樣得到的結果的好處是:能夠更好的搜索參數空間,避免那些很差的局部最優值。但是缺點是:速度比較慢。
- 建議了一個新的手指檢測和手初始化方法
- Video
- MSRA Hand Dataset :Benchmark
3. 判別模型 (Data-Driven,Learning Based Methods)
- Deep-Joint
- 使用CNN提取特徵,併爲關節位置生成小的熱圖(heatmaps),然後從特徵和小的熱圖中使用IK(反向動力學)推斷出手的姿勢。
- 此方法只能預測關節的2D位置,然後使用深度圖算出第三個座標,這對於隱藏關節是有問題的。此外,其精確度受限於heatmap分辨率;因爲CNN必須在每個像素位置進行評估,所以創建熱圖計算量很大。
- 40FPS (without CPU,見"2015-Cascaded Hand Pose Regression")
- Code
- NYU Hand Pose Dataset : Benchmark
1) 使用Primesense Carmine 1.09(結構光)抓取 RGB-D數據(每一幀的關節位置通過3個Kinect獲取)
2) 72K訓練樣本(1人),8K測試幀(2人 )
3) Ground Truth 標記包含36個關節,本文只使用了14個關節
【2】(2014.4) Latent Regression Forest: Structured Estimation of 3D Articulated Hand Posture.
Danhang Tang, Hyung Jin Chang, Alykhan Tejani, Tae-Kyun Kim
- 粗略估計一個包含手的3D邊框
- 主要貢獻:
1)學習手的拓撲結構(以非監督、數據驅動的方式),它由Latent Tree Model表示
2)一個新的基於森林的判別框架(LRF: Latent Regression Forest),此框架在圖像中進行結構化搜索(coarse-to-fine),同時框架每個階段嵌入一個錯誤迴歸器以避免錯誤累積
3)生成一個多視角的手勢Dataset(180K 3D標記深度圖,從10不同的測試者採集)
- ICVL Hand Posture Dataset:Benchmark
1) 使用Intel Creative TOF深度攝像頭, 22K訓練樣本
2) 每行對應一個圖像(包含16x3個數字,表示16個關節的位置(x,y,z),且是關節中央的位置)
3) (x,y)以像素爲單位,z以mm爲單位
4) 16個關節的順序:Palm, Thumb root, Thumb mid, Thumb tip, Index root, Index mid, Index tip, Middle root, Middle mid, Middle tip, Ring root, Ring mid, Ring tip, Pinky root, Pinky mid, Pinky tip
5) 不精確的標記
- Video Awesome Random Forest Danhang Tang
- 62.5FPS (without CPU,見"2015-Cascaded Hand Pose Regression")
【3】(2015.2) Hands Deep in Deep Learning for Hand Pose Estimation.
Markus Oberweger, Paul Wohlhart, Vincent Lepetit
- Deep-Prior
- 使用CNN網絡直接深度圖中手關節的位置。本文的特點是速度很快並且精度可以通過refinement提高。作者主要的貢獻是兩個部分:
1)設計一個加入了prior的網絡輸出手的關節點
2)基於上述關節點預測,對每一個關節點用一個refinement網絡來進行更精確的關節點輸出。甚至可以用迭代的方式多次refine關節點位置
- Code Python Code based on Caffe
- 引用【1】、【2】
【4】(2015.x)Training a Feedback Loop for Hand Pose Estimation
Markus Oberweger, Paul Wohlhart, Vincent Lepetit
- 使用Feedback Loop來糾正預測錯誤
- Feedback Loop也是一個深度網絡,通過訓練數據優化
- 避免把3D模型擬合到輸入數據,不需要手工創建3D模型
- 在單GPU上可執行400fps
【5】(2015.4) Hand Gesture
Recognition with 3D Convolutional Neural Networks
Pavlo Molchanov, Shalini Gupta, Kihwan Kim, and Jan Kautz
- 從深度圖像中識別駕駛員手勢 (NVIDIA)
- 組合多空間尺度的信息進行最後的預測
- 也利用空間-時間方法進行數據擴增,以避免訓練時的過擬合
- 正確率 77.5%,基於VIVA challenge dataset
【6】(2015.5) Depth-based hand pose estimation: methods, data, and challenges.
James Steven Supancic III Gregory Rogez Yi Yang Jamie Shotton Deva Ramanan
- 基於單一深度幀實現了一系列的手勢識別,並且發佈了相關軟件和評估代碼
- 在單手場景中,姿勢估計基本能解決
- 許多方法使用不同的標準評價自己,使比較變得困難,從而定義了一個評價標準
- 介紹了一個“簡單的近鄰基線”,它超越了大部已經存在的系統,表明大部分系統泛化能力差
- 強調一個未被關注的關鍵點:訓練數據與模型本身一樣重要
- 引用【1】、【3】
【7】(2015.4) Fast and Robust Hand Tracking Using Detection-Guided Optimization
Srinath Sridhar, Franziska Mueller, Antti Oulasvirta, Christian Theobalt
- RDF (Randomized Decision Forest、Gaussian mixture representation)
- 50FPS without GPU support
- Website
- 沒有與其它方法的比較結果,其準確度不比Deep-Prior好
【8】(2015.4) Cascaded Hand Pose Regression
Xiao Sun, Yichen Wei, Shuang Liang, Xiaoou Tang and Jian Sun
- 三維姿態索引功能(3D pose-indexed features)
- 分層迴歸(Hierarchical Regression)
【8】(2016.3) Robust 3D Hand Pose Estimation in Single Depth Images: from Single-View CNN to Multi-View CNNs.
Liuhao Ge, Hui Liang, Junsong Yuan, and Daniel Thalmann
- 首先把深度圖投影到3個正交平面,在每個平面上回歸可以估計關節位置的熱圖(heat-maps)
- 把三個平面的熱圖融合起來,產生最後的3D位置估計,並學習先驗姿勢(pose priors)
- Video
- 引用【1】、【2】
【9】(2016.4) Online Detection and Classification of Dynamic Hand Gestures with Recurrent 3D CNN.
Pavlo Molchanov, Xiaodong Yang, Shalini Gupta, Kihwan Kim, Stephen Tyree, Jan Kautz
- 在真實世界中自動檢測並分類動態手勢的挑戰:
1)人做手勢時存在大量的多樣性,導致檢測和分類困難
2)系統必須實時在線工作,以避免用戶做手勢與分類結果出來之間有明顯的延遲(實際需要在用戶做完手勢之前完成分類)
- 從多種數據中,使用遞歸三維卷積神經網絡同時執行動態手勢的檢測和分類
- CNN可接入多路輸入數據
- 檢測分類器(Detection Classifier):區分是否有手勢
- 識別分類器(Recognition Classifier):誤別出具體的手勢類型
-
- Video
- 在普通計算機上可達到32FPS,無需GPU加速
- 提供了一個完整矩陣(Matrix Completion)方法,此方法在每一幀的基礎上估計關節角度參數
- 深度圖-->CNN-->低維特徵向量 (在訓練時,按此方法生成特徵數據庫;在識別時,使用NN算法從特徵數據庫中找到最近的特徵向量,從而獲取關節角度參數<爲了加速,會記住前面幀最近鄰居的特徵向量>)
- 創新的矩陣算法(matrix completion algorithm)使用空間、時間最近的特徵向量及其已知的姿勢參數來估計輸入特徵向量的姿勢參數
- 包括大視角的特徵數據庫和分層的姿勢參數估計,可以解決部分遮擋的問題
- 此方法可以靈活地使用或不使用時間信息,這樣大大減輕了明顯的姿勢初始化(當跟蹤丟失或手消失時)
- 如果把深度神經網絡中分類層直接換成迴歸層,其目標函數將陷入局部最優
- 在全連接層的倒數第二層,訓練幾個ConvNets輸出一個判別式的低維激活特徵
- 主要觀點:由一系列附近的激活特徵生成一個激活特徵,可以更好地表示手勢
- ConvNets自動學習訓練範圍(全局或局部)、手指類型(thumb, index,
middle, ring, little)、遮擋(通過輸入姿勢參數的離散值),且不需要其它額外信息
- 把訓練數據輸入ConvNets,ConvNets輸出激活特徵,然後把與每一個訓練圖像對應的激活特徵存入“激活特徵數據庫”中
- 主要貢獻:
1)姿勢矩陣初始化(使用全局方向或手指關節的低維、差別式表示)
2)使用一個有效的矩陣方法估計關節角度參數
3)採用分層(全局迴歸、局部迴歸)的方法進行手勢估計
- 此方法類似迴歸思想,但其完整矩陣方法中的“深度激活特徵”與“強加的時間一致性”一起可以抑制抖動
- 此方法與協同過濾模型(collaborative filtering model)共享關係
- 卷積網絡(ConvNet):不適合做迴歸任務,但分類任務做得很好
- 使用ConvNet計算的“激活特徵”用於分類,而不是迴歸;把“激活特徵”輸入給用於實現迴歸的矩陣方法
- 如果每個關節角度參數一個ConvNet,其精度較好,但時間和內存消耗較大;如果使用一個ConvNet來訓練所有的關節角度參數,其內存和時間消耗較小,但精度較差;所以本文采用兩階段分層的方案
- 與其它方法的準確性比較,從圖中可以可以,它的準確性並不比【3】Deep-Prior好 (GT:Ground Truth)
- 各種方法內存消耗比較
【11】(2016.5) Efficiently Creating 3D Training Data for Fine Hand Pose Estimation.
- 提供了一個半自動標定深度視頻幀中手關節3D位置的方法,此方法只需要用戶提供參考幀中可見關節的二維投影即可。
- 利用空間、時間和形狀限制獲取完整序列中手的所有關節位置
【12】(2014.9)Hand segmentation with structured convolutional learning
Natalia Neverova, Christian Wolf, Graham W. Taylor, Florian Nebout
- 數據對於現代算法來說有時候要高於算法本身,尤其是大面積推廣深度學習以後,因此數據的多樣性對模型最終精度和穩定性提供了一定的保障。但是龐大的數據標定卻是一個非常痛苦的事情。尤其是網絡越大,需要的數據就越多,動輒幾十上百萬,對於classification分分類估計還可以標一標,但是對於segmentation來說,要像素級別的標定上百萬張圖片,那就是不可能的
- 但是對於手勢識別這樣的變化非常大的任務來說,要想handle儘可能多的情況,樣本會需要的更多。因此如何解決數據標定是一個難題
- 目前的解決方法是:使用合成數據,從微軟的Human Pose那篇文章展現了合成數據的強大優勢以來,合成數據的確是一個不錯的選擇,使用3D模型,天然精確標定,然後仿照現實中的情況添加一些噪聲,然後就可以得到大量的標定數據
- 通過合成數據訓練的模型提取context信息從而完成自動標定unlabelled樣本
【13】(2016.6) Hand Pose Estimation through Semi-Supervised and Weakly-Supervised Learning
Natalia Neverova, Christian Wolf, Florian Neboutc, Graham W. Taylord。
4. 混合方法(Discriminative methods + Generative methods)
Qi Ye, Shanxin Yuan, Tae-Kyun Kim