论文讲解——Human Activity Recognition with Posture Tendency Descriptors on Action Snippets

问题:Human Activity Recognition

•解决temporal pyramid应用于从序列中提取特征后会破坏骨架序列中有意义动作片段的几何结构。

•提出一种新的序列分割算法,可以很好的解决temporal pyramid存在的问题,进一步提高动作检测的准确度。

•提出一个可解释可区分的描述符posture tendency descriptor,用于表现一个动作片段。

技术动机:

•广泛用于捕捉时间动态信息的temporal pyramid 方法存在破坏骨架序列中有意义动作片段几何结构的现象。

   temporal pyramid方法:简单的将序列长度进行二等分,也可以进行多次二等分,形成四等分、八等分……,从而形成层次化的金字塔结构,计算每一个序列的特征然后按顺序拼接起来作为整个序列的特征。

   由于temporal pyramid是简单的等分,没有考虑动作与动作之间的关系,所以可能会破坏有意义的动作片段。

•Cov3DJ方法:计算整个序列的样本协方差矩阵作为序列的特征。然后采用temporal pyramid 方法,对分割出来的每个序列再次计算样本协方差矩阵求出特征,然后拼接形成整个序列的特征。

     Cov3DJ方法忽略了骨架序列的平均向量,而子序列的每个平均向量都可以看作是一个动作的主要姿态

     Cov3DJ方法中使用的协方差矩阵包含了一些冗余信息,使用矢量化协方差矩阵作为特征可能会影响描述符的识别能力。

     Cov3DJ方法使用的数据量过大,每一帧形成的协方差矩阵所含数据的数目就达到1830,根据temporal pyramid 方法分割序列,最后形成的序列特征所含数据数目达到7320,导致计算复杂度提高,耗时较大。

•现实假设:动作序列中相邻帧姿势更加相似,活动可以用几个动作片段来描述,将一个动作序列分成两个紧凑的动作片段。这种划分算法可以保持活动中动作片段的几何结构。

应用动机:

•动作识别有广泛的应用需求,包括视频监控、人机娱乐、医疗保健和社会救助等,已经成为计算机视觉领域的研究热点。尽管在过去的十年里人们做出了巨大的努力,但准确地认识人类行为仍然是一个具有挑战性的问题。

论文的贡献:

•提出了一种直观的分割算法,将动作序列分割成若干有意义的动作片段,保持动作中的几何结构,解决temporal pyramid应用于提取特征后会破坏骨架序列中有意义动作片段几何结构的问题

•设计了一个由主要姿态特征和主要动态趋势特征组成的具有可解释性和可区分性的姿态倾向描述器来表示动作片段。

•实验结果表明,该方法采用现成的分类算法,在多个基准数据集上取得了具有竞争力的性能。

论文的主要工作

  人体运动识别通常可以分为两个任务:时间片段特征表示和时间动态建模。论文也主要从这两方面进行展开。

1.姿势趋势标识符(Posture Tendency Descriptor)

作者提出了Posture Tendency Descriptor(PTD),去表现一个时间片段的动作特征。

具体的计算方法是:

(1)通过每一帧获取的骨骼点坐标信息,计算每一帧中,每个骨骼点与hip center joint 的相对位置关系即x、y、z坐标之间的差值。这就形成了每一帧的数据信息(3*J,其中J为骨骼点的数目),一个序列由多个帧组成,就形成序列的数据信息(F*3*J)。

(2)选取一个序列中的每一帧骨骼坐标的平均值,记为MPF(3*J)

(3)计算序列中,不同帧的样本协方差矩阵,并且将矩阵进行对角化,计算出特征向量以及特征值,选取最大的Top-T特征值所对应的T个特征向量记为MTF(T*3*J)。

(4)将MPF和MTF进行拼接就得到Posture Tendency Descriptor(PTD)。

2.层次化的时间分割算法

    考虑到只使用姿势趋势标识符(Posture Tendency Descriptor)会忽略时间片段中动作的顺序,作者提出了一个层次化的时间分割算法,对时间信息进行编码。

