手勢估計- Hand Pose Estimation

1. 目前進展

1.1 相關資料

     1)HANDS CVPR 2016
     2)HANDS 2015 Dataset
     3)CVPR 2016
     6)MSRA Hand Dataset    
     7)NYU Depth Dataset V2    
     8)Hand Gesture Datasets RGB-D Dataset from Multimedia Technology and Telecommunications Laboratory
     10)LibHand
     11)Dexter 1 Dataset
        14)HAND DATASETS AND METHODS
     15)

1.2 流程

     基本流程如下:
     1)Detect and Segment Hand
     2)Estimate Pose
     3)Validate or Refine

1.3 困難

      手勢識別困難之處:
      1)手分辨率低(Low-res hand)
      2)背景雜亂(Clutter background)
      3)手與其它對象交互(Object/surface interaction)
      4)手被遮擋(Occlusions/Self-occlusions)
      5)不同手勢相似(Self-similarity)
      6)多自由度(many DoF(Degree of Freedom))
      7)多視角(Multiple viewpoints)
      8)不同的形狀和尺寸

1.4 組件

      1)Training sets
      2)Testing sets
      3)Models

1.5 生成方法與判別方法

      數據驅動方法(Data-Driven)更有優勢,因爲它不需要複雜的模型校準;且即使初始化很差,其結果照樣健壯(即對初始化的依賴性不高)。
      - holistic (coarse to fine)
      - 手勢識別:Hand Gesture Recognition
      - 動作識別:Action Recognition
      - 手勢估計方法:生成方法和判別方法

1.5.1 生成方法(Generative Methods)

         生成方法(基於模型)(Generative mthods: model-based)
         - 步驟:首先,創建大量的手勢;然後,選擇一個最匹配當前深度圖像的手勢
         - 目標函數(objective function):基於輸入深度圖手模型近似深度圖相似性,然後對此目標函數進行優化,以找到最接近的手模型。
         - 缺點
          (1)優化(找最匹配的)計算量大 
          (2)其精確性高度依賴人工創建相似性函數(similarity function)
          (3)如果前面的估計不準確,易於出現錯誤累積
          (4)爲減輕普遍存大的模型漂移(model drift),近來採用“優化+重新初始化”範式

1.5.2 判別方法(Discriminative Approaches)

         判別方法(基於外貌)(Discriminative approaches:appearane based)
         - 學習從深度圖像到手勢配置的映射(手勢配置 = mapping(深度圖像))
         - 手深度圖低分辨率、自我遮擋、快速移動會產生大量錯誤
         - 基於局部迴歸(local regression)的方法:可以提高對遮擋的魯棒性,但是易產生幀間抖動

1.6 手勢姿態估計方法

1.6.1 方法分類

      1)追蹤與檢測(Trackers versus Detectors)
            檢測:基於單幀的方法,每幀都會重新初始化它自己
            追蹤:基於多幀的方法,不能從錯誤中立即恢復
      2)數據驅動與模型驅動(Data-driven vensus Model-driven)
           模型驅動:拿着模型找與之匹配的數據(已經知道本質規律,來對數據進行判斷);優化一個幾何模型以擬合觀察到的數據;其目標函數容易出現局部最優;它在追蹤領域取得了很大的成功,它的初始化限制了搜索空間
           Model-driven approach:This parametric modelling approach consists of searching the most appropriate model among basic building models contained in a models library. 
           數據驅動:拿着數據總結模型(根據已知數據尋求本質規律);對於單個圖像檢測,各種快速的分類算法可以實時地實現;這些分類器由幾何模型合成的數據進行訓練,可以看作是模型的近似擬合
           Data-driven approach, also called non-parametric modelling approach:This technique attempts to model a primitive or a complex building by using series of more or less complex operations. It allows the generation of a model without belonging to a specific library.            
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
      3)多階段管道(Multi-stage pipelines)
           一般分爲pre-processing stage(Segmentation)和post-processing stage

1.6.2 方法彙總  


1.6.3 架構

    1)Decision forests          
    2)Part Model
    3)Deep Models
          -Deep-Joint:分爲三階段管理
            (1) 使用Decision forest檢測手
            (2) 使用深度網絡迴歸關節位置
            (3) 使用IK優化關節預測
                
          -Deep-Prior
            (1) 基於類似的深度網絡
            (2) 依靠網絡本身學習到的“空間先驗知識(Pose Prior)”來優化關節預測,而不是使用IK
            (3) 使用Overlapping Regions來優化3D關節位置,使其精度更高;小的Region提供精確度,大的Region提供環境信息
          -Deep-Segment                         
            (1) 採用像素標籤方法,爲每一個像素預測其屬於的關節標籤
            (2) 通過聚類方法產生關節位置
            (3) 此方法讓人想起了Kinect像素級部件分類方法,但是用deep network代替了decision forest

1.7 關節描述及自由度(DOF)

      1)關節位置(joint position):需要考慮全局方向(即攝像機視角),侷限於視角
      2)關節角度(joint angle):不需要考慮全局方向(即攝像機視角),與視角無關  
      3)自由度(DOF)
      

