Fork me on GitHub

谷歌开源手势识别器,还有现成的App,被我们玩坏了

  郭一璞 发自 凹非寺 
  量子位 报道 公众号 QbitAI

  借助 TensorFlow Lite 和 MediaPipe,谷歌刚刚开源了一款手势识别器,可以直接在手机上运行,实时跟踪,并且已经开源。

  官方说,效果长这样:

  有了这项应用,你可以开发手语识别、AR 游戏,甚至用它来玩石头剪刀布。

  有 App 可玩

  谷歌已经把这款手势识别器做成了一款名为“Hand Tracking GPU”的 App,在安卓端有对应的 apk 安装包,下载到手机上,安装成功后,无需联网就可以直接用了。

  当然,iOS 用户也可以安装,但是没有现成的安装包,可以下载源代码自行编译。

  App 默认调用前置摄像头,如果屏幕中出现的是你的脸,它是没有反应的。

  伸手到屏幕前,就可以和官方演示的一样,识别出手部的各种姿势,123456789 都可以识别:

  或者比个“OK”:

  点个赞:

  反应还是非常敏锐的,效果不错。不过,不知是什么原因,有时候玩着玩着,屏幕也会突然“放空”,只能看到手,识别不出手势,这也被推特上的网友抓了包:

  另外,这个 App 只支持一只手的手势识别,如果你把两只手都放到摄像头前,它只能识别一只:

  说好的石头剪刀布呢?

  当然,想想办法还是能让它识别两只手的,比如这样:


它不知道我换了一只手

  悄咪咪的,就把识别出的手势框图从一只手转移到了另一只手上。


它也不知道我换回来了

  当然,你也可以换回来,来去切换自如,仿佛背后的模型已经被忽悠瘸了。

  三大模型

  不过,被“忽悠瘸了”的锅,可不能让一个模型背,因为,这款应用的背后有 3 个模型。

  BlazePalm

  从整个图像中界定手部轮廓,找到手掌的位置,检测平均精度达到 95.7%。

  Hand Landmark

  前一个模型找到手掌之后,这个模型负责定位关键点,它可以找到手掌上的 21 个关节坐标。

  在训练过程中,研究人员们用到了将近 30000 张真实世界的标注过的手掌图片,来获取 ground truth 数据。

  之后,用混合训练的方式训练模型。

  Gesture Recognition

  现在,手部关键点检测结果出来之后,需要判断比划出来的手势是什么意思,也就是识别出✌️是2,这里包含各种手势,除了 123456789 之外,还有 yeah、ok 等。

  不过,遗憾的是似乎 App 里没有这个功能。

  借助 MediaPipe 实现

  最后的实现,借助了 MediaPipe,这是一个构建机器学习 pipeline 的框架。用于手势识别的 MediaPipe 图长这样:

  前面的各种模型,都融入到了这张整体的图里,可以看到从拍摄到出结果的全过程。

  另外,借助 MediaPipe,还可以做人脸检测:

  头发分割:

  物体检测:

  具体内容,可以进入传送门体验:

  传送门

  MediaPipe

  https://github.com/google/mediapipe

  手部跟踪

  https://github.com/google/mediapipe/blob/master/mediapipe/docs/hand_tracking_mobile_gpu.md

  手势识别 apk/源代码

  https://drive.google.com/file/d/1uCjS0y0O0dTDItsMh8x2cf4-l3uHW1vE/view  

来自:
量子位(ID:QbitAI)

作者:Johnson
原创文章,版权所有,转载请保留原文链接。