APP下载

融合骨骼数据的弱监督视频行为检测方法研究

2022-08-24党源杰宦若虹

小型微型计算机系统 2022年8期
关键词:骨骼算法特征

陈 朋,王 顺,党源杰,宦若虹

1(浙江工业大学 计算机科学与技术学院,杭州 310023)

2(浙江工业大学 信息工程学院,杭州 310023)

E-mail:huanrh@zjut.edu.cn

1 引 言

近年来,人体行为检测技术已经成为计算机视频理解方向的一个重要研究内容,在机器视觉、人工智能、监控安防等领域有着广泛的应用[1].相比于行为分类,行为检测难度更高,它不仅需要将行为分类,还需要定位视频中可能存在行为的视频段.定位存在人体动作的视频段是一个更加艰巨的任务,行为检测所用的未剪辑视频包含大量与目标动作无关的帧,这些技术在提取视频信息方面存在困难[2].其主要难点有:1)界限不明确.视频中动作的确切范围没有明确的定义,所有动作的开始和结束时间常常无法给出一个准确的边界;2)时间信息.在视频行为检测中,是无法只使用静态图像信息的,必须结合时序的信息;3)大时间跨度.视频行为片段的时间可以从几秒到数十分钟,巨大的时间跨度,也使得检测时序动作非常难.

视频人体行为检测的方法主要有传统方法和深度学习的方法.在传统方法中,所用特征都是基于人工定义的.有几种方法可以提取包含静态图像特征和时序视觉的视频特征.静态图像特征有SIFT(Scalelnvariant Feature Transform)[3]和HOG(Histogram of Oriented gradient)[4]等,而时序视觉特征是静态图像特征与时间信息的组合,通过这些特征,可以获得视频的时序信息.基于特征点追踪的一些特征提取方法中,经典的方法是稠密轨迹(Dense Trajectories,DT)[5].考虑到摄像机的运动导致网络提取了与人类行为无关的DT特征,随后提出改进型的稠密轨迹(Improved Dense Trajectories,iDT)[6]方法.现在,深度学习方法已经日渐流行,但传统特征提取方法的研究过程和思路都是非常有用的,因为这些方法具有很强的可解释性.它们为设计解决这类问题的深度学习方法提供了启发和类比的思路.

基于深度学习的行为检测方法大致可以分为two-stage和one-stage两种.two-stage模型首先提取时间间隔,然后进行分类和回归操作,检测速度比one-stage方法慢但准确率高.这种方法是主流方法,所以大多数论文都采用这种方法.2016年,S-CNN[7]是第一个通过固定一定大小的滑动窗口来生成不同大小的视频片段,然后通过多级网络(Segment CNN)进行处理的方法,但该方法过于冗余.Yuan等人提出的PDSF(Pyramid of Score Distribution Features)[8]首先使用分数分布特征金字塔,在以每个检测窗口为中心的多种分辨率下捕获运动信息,其次,通过将PSDF集成到最新的递归神经网络中来进一步探索帧间一致性.Singh等人[9]的算法将帧级别的二进制分类与动态编码结合起来,以生成时间精简的动作建议,在2016年的ActivtiyNet检测挑战赛中获得ActivtiyNet检测挑战赛亚军.Xiong等人[10]提出一个通用框架,可以有效地生成具有准确时间边界的候选对象,其级联的分类管道可以明确地区分候选动作实例的相关性和完整性.Xu等人[11]2017年提出一个新的框架(R-C3D)来对于任意的输入视频,先进行时序片段的提取,然后使用3D-pooling,最后进行分类和回归操作.2018年Lin等人[12]提出BSN(Boundary Sensitive Network)网络,BSN首先局部定位具有高概率的时间边界,然后将这些边界直接合并为片段.在全局范围内,BSN可通过评估片段是否在其区域内包含某个动作的置信度来检索片段.另一种是one-stage框架,可以同时解决分类和定位问题,检测速度较快但准确率比two-stage方法低.例如,2017年Lin等人[13]提出了SSAD(single shot temporal action detection).

