基于人体骨架序列的视频行为识别

整体思路

Reference: Yan S, Xiong Y, Lin D. Spatial temporal graph convolutional networks for skeleton-based action recognition[C]//Thirty-Second AAAI Conference on Artificial Intelligence. 2018.

fig1. ST-GCN architecture

1. 基于 OpenPose 的 2D 多人 姿态/骨架 估计

  • 输入:RGB image 或者 video sequence
  • 输出:人体关节点位置和可信度 (x, y, confidence)

OpenPose 总共估计人体 18 个关节点,关节点顺序和名称如下图:

fig2. OpenPose 18 joints

2. build Spatial-Temporal Graph on skeleton sequence

  • Nodes: V = \{ v_{ti} | t = 1, ...,T, i=1,...,N \}
    T 表示 skeleton sequence 帧数,即 T 个时刻,N 表示N个人的骨架
    t 表示 temporal 联系,inter-frame;i 表示 spatial 联系,intra-skeleton

  • Feature vector on a node F(v_{ij}) = (x,y, confidence)

  • Edges = spatial + temporal
    E_S = \{ v_{ti}v_{tj}|(i,j)∈H \} intra-skeleton, H 表示 joints in a skeleton,如 fig2 OpenPose 关节点的连接方式
    E_F = \{ v_{ti}v_{(t+1)i} \} inter-frame,连续帧之间的对应关节点连接起来

fig3. Spatial-Temporal Graph of a skeleton sequence

注:spatial graph 理解为单帧中的骨架图,temporal graph 为多帧之间相应关节点的连接图

3. Graph Convolution details

3.1 传统图像在坐标点 x 位置的 conv

f_{out}(x) = \sum_{h=1}^{K}\sum_{w=1}^{K}f_{in}(p(x,h,w)) · w(h,w)

  • f_{in}, f_{out}:input, output feature map
  • p(x,h,w):表示位置 xh × w 邻域
  • w(h,w):表示邻域内相应位置点的权值
3.2 图卷积在顶点 v_{ti} 位置的 conv
  • f_{in}:input feature map
    对于图卷积,f_{in}^{t}: V_t → R^c 表示 t 时刻输入的 feature map,即为 t 时刻的 spatial graph V_t,而 R^c 表示图中顶点的 feature vector 有 c 个通道。
    定义完输入的 feature map 后,再定义邻域采样函数 p(v_{ti},v_{tj}) 和权值函数 w(v_{ti},v_{tj}) 就能完成卷积运算了,这里 pw 表示方法与传统 Conv 不同。

  • p(v_{ti},v_{tj}) 邻域采样函数
    B(v_{ti})= \{ v_{tj}|d(v_{tj},v_{ti}) \leq D\}

    • d(v_{tj},v_{ti})v_{tj}v_{ti} 的最短路径 / 边数,hops
    • D=1:只将直接相连的邻接点作为邻域
  • w(v_{ti},v_{tj}) 权值函数
    l_{ti}:B(v_{ti}) → \{ 0, ..., K-1\}

    1. 邻域 B(v_{ti}) 分成 K 个子集(注意这里的 K 和前面传统卷积的 K 同样表示卷积的 kernel size)
    2. 子集中 nodes 分别赋上数值权值,这里为子集编号(图卷积中叫 labeling,即给每个 node 打分类标签)code 中用 size = (c, K) 的 tensor 表示,类比传统卷积权值 (c, K, K)

注:划分 K 个子集,同一个子集内的节点采用相同的权重,从而实现权重共享。可按照邻域 path 划分,也可按照节点距离重心的远近划分,见 part 4

3.3 Spatial Graph Convolution 空域图卷积

f_{out}(v_{ti}) = \sum_{v_{ti}∈B(v_{ti})} \frac{1}{Z_{ti}(v_{tj})} f_{in}(p(v_{ti},v_{tj})) · w(v_{ti},v_{tj})

  • Z_{ti}(v_{tj}):标准化因子,领域顶点 v_{tj} 所在的子集中的顶点总个数

上述公式样式仍然偏向传统图像卷积,进一步转化为图卷积样式:

f_{out}(v_{ti}) = \sum_{v_{ti}∈B(v_{ti})} \frac{1}{Z_{ti}(v_{tj})} f_{in}(v_{tj}) · w(\color{red}{l_{ti}(v_{tj})})

  • v_{tj}:邻域顶点
  • l_{ti}(v_{tj}):给邻域顶点 打标签/赋权值 函数
3.4 Spatial Temporal Modeling 时空图卷积

时空邻域采样函数:空域连接 扩展到 时域连接,单帧扩展到多帧
B(v_{ti})= \{ v_{qj}|d(v_{tj},v_{ti}) \leq K, |q - t| \leq \lfloor \Gamma /2 \rfloor \}

  • 邻域 v_{tj}v_{qj},不限于单帧
  • 上限 dDK
  • \Gamma:temporal range, temporal kernel size,本文 = 9

时空邻域权值函数:划分子集 labeling 扩展到时域
l_{ST}(v_{qj}) = l_{ti}(v_{tj}) + (q-t+\lfloor \Gamma /2 \rfloor)×K

4. 划分子集 & labeling

labeling 体现了 将邻域的特征聚合到当前节点 的一种规则。

  • (b) Uni-labeling 同一标注权值
    邻域内所有 nodes 权值一样,没有局部差异性 local differential properties
    labeling:令 K=1,则 l_{ti}(v_{tj})=0

  • (c) Distance partitioning 距离划分 distance to root joint
    具有局部差异性,但是缺乏子集 joints 相对全局的位置关系,即不能反应子集 joints 处于人体的哪块区域
    labeling:令 K=2,则 l_{ti}(v_{tj})=d(v_{tj},v_{ti}) 可取值:0 或 1

  • (d) Spatial configuration partitioning
    骨架 joints 运动可分为向心和离心,可将 nodes 分为 3 组:
    l_{ti}(v_{tj}) = \begin{cases} 0 & \text{if } r_j = r_i\\ 1 & \text{if } r_j < r_i\\ 2 & \text{if } r_j > r_i \end{cases}

    其中 r_j 是邻域 joint 到黑色十字 × 的距离,r_j 为 root joint

综上所述,邻域 joints 子集的划分特点:

  1. 既能保留局部信息,又能涵盖全局信息
  2. 邻域权重划分更加多样性

5. Implementing ST-GCN

5.1 邻接矩阵

对于 (c)(d) 划分,邻接矩阵 A 被分成了不同子集 \sum_jA_j
f_{out} = \sum_j \Lambda^{-\frac{1}{2}} A_j\Lambda^{-\frac{1}{2}}f_{in}W_j

  • (c)A_0, A_1
  • (d)A_0, A_1, A_2

添加 mask MA_j \otimes M,学习不同邻接点对 root 的权重影响

5.2 网络结构
"9 ST-GCN units,temporal kernel size = 9 感受野"
# out 64 channels
ST-GCN
ST-GCN
ST-GCN
# out 128 channels
ST-GCN  # stride = 2,时域下采样,2 frame -> 1frame
ST-GCN
ST-GCN
# out 256 channels
ST-GCN  # stride = 2,时域下采样,2 frame -> 1frame
ST-GCN
ST-GCN
"Global Pooling, feature map -> 256 dimension feature vector"
GAP
"Softmax classifier"
softmax
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容