通过MoveNet和TensorFlow实现下一代姿态检测.

MoveNetGoogle推出的一款轻量化姿态估计模型,是一个bottom-up的单人姿态估计模型。

MoveNet整体的结构如图所示,Backbone部分是比较经典的带三层deconvMobileNetv2Neck部分使用了目标检测中常见的FPN来做不同尺度的特征学习和融合。

Head部分有四个预测头,分别是:

对于四个头部预测的结果,会按照以下流程进行处理:

  1. 选择距离画面中心最近的人体目标的中心点。对于画面中的每一个像素,预先计算好一张权重Mask,每一个像素上的权重等于这个像素到画面中心的集合距离的倒数,用它对Center Heatmap加权,把画面中其他人的响应值压低,从而通过Argmax拿到离画面最近的人的最大值点。
  2. 通过Keypoint Regression的结果获得一个人的所有关键点的坐标。
  3. 假设距离Regression位置最近的高斯核是感兴趣目标的。通过Regression的坐标和全图的像素计算出一个权重Mask,用它来对Keypoint Heatmap加权,从而抑制掉其他距离较远的高斯核响应值,从而通过Argmax拿到感兴趣目标的关键点。
  4. 通过Offset Regression分支来预测HeatmapGT点的偏移,从而消除量化误差。

MoveNet 在两个数据集上进行了训练:COCO和一个名为 Active 的内部 Google 数据集。虽然 COCO 是标准基准数据集,但它并不适合健身和舞蹈等场景应用,因为这些应用表现出具有挑战性的姿势和明显的运动模糊。Active 是通过在 YouTube 上的瑜伽、健身和舞蹈视频上标记关键点(采用 COCO 的标准 17 个身体关键点)生成的。每个视频中选择的训练帧不超过三帧,以促进场景和个人的多样性。