多模态的动作识别 - Learning Video-Pose Embedding for Activities of Daily Living 的 论文解读 和 代码解析

随着人工智能发展,人体动作识别成研究热点。本文分享基于RGB视频和骨架序列的动作识别论文VPN,该论文用从骨架信息学到的注意力权重对原视频信息加权处理后分类。详细介绍了读取I3d模型、用GCNN提取特征、生成时空注意力权重等步骤,最后完成模型构建。


前言

“察言观色”是正常人类的基本生活交流能力,对人类动作和行为的分析和理解是现代心理学的主要研究内容之一。
随着人工智能的发展和人类计算能力的提升,人体动作识别逐渐成为计算机视觉以及图像处理领域的研究热点之一,该方向不仅拥有重要的理论研究价值,还有着广泛的应用前景。其主要原因是人体动作识别在人机交互、健康监护、智能安防、视频分析等研究领域中的潜在应用价值。
多模态机器学习 Multi-Modal Machine Learning (MMML),旨在构建可以处理和关联来自多种模态信息的模型。
基于视觉的人体动作识别作为计算机视觉领域的研究热点,近
年来得到了研究者们的持续的关注。按照视觉传感器的不同,其又可以细分为基于 :
在这里插入图片描述


今天我们分享一篇基于RGB视频和骨架序列的动作识别论文 VPN: Learning Video-Pose Embedding for Activities of Daily Living,,为ECCV2020收录,在多模态的动作识别中达到了SOTA(最好的成绩),Github开源。

地址如下:
srijandas07/VPN: Pose driven attention mechanism
https://github.com/srijandas07/VPN

一、这篇论文讲了?

我的一句话总结:

用 从骨架信息 中学习到的 注意力权重 去对 原视频信息做一个加权处理。再用这个数据做分类。

二、详细说明

1.原文摘要翻译

在这篇文章中,我们关注的是日常生活活动Activities of Daily Living (ADL)认知的时空层面。ADL有两个特点:微妙的时空模式和(Ii)随时间变化的相似视觉模式。因此,ADL可能看起来非常相似,通常需要查看它们的细微细节来区分它们。由于目前的时空3D ConvNet过于僵化,无法捕捉动作中微妙的视觉模式,我们提出了一种新颖的视频-姿势网络:VPN。

该VPN的两个关键组成部分是空间嵌入和注意力网络

空间嵌入将3D姿势和RGB线索投影到共同的语义空间中。这使得动作识别框架能够利用这两种模式更好地学习时空特征。为了区分相似的动作,注意力网络提供了两个功能-
(1)利用人体拓扑的端到端可学习姿势骨干(an end-to-end learnable pose
backbone exploiting the topology of human body)
(2)在视频上提供联合时空注意力权重的耦合器。(a coupler to provide joint spatio-temporal attention weights across a video)
实验表明,VPN在大规模人类活动数据集NTU-RGB+D120及其子集NTU-RGBD60、丰田Smarthome和小规模人-物交互数据集Northwest UCLA上的动作分类性能优于最先进的结果。
在这里插入图片描述
图::我们的模型以RGB图像及其相应的三维姿势作为输入。RGB图像由视觉主干处理,生成时空特征映射(f)。提出的VPN以feature map(f)和三维姿态(P)为输入。VPN由两部分组成: 一个注意力网络和一个空间嵌入。
注意网络还包括一个姿势主干和一个时空耦合器(a Pose Backbone and a spatio-temporal Coupler)。
VPN计算一个模拟的特征映射f’。然后使用该调制特征图f’进行分类。

话不多说我们直接看代码:(示例):

def embed_model_spatio_temporal_gcnn(n_neuron, timesteps, num_nodes, num_features,
                                     graph_conv_filters_shape1, graph_conv_filters_shape2,
                                     num_filters, num_classes, n_dropout, protocol):
	#------------------------------------------------------------------#								 
	#读取I3d预训练模型,用于处理NTU中的视频信息,获得视频中的动作特征f。								 
    i3d = i3d_modified(weights = 'rgb_imagenet_and_kinetics')
    model_branch = i3d.i3d_flattened(num_classes = num_classes)
    '''
    if protocol == 'CS': # to be replaced with the values in the yaml file
       model_branch.load_weights('/data/stars/user/sdas/PhD_work/STA_appearance/NTU_CS/i3d/weights_ntu_aug_4/epoch_7.hdf5')
    else:
       model_branch.load_weights('/data/stars/user/sdas/PhD_work/CVPR20/NTU_120/I3D/weights_ntu_set_i3d_full_body/epoch_12.hdf5')
    '''
    optim = SGD(lr=0.01, momentum=0.9)
    model_branch.compile(loss='categorical_crossentropy', optimizer=optim, metrics=['accuracy'])
    print('Build model...')
	
	#------------------------------------------------------------------#
	#使用GCNN提取骨骼点的空间和时间特征,获得h*
    model_inputs=[]
    model_gcnn = GCNN_skeleton_t16(num_nodes, num_features, graph_conv_filters_shape1,
                               graph_conv_filters_shape2, num_filters, num_classes,
                               n_neuron, n_dropout, timesteps)#建立GCN模型
							   
    #------------------------------------------------------------------#
	#h*,即代码中的model_gcnn.get_layer('gcnn_out').output
    z1 = Dense(256, activation='tanh', name='z1_layer', trainable=True)(model_gcnn.get_layer('gcnn_out').output)#获得z1
    z2 = Dense(128, activation='tanh', name='z2_layer', trainable=True)(model_gcnn.get_layer('gcnn_out').output)#获得z2

    fc_main_spatial = Dense(49, activity_regularizer=attention_reg, kernel_initializer='zeros', bias_initializer='zeros',
                    activation='sigmoid', trainable=True, name='dense_spatial')(z1)#处理z1,获得空间特征fc_main_spatial
    fc_main_temporal = Dense(2, activity_regularizer=attention_reg, kernel_initializer='zeros',
                            bias_initializer='zeros',
                            activation='softmax', trainable=True, name
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值