手勢識別論文解讀


《Learning to Estimate 3D Hand Pose from Single RGB Images》2017.3

本文介紹了從2D彩色圖像進行3D hand pose estimation的一種方法,總體來說方法很直觀
project page

主要流程

這里寫圖片描述
如圖所示,依次有以下幾個環節:

  • 1)HandSegNet, 輸入256x256x3, 輸出256x256x1的一個hand mask。用一個FCN網絡進行手的語義分割,分割之后的結果用來對手附近區域進行截圖,以減少計算量及提高准確性
  • 2)PoseNet,用來計算手的21個keypoint, 輸入256x256x3,輸出32x32x21, 即21張不同keypoint的score map
  • 3)PosePrior,有兩個子stream,每個的網絡結構除了最后一層不一樣其他都一樣,輸入32x32x21,輸出兩個層。一個是正則化的手的坐標,以手掌的點為原點,且長度進行了normalize, 即維度為21x3。另一個是相對於實際圖片的空間的變換關系,即維度為3

在論文中還用這個結構進行了手語識別,手語識別的網絡直接根據手的指示來, 是一個3層的全連接網絡,輸入維度63, 輸出維度35

代碼細節解讀

使用自帶的工具tfprof進行性能分析,發現主要的耗時在於, 2/3耗時在single_obj_scoremap中的tf.nn.dilation2d操作, 1/6耗時在HandSegNet,1/6耗時在PoseNet2D。
同時,為了復用前人訓練好的網絡參數,將手部截圖重新上采樣到256x256來使用PoseNet。可見整個網絡還有很大的優化空間。cpu上做到實時也不是沒有希望。

訓練流程解讀

《Online Detection and Classification of Dynamic Hand Gestures with Recurrent 3D Convolutional Neural Networks》2016.11

這篇文章的思路就不一樣,它主要在於訓練一個end-to-end的手勢識別結果,不進行具體的hand pose estimation。從視頻效果來看也不錯

《Realtime Multi-Person 2D Human Pose Estimation using Part Affinity Fields》2016.6

code

目標

多人同時Pose Estimation, 如下圖所示
這里寫圖片描述

框架

分兩個部分,檢測部分和匹配部分,如下圖所示
pipeline
(b)關鍵點檢測,(c)part affinity fields即四肢關系檢測,(d)二分圖匹配

檢測部分

如下圖所示,上下分為兩個brach,分別用來檢測關鍵點 Part Confidence Maps 以及 四肢關系Part Affinity Fields
two branch
分stage的思路和《Convolutional Pose Machines》一致(畢竟是一個團隊)。其中的F來自於VGG-19的前十層finetuned的結果,對於stages t>=2, 每個branch的輸入都是$$F, S^{t-1}, L^{t-1}$$ 的聯合,即
這里寫圖片描述
類似於《Convolutional Pose Machines》,計算每層的loss為
這里寫圖片描述
其中的W(p)代表本該存在的單位是否在groud true中存在(有些關節或者四肢沒有標注)。而對應的total loss為
total loss
注意Part Affinity Fields(PAF)是一些矢量區域,可以通過指定四肢粗細然后在訓練數據中根據關節點來標注。

匹配部分

這里首先要明確 Part Confidence Maps和PAF是如何協同確定四肢和關節的預測的
這里寫圖片描述
如上圖,對於圖中的任意點P,在PAF的對應點的投影可以用來表示該點在四肢上的相關性。對於 Part Confidence Maps中任意的兩個極值點A,B,可以通過插值A,B中的幾個點p0, p1, p2, p3, p4...求這些點在PAF上的投影的積分來確定A,B兩點作為同肢節的關節點的可能性,如下圖
這里寫圖片描述

有了上面的兩點同肢節判定的方法,我們就可以通過匹配每組能相連的點來決定連接與點的有效性。即通過右手腕的confidence map 和右手肘的confidence map的極值點之間的二分圖匹配問題
這里寫圖片描述
這里寫圖片描述
其中
這里寫圖片描述
用來表示兩個關節點是否相連。這個問題可以用Hungarian algorithm來解決,相對的總體的error,可以通過簡單的相加來衡量
這里寫圖片描述

兩個子問題:

  • non-maximum suppression非極大值抑制
    定義:處理一份數據,講非極大值的部分設置為0,是不是非常直觀^^
    實現:常見的高效算法可以參見 ICPR2006-《Efficient Non-Maximum Suppression》,核心是減少重復比較
    應用:檢測算法中常見,本質是從眾多的滑動窗口的sore中找到局部極值作為檢測結果。參見很不錯的人臉檢測的NMS例子

  • Hungarian algorithm
    目標:解決二分圖的最大匹配問題 or 任務分配問題,用在文中是解決不同關鍵點之間的同肢體匹配問題

《Convolutional Pose Machines》

code

目標

實現關鍵部位的檢測,生成scoremap,如下圖所示
這里寫圖片描述

框架

常規的思路類似FCN,但是由於網絡層數變深會有不好訓練的問題。文章的重點在於分stage來訓練,每個stage的結果目標都是最終的score map,通過把原圖的feature和上一個stage的輸出一起傳遞到下個stage作為輸入,來實現迭代。注意下圖中的x'這個網絡的權重在所有的stages t>=2中都是共享的,用來提取圖像的feature
這里寫圖片描述

要點

  • 通過分階段stage的方式,用來迭代並擴大receptive field,每個stage都可量化以及可視化
  • 由於總體網絡層數教深,很容易出現gradient vanish的問題, 由於每個stage的輸出都可以計算loss,如下,ground true未真實位置點的高斯分布的maxloss, 同時,total loss 為每層loss的和total loss。即文中所謂的Intermediate supervision,每層的gradient都有部份來自於當層的loss。End-to-end learning。

TODO: 不懂如果用了上面的loss卻不intermediate supervision的方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM