(姊妹仨)BlazePalm: 先检手掌再检骨架,虚拟合成数据助力 2.5D 信息输出

MediaPipe Hands: On-device Real-time Hand Tracking,2020


自说自话:

  • 双阶段,手掌检测 + 关键点定位,多只爪爪
  • 通过合成的手部数据训练得到各个关键点的远近关系,输出 2.5 D 信息,x,y,和 depth
  • 手掌检测而不是全手检测,能够降低问题复杂度。

Abstract

  • 移动端实时 hand tracking,能够提供手部骨架;
  • 两个模型:hand detector and hand landmark model
  • 实现通过 MediaPipe,一种构建交叉平台的 ML 方案。

Introduction

以往的手部姿态估计工作中,有的需要特殊的硬件,有的不够轻量用于移动端。
本文贡献:

  • two-stage 的 hand tracking,可以在移动端实时地追踪多只手
  • 输入 RGB 图像,输出 2.5 D 的手部姿势;
  • 可以在多平台部署,包括安卓、IOS 还有 Web。

Architecture

Two-stage:

  • palm detector,在全图范围内执行手掌检测;
  • hand landmark model,在上面得到的手掌区域内做关键点检测,并且返回 2.5D 的结果。
    如下图 1 左图,越靠近摄像机,圆圈就越白越大。

在这里插入图片描述
实际运行的时候,采用和 BlazePose 类似的方式,并不在每一帧都进行 detector

  • 在初始帧,先进行 detector,再进行 landmark;
  • 接着,在下一帧进行 landmark,当 landmark 认为当前帧中已经没有手部信息了,才会再作为初始帧进行 detector,然后再进行 landmark。如此循环。

BlazePalm Detector

为了有一个初始的 detector 检测手部的位置,本文采用了一个类似 BlazeFace 的 SSD 模型。检测手部是一个相对较为复杂的任务,因为有各种尺寸的手部大小、多种遮挡情况。手部没有脸部那样的较为固定的特征,仅仅通过视觉特征来检测相对更难。为了解决这些问题,本文的方案包括以下几点:

  • 训练手掌检测器,不包含手指。检测手掌比检测包含手指的全部手部信息要更简单一些,手掌相对更“小”,在应用 NMS 时副作用也更小,比如握手的情况,两个手掌比两只手更不容易被 NMS 过滤掉。这样也能减少 anchor 的使用数量,简化问题和计算量。
  • 使用类似 FPN 的 encoder-decoder,即使对于小物体检测,也是用较大的场景上下文。
  • 然后采用 Focal Loss 来应对巨大尺度变化引起的超量 anchor。

手掌检测器的模型结构如下:
可以看到从上到下主体非常像 FPN,也就是相当于获取了任意尺度的语义信息,然后每个尺度都贡献 anchor 出来,最后一共有 11136 个 anchor。
在这里插入图片描述

Hand Landmark Model

在进行了初步的手掌检测之后,就是通过 regression 精细地进行 21 个 landmark 2.5D 检测。模型学习内部的手部姿势表征,对遮挡有着较高的鲁棒性。

模型一共有三个输出,结构如图 3 所示,其中中间的特征部分是共享的,这个地方具体用什么结构好像没有细讲,而输出的 3 个 head 都是分别监督训练得到的

  • 21 个关键点信息,包括 x,y 以及 depth;
  • 表示是否有手的 hand flag(当认为无手的时候,就在下一阵进行 detector 了);
  • 左手还是右手,一个二分类标志。

在这里插入图片描述

  • 21 个 2D 的landmark 信息是通过真实图片和合成图片训练得到的,其中相对腕部的相对深度信息是仅仅通过合成图片来训练。
  • 为了防止 tracking 失败,所以特意增加了一个 hand presence 来衡量是否有手存在,一旦低于阈值,就会重新进行 detector。
  • 左右手是另一个非常重要的信息,

Dataset and Annotation

在这里插入图片描述

本文准备了多个数据集:

  • 6K wild dataset,涵盖不同光照等情况,但是手部没有特别复杂的动作;
  • 10K in house dataset,各种各样的手部姿势,但是仅仅采集来自 30 个人;
  • synthetic 合成的 dataset,主要是为了 depth 信息

对于 palm 检测,只使用第一个数据集就足够了,对于 landmark 则是使用全部数据集;

Results

最后做出来的效果发现,增加模型的参数和 capacity 会显著增加耗时,但是性能并没有显著的提高:
在这里插入图片描述

Implementation in MediaPipe

整个过程如下图 5:两个 stage 分别是 palm detector 和 landmark location,前者只有在必要的时候才会被使用,很大程度上降低了计算量。

在这里插入图片描述

Application examples

Conclusion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值