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

一: 本文的目的

如題目所說的,本文的主要工作是提出一個深度逐步改進(jìn)的強(qiáng)化學(xué)習(xí)方法來做基于骨架的動作識別。說白了,就是做基于骨架數(shù)據(jù)的動作識別。

Selection_075.png

如上圖所示,給定一個輸入:vedio,然后最終目的是輸入一個標(biāo)簽?zāi)芘袛噙@個視頻中的模型在做什么動作。

思路簡單概括為:

  1. 我們的輸入是一段視頻,視頻中有多個幀。
  2. 我們想用RL的算法來選擇關(guān)鍵幀(本文是FDNet)
  3. 再把選取到的關(guān)鍵幀輸入到GCNN網(wǎng)絡(luò),得到這個vedio的標(biāo)簽

二: 定義問題的決策鏈

由于要用RL來解決問題,那么就需要先把問題轉(zhuǎn)化為一個決策鏈的問題

  1. 已知輸入的是含有多個幀的一段視頻,但我們不要全部用到全部幀數(shù)
  2. 所以我們想提取關(guān)鍵幀,設(shè)定提取的關(guān)鍵幀數(shù)為m,把這m個關(guān)鍵幀按序號排序,每一個action表示這些關(guān)鍵幀是要向左移動,向右移動或是保持當(dāng)前位置。
  3. 設(shè)定迭代步數(shù),當(dāng)程序迭代步數(shù)達(dá)到設(shè)定值時,就停止程序
Selection_076.png

三: State and Action

State

  1. 針對選關(guān)鍵幀這個MDP問題,狀態(tài)S可以表示為:
    \{S_a, S_b\}

  2. 即它由來兩部分組成,其中S_a=[F,M] 也是由兩部分組成的。F表示整個視頻的信息, 它張量的形狀為:f \times N \times 3。 其中f表示視頻的所有幀數(shù),N表示每一幀中的骨架模型的節(jié)點數(shù),3表示每一個骨架節(jié)點的3D坐標(biāo)。 如下圖所示是一個拍手動作的其中三幀,每一幀都是用一些骨架信息表示,其中包含了骨架中有多少個關(guān)節(jié)節(jié)點以及它們的3D坐標(biāo)。

    Selection_079.png

  3. 對于M就表示所有被提取的關(guān)鍵幀信息,用一個形如m\times N \times 3的張量表示,其中m表示關(guān)鍵幀的數(shù)目

  4. 最后S_bone-hot, 它對應(yīng)到整個視頻的每一幀,如果對應(yīng)的元素值為1,那么說明該幀被提取為關(guān)鍵幀,其余則為0

    Selection_077.png

Action

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

  1. 幀向左移動
  2. 幀向右移動
  3. 幀保持不動

現(xiàn)在,我們打開看一下FDNet網(wǎng)絡(luò)的結(jié)構(gòu)

Selection_078.png

上圖的執(zhí)行流程如下

  1. S_b經(jīng)過一個全連接層得到一段向量
  2. S_a經(jīng)過3層卷積后,在經(jīng)過一層全連接層得到另一段向量
  3. 將上面兩個結(jié)果合并起來,通過一個全連接層輸出結(jié)果
  4. 輸出的結(jié)果由3個3個神經(jīng)元組成,每一組神經(jīng)元表示對應(yīng)關(guān)鍵幀的action分布

四: Reward function

Selection_075.png
  1. 在本文的算法框架下,reward是由GCNN產(chǎn)生的(GCNN是什么下面說)

  2. GCNN拿m個關(guān)鍵幀作為一個輸入

  3. 初步的reward可以表示為:r_0 = sgn(P_{n,c} - P_{{n-1},c})
    其中c是視頻標(biāo)簽的ground truth

  4. 此外,我們還需要對reward做一些改善: 如果預(yù)測的action是從不正確的關(guān)鍵幀跳到正確的關(guān)鍵幀,那么就會追加一個大的獎勵,如果預(yù)測的action是從正確的關(guān)鍵幀跳到不正確的關(guān)鍵幀,那么就會給一個大的懲罰。最后reward表示如下
    \quad r = \left\{\begin{aligned} &\Omega , &\text{if stimulation} \\ &-\Omega , &\text{if punishment} \\ &r_0 , &\text{otherwise} \end{aligned}\right.

五: GCNN

GCNN 是基于圖的卷積

1.首先,我們看看圖是如何構(gòu)建出來的:
\quad \omega_{ij} = \left\{\begin{aligned} &0, &\text{ if }i=j \\ &\alpha, &\text{if joint } i \text{ and joint } j \text{ are connected} \\ &\beta, &\text{if joint } i \text{ and joint } j \text{ are disconnected} \end{aligned}\right.
我們根據(jù)上面的公式來構(gòu)建圖。為什么關(guān)節(jié)不相互連接都要給權(quán)重呢?比如看下面這個拍手的動作,左右手雖然沒有相互連接,但是它們之間是有一定的位置關(guān)系的,即能體現(xiàn)出拍手這么個動作信息

Selection_079.png

  1. 圖的卷積
    1. 首先,給定 T 個關(guān)鍵幀,根據(jù)上面第一點提到的公式構(gòu)建圖 [\mathcal{G}_1, \mathcal{G}_2,...,\mathcal{G}_T]
    2. 對每一個圖,都進(jìn)行卷積操作:z_t = y(\eta , W)*x_t
    3. 卷積過后再用全連接層處理,得到一個輸出向量g_t
    4. 最后把所有的輸出向量合并起來G=concat[g_1,g_2,...,g_T]
  1. GCNN的輸出
    對于2的輸出結(jié)果,用熵函數(shù)作用后,就得到了我們的reward(訓(xùn)練時作為reward, 測試時作為標(biāo)簽)

算法和實驗

Selection_080.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容