AlposePose姿态估计和跟踪

    目前,姿态估计有两个主流的方法,自顶向下,先检测出数据中的人体检测框,再根据每个检测框识别人的姿态。与之对应的是自低向上的方法,即先检测数据中所有的骨骼点,再通过拼接得到多人的骨架。两种方法各有缺点,其中自顶向上的方法,姿态检测准确度非常依赖目标检测框的质量。而自低向上的方法,如果两人离得非常近,容易出现模棱两可的情况,而且由于是依赖两个骨骼点之间的关系,所以失去了对全局的信息获取。
    Alphapose是多人姿态识别框架,属于自顶向下的方法,其主要解决两个问题,(1) 检测框不准,如图1所示;(2) 检测框重叠问题,如图2所示。
AlposePose姿态估计和跟踪_第1张图片

图1

    其中,红色框为真实框,其经过SPPE(Single Person Pose Estimation)后可以检测到骨骼点,黄色框为预测框,且其与真实框的IOU大于阈值(0.5),为预测正确的检测框,但是其经过SPPE后并没有检测到骨骼点。且从图中可以看到,预测正确的框检测不到骨骼点主要有两个方面,(1) 该框所在区域并没有完全包括人体;(2) 该框中人体不是处于中心位置。

AlposePose姿态估计和跟踪_第2张图片

图2
    从图2可以看到,当同一个人体检测出多个预测框时,经过SPPE后也会对应检测多副姿态,导致姿态冗余。

网络结构示意图如下所示:
AlposePose姿态估计和跟踪_第3张图片
    其中,STN(spatial transformer network)空间变换网络,其特点就是可以对输入做各种形变(裁剪、平移等等),可以在训练过程中自动寻找感兴趣区域,将输入转换成下一层期望的形式;SDTN(spatial detransformer network)空间逆变换网络,即与STN处理过程相反。
    为了矫正检测框,该文在训练时,如下图所示,增加parallel SPPE模块,该模块与SPPE共享STN网络,训练时,固定parallel SPPE模块参数,将其输出的姿态直接与label相比较,计算损失,以调整STN的参数,以此达到修正检测框的目的。
AlposePose姿态估计和跟踪_第4张图片
对于检测重复框,该文使用pose nms来解决:
Pose Distance:
AlposePose姿态估计和跟踪_第5张图片
    其中,公式(8)为计算姿态Pi与Pj的相似度,Bi为Pi的检测框,ci和cj分别是Pi和Pj的各骨骼点的置信度,当Pj中第n个骨骼点出现在Pi的第n个骨骼点所在框内,则使用双曲正切进行计算两骨骼点的相似度。

    如下图所示[该图取自],圆点表示Pi的骨骼点,三角形为Pj的骨骼点,红色框是以圆点为中心,大小是Bi的1/10,若此时三角形在红框内,则使用公式(8)计算两者的i相似度。
AlposePose姿态估计和跟踪_第6张图片
空间距离 用于衡量不同特征之间空间距离的相似度:
在这里插入图片描述
最终的距离公式:
在这里插入图片描述
当距离小于 η \eta η,则令f=1,表示Pi与Pj相似度较高,则删除Pi,保留Pj。
在这里插入图片描述
    跟踪使用的是pose track,即使用ReID行人重识别检测得到detections,再与前一帧得到的tracks计算距离(余弦距离),使用卡尔曼滤波计算前若干帧的人体运动信息的均值和方差,用以计算马氏距离,余弦距离和马氏距离结合来计算detections和tracks的相似度。具体的跟踪流程图如下所示:

AlposePose姿态估计和跟踪_第7张图片
    注:Lost Tracks当小于阈值时,需要和Matched Tracks合并,经过卡尔曼滤波更新均值和方差【图中画的有点错误】。

代码:
https://github.com/MVIG-SJTU/AlphaPose

你可能感兴趣的:(网络)