1.8 訓練數據及其生成方法

      1)真實數據+手動標註(Real data + manual annotation):  ICL (標記了16個關節)
            不同的人標記,差異高達20%     
      2)真實數據+自動標註(Real data + automatic annotation):NYU (標記了36個關節)     
            可以採用被動的運動捕獲系統來獲取訓練數據
      3)準合成數據(Quasi-synthetic data)
            對真實數據及其標註進行幾何變換(如旋轉等),可以產生大量的合成數據
      4)合成數據(Synthetic data):UCI-EGO
            數據由計算機圖像系統渲染生成,精確的標註可以與渲染時一起產生,所以完全避免了標註的問題  
            可以通過開源的libhand(依賴: Boost, OpenCV, OGRE)模型來生成    
         

1.8 測試數據(都是真實數據)

      

2. 生成模型 (Model Based Methods)

     主要問題:初始化複雜、容易陷於局部最優

   【1.1】(2014Realtime 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)

   【1】(2014.6Real-Time Continuous Pose Recovery of Human Hands Using Convolutional Networks
           Jonathan Tompson, Murphy Stein, Yann LeCun and Ken Perlin.

         - 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.4Latent 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 DatasetBenchmark     

           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.2Hands 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.4Hand Gesture Recognition with 3D Convolutional Neural Networks
            Pavlo Molchanov, Shalini Gupta, Kihwan Kim, and Jan Kautz

         - 從深度圖像中識別駕駛員手勢 (NVIDIA)

         - 組合多空間尺度的信息進行最後的預測

         - 也利用空間-時間方法進行數據擴增,以避免訓練時的過擬合

         - 正確率 77.5%,基於VIVA challenge dataset

              


   【6】(2015.5Depth-based hand pose estimation: methods, data, and challenges.  

           James Steven Supancic III Gregory Rogez Yi Yang Jamie Shotton  Deva Ramanan

         - 基於單一深度幀實現了一系列的手勢識別,並且發佈了相關軟件和評估代碼

         - 在單手場景中,姿勢估計基本能解決

         - 許多方法使用不同的標準評價自己,使比較變得困難,從而定義了一個評價標準

         - 介紹了一個“簡單的近鄰基線”,它超越了大部已經存在的系統,表明大部分系統泛化能力差

         - 強調一個未被關注的關鍵點:訓練數據與模型本身一樣重要

         - Code and Dataset         

         - 引用【1】、【3】          


           

       


   【7】(2015.4Fast 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.4Cascaded Hand Pose Regression
            Xiao Sun, Yichen Wei, Shuang Liang, Xiaoou Tang and Jian Sun

         - 三維姿態索引功能(3D pose-indexed features)

         - 分層迴歸(Hierarchical Regression)

         - Dataset and Video 

 

   【8】(2016.3Robust 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.4Online 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 

         


   【10】(2016.6DeepHand: Robust Hand Pose Estimation by Completing a Matrix Imputed with Deep Features.
           Ayan Sinha, Chiho Choi, and Karthik Ramani 

         - 在普通計算機上可達到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來訓練所有的關節角度參數,其內存和時間消耗較小,但精度較差;所以本文采用兩階段分層的方案

         - Video1 Video2   

         - 與其它方法的準確性比較,從圖中可以可以,它的準確性並不比【3】Deep-Prior好 (GT:Ground Truth)

           

         - 各種方法內存消耗比較

           

 



   【11】(2016.5Efficiently Creating 3D Training Data for Fine Hand Pose Estimation

            Markus Oberweger, Gernot Riegler, Paul Wohlhart, Vincent Lepetit

         - 提供了一個半自動標定深度視頻幀中手關節3D位置的方法,此方法只需要用戶提供參考幀中可見關節的二維投影即可。

         - 利用空間、時間和形狀限制獲取完整序列中手的所有關節位置

         - Code and Dataset 

         - 

   【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。

         - 
         - 引用【12】

4. 混合方法(Discriminative methods + Generative methods)

   【2.1】(2016.4) Spatial Attention Deep Net with Partial PSO for Hierarchical Hybrid Hand Pose Estimation
             Qi Ye, Shanxin Yuan, Tae-Kyun Kim
         -  判別方法產生的手勢難以滿足運動約束,而生成方法可用於糾正(或驗證)這些手勢結果
         - 空間注意機制:它通過變換輸入空間(特徵空間)和輸出空間的方式,把級聯和分層迴歸集成到CNN框架中,從而大大減少了視角和關節的變化
         - 在分層的級之間,分層的PSO把運動約束施加到CNN的結果上
         - 3D手勢估計問題可以看作是一個變量配置問題,這些變量用於表示“手勢深度圖像的”手模型(Hand Model)
         - 級聯(多階段)+ 分層(多層): (cascaded (with multiple stages) and hierarchical (with multiple layers))
         - 
         - 
         - 
         - 引用【1.1】、【1】、【2】、【3】、【4】、【6】、【7】、【8】
         
        
        上圖有52個自由度(DOF),layer 0有7個DOF(全局方向:一個4維單位四元數),全局位置(3DoFs),layer 1、layer2、layer3分別有15個DoF,每3個DoF表示此關節相對於上一層的旋轉。
  
       



















         

   






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章