为了提取更有效的特征,研究人员结合骨骼信息进行行为识别与检测[14].Li等人[15]提出了一种端到端卷积共现特征学习框架.共现特征是通过分层方法学习的,在该方法中,逐渐汇总了不同级别的上下文信息.首先,每个关节的点级信息被独立编码,然后将它们组合成时空域中的语义表示.Feng等人[16]提出了垂直与RNN(Recurrent Neural Network)[17]模型增强的通用框架.对于行为检测还有其他一些相关方法或应用,如许等人[18]将深度图与骨骼数据结合进行行为识别;华等人[19]提出一种基于骨骼数据的多流卷积行为识别方法;秦等人[20]进行时序行为检测算法研究,提出端到端和非端到端两种行为检测框架.

上述方法均为有监督的学习方法,通常不仅需要对视频中动作类别进行标注,还需要对动作区间进行时间注释,这在大规模操作中是非常昂贵和费时的.在数据爆炸的当下,数据标注的成本越来越高,为了减少人工标注工作量,弱监督的行为检测的方法逐渐成为研究热点.弱监督方法中只需要对视频进行类别标注而不需要进行时间标注,这大大减小了数据标注成本.在弱监督时序行为检测方面,Wang等人[21]提出的UntrimmedNet网络比较正式地提出“弱监督的动作识别与时序检测”这两个任务,引领了后来基于这两个任务的一系列工作.Nguyen等人[22]提出STPN(Sparse Temporal Pooling Network)网络,首次提出了时序类别激活图(Temporal Class Activation Map,T-CAM)进行动作定位.Xu等人[23]把弱监督的视频时序检测视为一个“多实例多标签(multi-instance multi-label,MIML)问题”,用循环神经网络来建模.这些弱监督方法大多直接检测视频或将视频转为RGB与光流图进行检测,而光流数据易受背景,光照等影响,不能提取较好的视频特征来进行动作表示,在以行人为主的实际场景下很难发挥较好的效果.

为了提取更有效的视频特征,受骨骼数据的启发,本文提出一种基于改进STPN算法的弱监督行为检测的方法(S-STPN).该方法用OpenPose[24]提取视频中的骨骼数据,并将其融入弱监督行为检测框架STPN中,利用循环神经网络RNN提取骨骼的时序信息,得到更有效的人体运动特征,同时克服了环境变化对目标运动特征的影响.实验结果表明,本文将骨骼数据与RGB数据结合进行行为检测的方法能有效提升准确率,并减少数据标注.

2 算法总体设计

STPN算法提出了一种使用卷积神经网络对视频进行弱监督的动作定位算法.该算法通过学习视频级别的类别标签,预测人类动作的时间间隔,而不需要时间定位标注.STPN将视频分别提取RGB与光流数据,并将其各自均分为T个片段,使用UntrimmedNet或I3D[25]网络提取特征,然后提取的特征经过注意力模块(Attention module)来识别视频中与目标动作相关的关键片段的稀疏子集,最后能够得出每个片段在预测分类标签过程中的权重.在定位时,从两个输入数据流分别计算时序类别激活图(T-CAM)并加权和为一个T-CAM的值,使用它们来生成一维的时间动作间隔.从该间隔中目标动作被定位到时间域从而实现目标动作的定位.该算法使用了稀疏损失函数和分类损失函数进行更新.

