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

如上圖所示,給定一個輸入:vedio,然后最終目的是輸入一個標(biāo)簽?zāi)芘袛噙@個視頻中的模型在做什么動作。
思路簡單概括為:
- 我們的輸入是一段視頻,視頻中有多個幀。
- 我們想用RL的算法來選擇關(guān)鍵幀(本文是FDNet)
- 再把選取到的關(guān)鍵幀輸入到GCNN網(wǎng)絡(luò),得到這個vedio的標(biāo)簽
二: 定義問題的決策鏈
由于要用RL來解決問題,那么就需要先把問題轉(zhuǎn)化為一個決策鏈的問題
- 已知輸入的是含有多個幀的一段視頻,但我們不要全部用到全部幀數(shù)
- 所以我們想提取關(guān)鍵幀,設(shè)定提取的關(guān)鍵幀數(shù)為m,把這m個關(guān)鍵幀按序號排序,每一個action表示這些關(guān)鍵幀是要向左移動,向右移動或是保持當(dāng)前位置。
- 設(shè)定迭代步數(shù),當(dāng)程序迭代步數(shù)達(dá)到設(shè)定值時,就停止程序

三: State and Action
State
針對選關(guān)鍵幀這個MDP問題,狀態(tài)S可以表示為:
\{S_a, S_b\}-
即它由來兩部分組成,其中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 對于M就表示所有被提取的關(guān)鍵幀信息,用一個形如m\times N \times 3的張量表示,其中m表示關(guān)鍵幀的數(shù)目
-
最后S_bone-hot, 它對應(yīng)到整個視頻的每一幀,如果對應(yīng)的元素值為1,那么說明該幀被提取為關(guān)鍵幀,其余則為0
Selection_077.png
Action
action的動作由FDNet輸出
action的定義比較簡單:
- 幀向左移動
- 幀向右移動
- 幀保持不動
現(xiàn)在,我們打開看一下FDNet網(wǎng)絡(luò)的結(jié)構(gòu)

上圖的執(zhí)行流程如下
- S_b經(jīng)過一個全連接層得到一段向量
- S_a經(jīng)過3層卷積后,在經(jīng)過一層全連接層得到另一段向量
- 將上面兩個結(jié)果合并起來,通過一個全連接層輸出結(jié)果
- 輸出的結(jié)果由3個3個神經(jīng)元組成,每一組神經(jīng)元表示對應(yīng)關(guān)鍵幀的action分布
四: Reward function

在本文的算法框架下,reward是由GCNN產(chǎn)生的(GCNN是什么下面說)
GCNN拿m個關(guān)鍵幀作為一個輸入
初步的reward可以表示為:r_0 = sgn(P_{n,c} - P_{{n-1},c})
其中c是視頻標(biāo)簽的ground truth此外,我們還需要對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)出拍手這么個動作信息

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


