1. 程式人生 > >《2018-Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition》

《2018-Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition》

動機

  • 這篇文章開篇就指出,我們的模型是要從人體動作的序列中選取出最informative的那些幀,而丟棄掉用處不大的部分。但是由於對於不同的視訊序列,挑出最有代表性的幀的方法是不同的,因此,本文提出用深度增強學習來將幀的選擇模擬為一個不斷進步的progressive process。
  • 強化學習是通過優化選擇actions的policy來最大化agent從environment所獲得的rewards。文章中說至今為止,在動作識別領域,增強學習的應用還不多。
  • 做skeleton based action recognition會用到人體關節的鄰接矩陣,之前做skeleton based action recognition基本都是有骨骼相連的關節對才會在鄰接矩陣的相應位置標記一個1,沒有連線的位置就標記為0
  • 但本文不同,本文考慮到不相連的關節之間的相互關係也是很重要的,比如兩隻手不是直接相連的,但是兩隻手的相互位置關係在識別‘拍手’這個動作時就尤為重要。

方法

  • 本文的人體關節鄰接矩陣是這麼設計的:如果兩個關節有連線,就在鄰接矩陣相應位置標記為α,稱之為intrinsic dependencies,否則標記為β,稱之為extrinsic dependencies。此外關節沒有self connection,是鄰接矩陣對角元素全是0.
  • 思路簡單概括為:
    1. 我們的輸入是一段視訊,視訊中有多個幀。
    2. 我們想用RL的演算法來選擇關鍵幀(本文是FDNet)
    3. 再把選取到的關鍵幀輸入到GCNN網路,得到這個vedio的標籤

定義問題的決策鏈

  1. 已知輸入的是含有多個幀的一段視訊,但我們不要全部用到全部幀數

  2. 所以我們想提取關鍵幀,設定提取的關鍵幀數為m,把這m個關鍵幀按序號排序,每一個action表示這些關鍵幀是要向左移動,向右移動或是保持當前位置。

  3. 設定迭代步數,當程式迭代步數達到設定值時,就停止程式;

    Selection_076.png

State and Action

State

  1. 針對選關鍵幀這個MDP問題,狀態S可以表示為: {Sa,Sb}

  2. 即它由來兩部分組成,其中Sa=[F,M] 也是由兩部分組成的。F表示整個視訊的資訊, 它張量的形狀為:f×N×3。 其中f表示視訊的所有幀數,N表示每一幀中的骨架模型的節點數,3表示每一個骨架節點的3D座標。 如下圖所示是一個拍手動作的其中三幀,每一幀都是用一些骨架資訊表示,其中包含了骨架中有多少個關節節點以及它們的3D座標。

Selection_079.png

  1. 對於M就表示所有被提取的關鍵幀資訊,用一個形如m×N×3的張量表示,其中m表示關鍵幀的數目
  2. 最後Sb one-hot, 它對應到整個視訊的每一幀,如果對應的元素值為1,那麼說明該幀被提取為關鍵幀,其餘則為0 ;

Selection_077.png

Action

action的動作由FDNet輸出
action的定義比較簡單:

  1. 幀向左移動
  2. 幀向右移動
  3. 幀保持不動
  • 現在,我們開啟看一下FDNet網路的結構

Selection_078.png

Reward function

Selection_075.png

1542282682251

GCNN

1542282748198

演算法

Selection_080.png