本文在STPN的基础上,以人体骨骼数据和RGB图像数据作为网络输入.将视频经过OpenPose算法提取相应的人体骨骼信息,骨骼数据使用循环神经网络RNN提取人体行为的时域特征,RNN后加入FC全连接层,用来输出网络所需的特征向量,以此实现在STPN的基础上提取更有效的特征信息.RGB图像特征和人体骨骼特征独立地构成了两种定位模型被同时用于人体动作的识别,从而进一步提取更有效的特征信息.具体算法框架如图1所示.S-STPN算法主要分为4个部分,第1部分,数据采集,包括RGB与骨骼数据,骨骼数据使用OpenPose算法提取;第2部分,特征提取网络,两类数据的特征提取,骨骼数据使用循环神经网络RNN提取骨骼的时域特征,RGB图使用I3D提取特征;第3部分,动作分类,两类数据分别进行行为分类再结合在一起形成类别标签;第4部分,动作定位,计算RGB与骨骼的T-CAM值,最后生成加权和T- CAM值,生成一维的动作时间间隔.图1中的局部网络如图2所示,两类数据的特征提取后送入局部网络进行相应处理.

2.1 数据采集

OpenPose是美国卡耐基梅隆大学(CMU)基于卷积神经网络开发的开源库.其可以实现人体动作、手指运动等姿态估计,适用于单人和多人,具有极好的鲁棒性,是首个基于深度学习的实时多人二维姿态估计应用,能对二维多关键点与三维单关键点实时识别.本文使用18个身体/脚部的关键点识别,模型如图3所示.对于骨骼数据,本文使用OpenPose提取视频中的骨骼,其作为网络框架的单独模块使用,只是用来提取视频中的骨骼信息.OpenPose是在COCO、MPII,、COCO+foot 这3个数据集上训练好的模型,用来提取骨骼时不需要对视频进行额外标注.提取时保存每个视频的每帧骨骼信息,每个关键点信息格式为(x,y,s),其中x、y为关键点的二维坐标,s为关键点的置信度得分.

图1 基于骨骼信息的弱监督行为检测系统框架Fig.1 Framework of weakly supervised action detection system based on skeleton

图2 弱监督行为检测系统局部化模型的网络结构Fig.2 Network structure of the localized model of the weakly supervised action detection system

图3 18个身体关键点模型Fig.3 Model of 18 key points of the body

整个视频中只保留下行人的骨骼信息,所有的背景、光照变化都消除,对后续的特征提取更加有利.对于RGB图,以每秒10帧的采样率对视频进行二次采样,在对视频进行采样之后,将其重新缩放使帧的最小尺寸等于256,同时保留宽高比,然后提取RGB图像,对224×224区域进行中心裁剪.

骨骼提取时的具体效果如图4所示.对于低速、距离较近、无遮挡的人体行为骨骼提取的较为完整.OpenPose具有良好鲁棒性,对遮挡视频仍能检测出相应的骨骼,但仍有少数快速且距离较远、身体折叠的行为提取骨骼时效果不是很理想.

2.2 特征提取网络

循环神经网络RNN是一类具有短期记忆能力的神经网络,适合用于处理视频、语音、文本等与时序相关的问题.RNN通过使用带有自反馈的神经元,使得网络的输出不仅和当前的输入有关,还和上一时刻的输出相关.于是在处理任意长度的时序数据时,RNN就具有短期记忆能力.用公式来描述RNN隐状态的计算过程,假设在时刻t,网络的输入为xt,隐状态(即隐藏层神经元活性值)ht不仅和当前时刻的输入xt相关,也和上一个时刻的隐状态ht-1相关,进而与全部过去的输入序列(x1,x2,…,xt-1,xt)相关,具体如公式(1)和公式(2)所示.

Zt=Uht-1+Wxt+b

(1)

ht=f(Zt)

(2)

其中Zt是隐藏层的净输入;f(·)是非线性激活函数,通常为Sigmoid函数或Tanh函数;U是状态-状态权重矩阵,W是状态-输入权重矩阵,b为偏置.

在RGB流中,STPN网络使用I3D对RGB数据进行特征提取.I3D网络在kinetic数据集上进行预训练后作为特征提取器,其输入是16帧的堆栈,最终输出1024维的特征向量.本文设定与RGB图对应的16帧的人体骨骼信息作为一个片段输入到RNN中进行特征提取.骨骼序列输入到RNN后,经过处理保存RNN中最后一层隐藏层ht的信息,将其送入全连接层FC中.后续网络中所需的特征大小为1024,为了与后续网络保持一致,FC设置为1024个节点,输出网络所需大小的特征向量.

