system: [SYSTEM]

user: 3. 方法设计 基于轻量级的人体姿态估计和图卷积的摔倒实时检测方法的整体算法流程如图1所示。首先把实时的视频提取关键帧，然后把提取的关键帧图片输入到人体姿态估计模型中进行关节点检测。同时，根据检测出来的关节点生成目标跟踪框来进行目标追踪。然后，把同个跟踪ID的人的带有时序的关节点坐标序列输入到时空图卷积网络中。时空图卷积网络利用每个动作带有时序的坐标序列的前后变化特征进行动作分类，从而进行摔倒检测警告。 图1. 摔倒检测整体算法流程图 3.1. 轻量级人体姿态估计 为了整体算法模型能达到实时效果，需要将计算量较大的人体姿态估计模型进行优化，以达到实时检测的效果。本文参考文献 [ 13 ] [ 16 ] [ 17 ]，提出一种基于目标检测的两阶段轻量级人体姿态估计模型Lightweight Pose Detection Network。如图2所示，该模型基于目标检测的思想，先把统一尺寸后的图像分为 H × W 个网格，然后用CNN网络来预测每个网格的候选的关节点和其连接的肢体，接着对候选框进行非极大值抑制(NMS)操作，最后利用Hungarian Algorithm [ 22 ] 算法生成每个人的姿态。 图2. 人姿态估计算法流程图 其中，CNN网络有两个预测阶段，第一阶段网络主要预测细粒度的关节点，第二阶段网络是为了修正预测粗粒度的肢体连接，如图3所示。网络采用MobilenetV2 [ 23 ] 作为特征提取网络，然后经过两个3 × 3和一个1 × 1的卷积操作之后输出第一阶段局部特征的关节点预测结果与粗略的肢体连接预测结果。第二阶段为了修正属于全局特征的肢体连接预测，在特征网络输出的后面加入一层空洞卷积来增强感受野，并融合上一个阶段的关节点与肢体预测结果。特征融合之后，再经过两个3 × 3和一个1 × 1的卷积操作输出第二阶段修正的肢体预测结果。 图3. Lightweight Pose Detection Network的网络结构 CNN网络第一阶段的输出为 6 ( K + 1 ) + H ′ W ′ | L | 个通道。其中， 6 ( K + 1 ) 为关节点预测信息，K为要预测的关节点种类，6为每个预测关节点所包含的信息数量。关节点预测包含的信息由公式(1)所示： K k i = { p ( R | k ， i ) ， p ( I | R ， k ， i ) ， w k i ， h k i ， x k i ， y k i } (1) 其中， p ( R | k ， i ) 为第i个网格预测关节点k的概率； p ( I | R ， k ， i ) 为第i个网格预测关节点k的预测框与真实值的IoU； x k i ， y k i 为第i个网格预测关节点k的中心坐标相对于网格边界的距离； w k i ， h k i 为第i个网格预测关节点k的预测框的宽和高，如图4所示。 图4. 关节点与肢体预测示意图 其次， H ′ W ′ | L | 为肢体预测的信息，其中， | L | 为肢体的种类， H ′ W ′ 为两个关节点连接的肢体范围，如图4所示。预测肢体连接的概率由公式(2)所示： L k 1 k 2 = { p ( L | k 1 ， k 2 ， l ， l + Δ l ) } (2) 其中， Δ l 的范围为 H ′ W ′ 。 CNN网络的第二阶段主要是为了修正粗粒度的肢体连接预测结果，所以网络输出的只有肢体预测的信息，输出通道为 H ′ W ′ | L | 。 整体网络的损失函数为： L total = L 1 + L 2 (3) L 1 = ∂ resp ∑ i ∈ ϑ ∑ k ∈ κ { δ k i − p ^ ( R | k ， i ) } 2   + ∂ IoU ∑ i ∈ ϑ ∑ k ∈ κ δ k i { p ( I | R ， k ， i ) − p ^ ( I | R ， k ， i ) } 2   + ∂ coor ∑ i ∈ ϑ ∑ k ∈ κ δ k i { ( x k i − x ^ k i ) 2 + ( y k i − y ^ k i ) 2 }   + ∂ size ∑ i ∈ ϑ ∑ k ∈ κ δ k i { ( w k i − w ^ k i ) 2 + ( h k i − h ^ k i ) 2 }   + ∂ limb1 ∑ i ∈ ϑ ∑ Δ l ∈ ι ∑ ( k 1 ， k 2 ) ∈ χ max ( δ k 1 i ， δ k 2 j ) { δ k 1 i δ k 2 j − p ( L | k 1 ， k 2 ， l ， l + Δ l ) } 2 (4) L 2 = ∂ limb2 ∑ i ∈ ϑ ∑ Δ l ∈ ι ∑ ( k 1 ， k 2 ) ∈ χ max ( δ k 1 i ， δ k 2 j ) { δ k 1 i δ k 2 j − p ( L | k 1 ， k 2 ， l ， l + Δ l ) } 2 (5) 其中， δ k i ∈ { 1 ， 0 } 表示该网格是否存在k关节点； ( ∂ resp ， ∂ IoU ， ∂ coor ， ∂ size ， ∂ limb1 ， ∂ limb2 ) 为每个损失的权重。 最后CNN网络最终输出的预测结果只使用第一阶段的关节点预测信息和第二阶段的肢体预测信息。 CNN网络输出关节点与肢体预测结果后，根据关节点的置信度 p ( R | k ， i ) p ( I | R ， k ， i ) 和肢体连接的置信度 p ( L | k 1 ， k 2 ， l ， l + Δ l ) ，通过匈牙利算法(Hungarian Algorithm) [ 22 ] 用最大权重二分匹配来进行关节点连接，从而生成每个人的姿态，如图5所示。 图5. 关节点连接示意图 3.2. 目标跟踪 虽然人体姿态估计采用的是自底向上的方法，没有生成人体检测框，但可以根据检测出来的关节点来生成目标追踪的检测框。遍历每个人的关节点坐标，找出最左、最右、最上和最下的坐标生成检测框。得出检测框后，用轻量级的Sort目标跟踪算法进行跟踪。Sort算法 [ 24 ] 利用上下帧中的框重合度IoU和框内关节点的距离作为评判是否为同一个ID的标准，进而存储不同ID的连续关节点序列。因本文的人体姿态估计模型速度约35 FPS，为了整体模型达到实时检测效果，设定暂存的阈值为30帧。然后使用卡尔曼滤波(Kalman filtering)对关节点形成的检测框以及运动规则的预测进行位置的评估优化，为生成下一帧追踪的特征提供更好的条件，从而形成稳定的追踪。最后，利用匈牙利算法(Hungarian Algorithm) [ 22 ] 将追踪到的ID对图像中的关节点进行分配，分别存储帧中提取的不同的关节点数据。 3.3. 图神经网络摔倒识别 时空图卷积网络通过学习摔倒动作的带有时序的关节点坐标序列的前后变化特征来对摔倒进行分类识别。参考ST-GCN [ 21 ] 模型，把每帧全部关节点作为数据流，输入到模拟关节点沿空间和时间维度的结构化信息的时空图神经网络中，图6为所构建的时空关节点图数据流示意图，橙色线连接为空间维度，蓝色线连接为时间维度。 图6. 时空关节点图数据流 网络结构如图7所示。首先，摔倒动作的特征对比其他动作会相对较简单，所以仅采用30帧的连续关节点数据作为网络的输入并对其位置特征进行归一化。然后，相应地把模型规模缩小，特征提取模块只使用6层：前2层为低维特征64通道数；中间2层为128通道数；后2层为高维特征256通道数。在特征模块中，ATT是注意力模块，负责针对不同层的GCN提取的语义特征的作用，GCN负责学习空间中相邻关节的特征，TCN负责学习时间维度中关节点变化的特征。最后，输出部分进行池化后使用FC全连接层输出结果。 图7. 时空图卷积网络结构