安卓Tensorflow Lite人体姿势跟踪上线:基于PosNet的实时人体姿态估计

2019 年 9 月 9 日 极市平台

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~


来源:机器之心


怀着激动的心情,我们发布了一个「TensorFlow Lite」示例应用程序(https://www.tensorflow.org/lite),通过它在安卓设备上通过使用「PoseNet」模型来实现人体姿势估计。「PoseNet」是一种视觉模型,它可以通过检测关键身体部位的位置来估计图像或者视频中的人体姿势。例如,该模型可以估计图像中人的手肘和/或膝盖位置。这种姿势估计模型不会鉴别图像中的人是谁,只会找到关键身体部位的位置。


TensorFlow Lite 分享了一个安卓示例应用程序,该应用程序利用设备的摄像头来实时地检测和显示一个人的关键部位。


源码链接如下: https://github.com/tensorflow/examples/tree/master/lite/examples/posenet/android


这为什么会令人感到兴奋呢?


通过姿势估计可以实现多种可能性。举几个例子,开发者可以在身体图像上进行增强现实,动画化计算机图形人物,以及分析运动员在运动中的步态。在 Google I/O』19 上,TensorFlow Lite 展示了应用程序 Dance Like,该程序通过使用 PoseNet 帮助用户学习如何跳舞。


这个示例应用程序将会让应用程序的开发者和机器学习的专家们更易于探索轻量级移动端模型的可能性。


PoseNet 示例应用程序


与现有的以 JAVA 写的安卓示例相反,PoseNet 示例应用程序是在 Kotlin 上开发的。开发此应用程序的目的为了让所有人都能以最小的支出轻松地使用 PoseNet 模型。这个示例应用程序包括了一个 PoseNet 库,它抽离了模型中的复杂性。以下的图表展示了应用程序、PoseNet 库和 TensorFlow Lite 库的工作流。


PoseNet 应用程序工作流


PoseNet 库

PoseNet 库提供了一个接口,它以经过处理的摄像头图像作为输入,并返回人像关键身体部位的位置信息。此功能由「estimateSinglePose()」实现,此方法会在处理过的 RGB 位图上运行 TensorFlow Lite 解释器,返回一个 Person 对象。


对 PoseNet 的输入和输出的解释如下:
https://www.tensorflow.org/lite/models/pose_estimation/overview


「Person」类包含了关键身体部位的位置和它们对应的置信度。人像的置信度是各个关键点置信度的均值,这表明了该位置存在关键点的概率。

// Person class holds a list of key points and an associated confidence score.class Person {  var keyPoints: List<KeyPoint> = listOf<KeyPoint>()  var score: Float = 0.0f}

每个关键点包含了某个身体部位的位置信息和该关键点的置信度。

所有可以找到的已定义关键点的列表如下:
https://www.tensorflow.org/lite/models/pose_estimation/overview#how_it_works。


PoseNet 应用程序示例


这里展示的是一款摄像头设备内置(on-device)的 PoseNet 示例应用程序,它捕捉摄像头拍摄的帧,并实时覆盖图像上的关键点。


该应用程序对每张传入的摄像头图像执行以下操作:


  • 从摄像头预览中获取图像数据并将它从「YUV_420_888」转换成「ARGB_888」格式。

  • 创建一个位图对象来保存来自 RGB 格式帧数据的像素。将位图裁剪并缩放到模型输入的大小,以便将其传递给模型。

  • 从 PoseNet 库中调用「estimateSinglePose()」函数来获取「Person」对象。

  • 将位图缩放回屏幕大小,在「Canvas」对象上绘制新的位图。

  • 使用从「Person」对象中获取的关键点位置在画布上绘制骨架。显示置信度超过特定阈值(默认值为 0.2)的关键点。


为了将姿势渲染与摄像头帧同步。我们用单个「SurfaceView」来显示输出而不是对姿势和摄像头分别建立「View」实例。「SurfaceView」通过获取、锁定和在「View」画布上绘图,无延时地将安卓的 surface 对象显示在屏幕上。


在设备上运行


我们鼓励读者从 Github 上下载源码,参考其中 Readme 文件的引导,自己动手测试一下这个应用程序。

Github地址:
https://github.com/tensorflow/examples/tree/master/lite/examples/posenet/android


未来的工作路线


在未来,我们希望为这个示例应用程序探索更多的功能,包括:

  • 多姿态估计

  • 通过 GPU delegate 进行 GPU 加速

  • 通过 NNAPI delegate 进行 NNAPI 加速

  • 通过训练后(post-training quantization)量化模型来减少延迟

  • 更多的模型选项,如 ResNet PoseNet 模型


很开心能在这个夏天开发 PoseNet 示例应用程序!我们希望这个应用程序能让设备内置的机器学习功能更触手可及。

原文链接: https://medium.com/tensorflow/track-human-poses-in-real-time-on-android-with-tensorflow-lite-e66d0f3e6f9e


-完-



*延伸阅读



添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流一起来让思想之光照的更远吧~


△长按添加极市小助手


△长按关注极市平台


觉得有用麻烦给个在看啦~  

登录查看更多
4

相关内容

Google发布的第二代深度学习系统TensorFlow
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
67+阅读 · 2020年3月9日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
利用 AutoML 的功能构建和部署 TensorFlow.js 模型
TensorFlow
6+阅读 · 2019年12月16日
TensorFlow Lite 2019 年发展蓝图
谷歌开发者
6+阅读 · 2019年3月12日
Learning to See Through Obstructions
Arxiv
7+阅读 · 2020年4月2日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
7+阅读 · 2018年1月24日
VIP会员
相关VIP内容
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
67+阅读 · 2020年3月9日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
相关论文
Learning to See Through Obstructions
Arxiv
7+阅读 · 2020年4月2日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
7+阅读 · 2018年1月24日
Top
微信扫码咨询专知VIP会员