2.3 动作分类

如图2中所示,RGB与人体骨骼数据提取的若干片段的特征向量,分别输入到注意力模块计算每个片段的注意力权重(λ1,…,λt)T,(t是采样视频片段的总数.注意力权重向量λ以一种与类别无关的方式定义,这有助于识别与所有感兴趣的动作相关的片段,并估计检测到的动作的时间间隔),并将每个片段的注意力权重λ与原片段特征向量相乘后再相加形成最后的加权和特征向量,以此创建视频级表示,如公式(3)所示.

=∑T1λtXt

(3)

图4 骨骼提取实际效果Fig.4 Actual effect of skeleton extraction

网络的损失函数由分类损失和稀疏损失两部分组成.如公式(4)所示,Lc表示在视频级分类标签上计算的分类损失,Ls表示注意力权重的稀疏损失,β是控制两个损失函数之间的权衡的常数.

L=Lc+β·Ls

(4)

2.4 动作定位

STPN为了识别与目标动作相对应的时间间隔,在时间域中导出了一维特定类的激活图,称为时序类别激活图(T-CAM).设wc(k)表示最终全连接层的权重参数wc中的第k个元素,其中上标c表示特定类别的索引.类c的最终Sigmoid层的输入如公式(5)所示.

Sigc=∑mk=1wc(k)X-(k)

=∑mk=1wc(k)∑Tt=1λtxt(k)

(5)

=∑Tt=1λt∑mk=1wc(k)xt(k)

T-CAM,定义为at=(a1t,a2t,…,aCt)T, 表示在时间步长t处的表示与每个类别的相关性,其中每个元素act对应于类别c(c=1,…,C),如公式(6)所示.

act=∑mk=1wc(k)xt(k)

(6)

对于输入视频,根据视频级分类分数识别相关的类别标签(2.3节).对于每个相关的动作,生成时间间隔,即一维时间间隔,以及它们的特定类的置信度分数,对应于可能包含目标动作的片段.为了生成时间间隔,基于公式(6)分别计算由act,RGB、act,Ske表示的RGB流与骨骼流的T-CAM,并使用它们导出加权T-CAM,φct,RGB和φct,Ske,如公式(7)和公式(8)所示.

φct,RGB=λt,RGB·sigmoid(act,RGB)

(7)

φct,Ske=λt,ske·sigmoid(act,Ske)

(8)

其中λt是稀疏向量λ的元素,并且乘以λt可以被解释为选择来自注意力模块的Sigmoid函数的值.对加权的T-CAM,φc(t,RGB)和φC(t,Ske)进行阈值处理,以分割这些信号,时间间隔是从每个数据流中提取的一维连接分量.使用加权的T-CAM而不是直接从注意力权重生成动作间隔,因为每个间隔都应该包含单一类型的动作.在进行阈值操作前可对采样段之间的加权T-CAM信号进行线性内插,以最小的计算量提高时间间隔的分辨率.

保留所有通过预定义阈值的连接分量,为每个间隔[tstart,tend]分配每个类别c的分数,该分数由间隔内所有帧的加权平均T-CAM给出,如公式(9)所示.

∑tendtstartλt,*α·act,RGB+1-α·act,Sketend-tstart+1

(9)

其中*∈{RGB,Ske},α是控制两个模态信号幅度的参数.最后,在每个类别的时间间隔之间独立地执行非最大值抑制,以去除高度重叠的检测.

3 实验结果与讨论

3.1 数据集与评估

