【论文阅读笔记】BlazePose: On-device Real-time Body Pose tracking

论文地址:https://arxiv.org/abs/2006.10204

论文总结:

  本文的方法能在移动手机的cpu上跑到实时的效果,在pixel2手机上,超过30fps。
  BlazePose,其网络结构借鉴了hourglass这样的堆叠网络,其认为encoder-decoder这样的结构能很好地学习。网络结构如下图所示:在经历了一个encoder之后,使用decoder产生heatmap和offset预测分支进行监督,再通过一个encoder进行坐标回归。在训练的时候,使用heatmap和坐标回归一起训练,但坐标回归的分支不参与backbone和heatmap之前网络结构的反向传播。在推理的时候,舍弃heatmap分支和offset分支,只保留坐标输出。预测坐标的时候,也训练每个坐标的vision score,用于预测置信度。
  实际上,BlazePose也是一个top-down结构的预测网络。为了快速预测关节点,也是利用了帧与帧之间姿态与人体框的联系,设置了一个跟踪器来加速检测。

  本文中,在实现时,需要关注文中提到的各种技巧以及构建数据集的方式。

论文介绍

  heatmap预测适合多人,但对单人来说其耗时代价和耗内存显得相对太大。而直接进行坐标自回归,计算量虽然低,但学习到的坐标不准确,往往不能解决潜在的模糊性问题。
  在网络设计上,作者观察到hourglass参数量低,也带来了很大的提升,所以采用Hourglass的思路,即encoder-decoder的网络结构来预测所有关节点的heatmap。再接一个encoder直接回归所有的关节点坐标。这个思路背后的直觉是heatmap分支在推理时可以丢弃,以达到足够的轻量级。

推理管道

  在使用检测器或者跟踪器之后,在区域内预测关键点坐标。跟踪器预测关键点坐标,当前帧人的存在,以及当前帧中细化的感兴趣区域。当跟踪器显示人不在时,再运行检测网络进行检测。

人体检测器

  一般使用人体检测器时,会使用NMS进行目标的缩减。但NMS只对少量自由度的刚体目标有效,对像人类这样的高度自由的对象效果不行,比如挥手和拥抱。为解决人体因姿态而呈现非刚体的现象,对相对刚性的身体部位进行检测,比如脸或者躯干。
  但通过实验的现象观察显示,对于网络而言,躯干位置的强烈信号是人脸。所以最终选择人脸作为强特征进行检测。人脸检测器采用blaze-face。在做数据集和实验时,假设人脸是一直可见的,比如对于AR项目。人脸检测器还预测其他特殊的对其参数:臀部中间的点,环绕整个人的圆圈大小,以及斜度(中肩和中臀连线的角度)。斜度用于之后的数据处理,用于摆正图片。

拓扑结构

  本文的拓扑结构如下图所示,除了coco的关键点之外,用脸部、手和脚最少数量的关键点来估计后续模型中感兴趣的旋转、大小和位置。

数据集

  本文的基于跟踪的方案需要出示姿态对齐。作者限制了数据集的范围:要么整个人是可见的,要么臀部和肩膀的关键点可以很有自信的标注。
  为了确保模型支持数据集中不存在的严重遮挡,作者使用了大量的遮挡模拟增强
  训练数据集有60k张,图片为单人或少量几个人有相同的姿势和25k张单人在健身或者锻炼的场景。所有的标记都是手工标记。

网络结构设计

  使用上面提到的人体检测器中的人体对齐方案,之后进行姿态检测,姿态检测的网络如下图所示。采用heatmap、offset和坐标回归方法,如图4,heatmap和offset只用于训练,在推理时会删除对应的输出层。

  利用heatmap来作为轻量级的监督嵌入,然后利用回归encoder网络预测坐标。在网络设计上,借鉴了Hourglass,堆叠了一个小型的基于encoder-decoder的heatmap和一个后续回归encoder网络。
  与此同时,积极使用skip-contections,但回归编码器的梯度不会传播回heatmap训练的功能。作者发现,这不仅能改进heatmap的预测,而且可以大幅提高坐标回归的精度。

对齐和遮挡增强

  姿态的先验是解决方案的重要部分,增强训练时的数据准备期间,作者选择故意限制角度、尺度和平移的支持范围。

  基于检测或前一帧关键点,作者对人进行对其,使臀部中间的点作为神经网络输入的正方形图像的中心。
  作者估计姿态的旋转为臀部中间与肩部中间的点的直线L,并旋转图像,使得L与y轴平行。同时,对尺度进行估计,使所有身体点都在一个包围身体的方形边界框中。在此之上,应用了10%的缩放和移位增强,以确保跟踪器处理帧之间的身体扭动和扭曲的对齐。

论文实验

  测试集为手动标注的两个100张图片。每张图片有一到几个人。第一个数据集,成为AR数据集,有大量野外的人体姿态。第二个数据集,只包含瑜伽和健身的姿态。
  对比对象为openPose,为了保持一致性,只使用COCO的拓扑结构,用17个点进行评估。这是blazePose和openPose的一个公共子集。评价标准为[email protected],是人体躯干的20%作为评价标准。

  本文训练了两个不同容量的模型,BlazePose Full(6.9MFlop,3.5M Params)和BlazePose Lite(2.7MFlop,1.3M Params)。在AR数据集上,blazePose稍微不如OpenPose。但blazePose Full在瑜伽和健身数据集上比OpenPose好。但需要注意的是,与在20核的桌面CPU的OpenPose相比,BlazePose在单个中级的手机cpu上比OpenPose要快25到75倍。根据不同的质量需求。

  样本效果:

猜你喜欢

转载自blog.csdn.net/qq_19784349/article/details/111238350