(1)预备知识

•k Sequential Neighbors (k-SN) Graph,根据相邻帧姿势相似的假设,将每一帧与它的前一帧以及后K帧连接起来,组成图结构,使用Dijkstra’s algorithm计算两帧之间的geodesic distance

•两帧之间的Euclidean distance,通过L2范式(两个向量各元素差的平方和然后求平方根计算得到)

•作者提出帧与帧之间局部线性度的概念,由两帧骨骼点数据的geodesic distance 除以Euclidean distance计算得到                 

•通过公式2可以计算出一个序列内部不同帧之间的平均局部线性度                                              

•片段连接的紧密性通过平均局部线性度进行衡量,局部线性度越接近1说明这个片段内部的帧连接更加紧密,在分割算法中应使得每一个片段内部帧连接比较紧密,而不同片段的帧连接不紧密。根据这个想法,作者提出层次化的时间分割算法。

(2)算法(将一个序列分割成两个动作片段)

•首先初始化,将序列的第一帧放入第一个片段,最后一帧放入第二个片段。然后双指针的思路,定义两个指针(L、R)分别指向序列的头和尾。

•计算两个片段内部的平均线性度,将较小的片段进行扩展,指针移动。如果片段平均线性度相等,则将片段较短的进行扩展。

•直到两个指针相遇,算法结束,序列被分割成两个动作片段。

(3)层次化

   应用一次算法,将序列分割成两个片段,可以对子序列进行再次分割,产生四个片段,形成层次化结构。每一个序列都可以计算它的姿势趋势标识符(PTD),所以原序列可以由自身的PTD以及分割之后子序列的PTD按照顺序共同表示。(更多的层次可以提高算法的区分能力,但是过多会产生过拟合现象,作者采用3层结构)


理解与看法

•作者从广泛使用的temporal pyramid 方法出发,发现这个方法的缺陷是可能会破坏骨架序列中有意义动作片段的几何结构。依据一个现实假设,动作序列中相邻帧的姿势更加相似,提出一个新的时间序列分割算法。

•作者分析Cov3DJ方法的优缺点,改善了其序列分割不合理、忽略平均向量和计算复杂度过大的缺点,同时借鉴了其使用协方差矩阵表示序列特征的方法。

•作者使用协方差矩阵最大的T个特征值所对应的特征向量作为序列的特征,因为这些向量所表示的方向是数据变化最大的方向,也是最主要的成分,这里和主成分分析法运用的方法相似,将本来序列这么多帧的数据进行降维,既可以减少计算的复杂度又可以提高模型的鲁棒性。

•作者使用骨骼点之间的相对位置关系而不是绝对位置坐标,可以提高模型的鲁棒性。

•对于论文中使用全部骨骼数据构造协方差矩阵的方法,我认为可以根据数据集的不同,选取部分骨骼数据构造协方差矩阵,比如说数据集中的运动是原地运动,那么在Kinect深度数据的情况下,Z坐标就可以不用考虑,可以减少1/3的数据量。如果数据集是手部运动或者上半身运动,那么就可以舍弃下半身的数据提高算法效率,同时也可以提高算法鲁棒性。

•对于分割算法,是否可以考虑增加中间指针,一次分割将序列分成三个动作片段呢?因为基于相邻帧姿势相似的特点,分割算法倾向于将离第一帧近的帧分到第一个片段,离末尾近的分到第二个片段,那么是否会存在中间某一段片段其实线性程度很高,但是被分割到不同片段的情况。

•我想到一个根据阈值分割的方法,可以从第一帧开始,按顺序将帧加入第一个序列,每次加入就计算一次序列的平均线性度,如果超过一定阈值,就说明这一帧与前面序列联系不紧密了,那么前面的帧就组成一个子序列,从这一帧开始重新进行上述算法直到序列分割完成。然后可以通过设定不同阈值的方法,形成层次结构。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容