本文在THUMOS14(1)https://www.crcv.ucf.edu/THUMOS14/download.html和ActivityNet 1.3[26]数据集上对S-STPN进行了评估.这两个数据集都是未剪辑的,这意味着视频包括不包含动作的帧.THUMOS14数据集在其训练、验证和测试集中共有101个动作类的视频级标注,在其中20个类的验证集与测试集中有一个带有时间标注的视频子集.本文使用这20个类视频子集中的验证子集来训练模型且不使用时间标注,该子集由200个未裁剪的视频组成的.使用这20个类视频子集中的测试子集对本文的算法进行了评估,测试集含有212个带有时间标注的视频.这个数据集具有挑战性,因为视频的长度变化很大(几秒至26分钟不等).其中编号为270与1496的视频带有错误标注,本文给予排除.

ActivityNet1.3是目前视频行为检测方向较大的数据集,包含分类和检测两个任务.ActivityNet1.3涵盖了200种不同的日常活动,ActivityNet1.3包含20000个未修剪的Youtube视频(训练集包含约10000个视频,验证集和测试集各包含约5000个视频),共计约648小时的视频,平均每个视频上有1.5个动作实例(action instance).本文使用ActivityNet1.3数据集中的测试集.

给定测试视频,系统输出动作片段预测,每个预测都包含动作类、开始时间和结束时间以及置信度分数.在0.1~0.9不同的IoU阈值下使用mAP值来评估算法.只有当预测的类正确且超过IoU评价阈值时,每次预测才被认为是正确的.

3.2 实验设置

为了对不同研究方法进行比较,本文与STPN采用相同的视频预处理过程.对于RGB流,本文对I3D网络在Kinetic数据集上进行预训练处理,将帧的最小维度重新缩放为256,并执行大小为224×224的中心裁剪.对于骨骼流,本文采用OpenPose算法提取骨骼信息.RGB流中,I3D模型的输入设置为/以每秒10帧的速度采样的16帧的堆栈;因此骨骼流中,本文设置每16帧的骨骼信息作为一个片段输入RNN中进行特征提取(RNN设置为3个隐藏层).本文从每个视频中均匀采样400个片段进行特征提取.整个网络使用ADAM(Adaptive moment estimation)优化器进行训练,两个流的学习率均为10-4.本文实验环境为TITAN Xp GPU(12G)的服务器、Tensorflow框架.

3.3 实验结果与分析

为了验证提出的网络框架的有效性与合理性,本文在THUMOS14数据集上与其他一些先进的行为检测方法进行了对比实验,结果如表1所列,表中既包含了有监督方法,也包括了弱监督的方法.弱监督方法中,UntrimmedNet直接使用视频片段作为输入,使用分类模块和选择模块来分别学习动作模型和有关动作实例持续时间.表1中可以看到本文算法的mAP比UntrimmedNet提高近6.8%,证明本文采用的RGB与骨骼数据结合的双流法比UntrimmedNet具有更高的准确率.与STPN算法相比,提高了0.9%左右的精度,由此证明了本文将人体骨骼信息与RGB图结合的方式能够提高准确率,与STPN中光流数据与RGB图结合的方式相比取得了更好的结果.

表1 在不同IoU阈值下本文的算法与其他算法在THUMOS14测试集上的比较Table 1 Comparison of the algorithm in this paper with other algorithms on the THUMOS14 test set under different IoU thresholds

在一些有监督方法中虽然表现的差异性很大,但是本文的算法也表现出与几种有监督的方法相当的性能.实验结果表明,本文算法精度比S-CNN高0.89%,比PSDF高近1.36%.虽然低于SSAD、R-C3D、BSN算法的精度,但是本文算法少使用了视频的时间标注,节约了数据标注成本.表中的加粗数字代表了弱监督及有监督方法中的最优值.

如表2所列,我们将本文算法与STPN以及其他有监督算法在ActivityNet1.3测试数据集上进行实验.结果显示本文算法的mAP比STPN提高了1.05%,取得了更好的精确度.有监督算法中,本文算法比Singh等人的算法提高3.5%的精确度.虽然低于其他几个有监督算法的精度,但同样减少了数据的标注成本.

如表3所列,本文算法与一些有监督算法以及STPN在ActivityNet1.3验证数据集上进行实验.结果显示本文算法的mAP比STPN提高了0.96%,取得了更好的精确度.有监督算法中,本文算法在IoU为0.5较R-C3D时提高3.9%的精确度,低于其他两个有监督算法,但同样减少了数据标注.

S-STPN算法在THUMOS14和ActivityNet1.3数据集的实验结果均验证了本文网络具有比STPN更好的检测性能.在ActivityNet1.3数据集上训练实验效果优于THUMOS14数据集上的实验效果.其原因可能是ActivityNet1.3中的样本数据量比THUMOS14的更大,能够更充分的训练网络模型.ActivityNet1.3中平均每个视频只有1.5个动作示例,因此提取的人体骨骼信息与RGB信息更加完整,S-STPN可以提取更有区分度的特征,从而提升网络的检测性能.

表2 本文算法与不同算法在ActivityNet1.3测试数据集上的实验对比Table 2 Experimental comparison of the algorithm in this paper and different algorithms on the ActivityNet1.3 test data set

表3 在不同IoU阈值下本文算法与不同算法在ActivityNet1.3验证数据集上的实验对比Table 3 Experimental comparison of the algorithm in this paper and different algorithms on the ActivityNet1.3 validation data set under different IoU thresholds

同时,本文还验证了RGB模块与骨骼模块对网络的影响,消融实验在THUMOS14数据集上进行.本文使用特征提取网络来生成动作时间间隔和计算注意力权重,还结合这两种方式来评价这些间隔.如图5所示,在不同IoU阈值下分别说明了RGB模块与骨骼模块的作用以及它们组合的效果.以IoU阈值为0.5为例,当仅使用RGB数据进行行为检测时AP为10.8,而仅使用骨骼数据时AP达到15.3,骨骼数据相较于RGB数据可以提供更多用于行为检测的信息,来提升行为检测的精度.当两种模块结合到一起时,AP达到了18.5,精确度得到了明显提升.

图5 不同数据流在网络中的表现Fig.5 Performance of different data streams in this network

3.4 局限性分析

本文首次尝试将骨骼信息融入弱监督行为检测框架,虽取得了良好的效果但仍存在如下局限性:1)本文使用OpenPose提取骨骼数据,由于少量视频的骨骼提取的不够理想,这可能影响检测精度;2)骨骼数据使用RNN进行时序特征提取,若使用更先进的特征提取网络则可能得到更好的特征表示,检测精度将进一步提升;3)在定位方面,本文存在着与多数论文共有的不足,定位动作时会将不是动作但和动作相关的帧一起定位出来,称为动作-上下文混淆(action-context confusion).这些局限性应为日后进一步研究的重点.

4 结束语

为了提取更有效的视频特征,本文提出一种基于人体骨骼数据的弱监督行为检测算法S-STPN.S-STPN用OpenPose算法将视频中的人体行为提取相应的骨骼信息,并使用循环神经网络RNN提取人体运动的时域特征,而后将提取的特征输入到全连接层中输出人体运动特征向量.人体骨骼运动特征和使用I3D网络提取的RGB图像特征共同输入动作检测和动作定位网络,生成加权特征和加权时序类别激活图(T-CAM)值后输出最终的动作分类和时域定位结果.实验结果表明,本文算法在THUMOS14数据集和ActivityNet测试数据集中比STPN算法分别提升了0.9%和1.05%的检测准确率,说明将RGB数据与骨骼数据相结合的方式能够改进算法性能.同时,S-STPN算法比有监督算法少使用了数据的时间标注,节约了数据标注成本.

猜你喜欢

骨骼算法特征
Travellng thg World Full—time for Rree
抓特征解方程组
不忠诚的四个特征
学习算法的“三种境界”
算法框图的补全
算法初步知识盘点
3D打印骨骼指日可待
骨骼是如何生长的
神奇的骨骼
春天来啦(2则)