关注公众号,发现CV技术之美

发布人:TensorFlow 技术推广工程师 Khanh LeViet 和软件工程师 Yu-hui Chen

自年初在 Google I/O 大会上宣布推出 MoveNet 以来,我们已经收到了众多积极反馈和功能请求。今天,我们很高兴能与大家分享以下几项技术更新:

MoveNet 的 TensorFlow Lite 版本现已在 TensorFlow Hub 上推出。我们对该版本进行了一些可提升准确率的更新,并使其与硬件加速器兼容,其中包括 GPU 和获得 Android NN API 支持的其他加速器。

  • TensorFlow Hub

    http://hub.tensorflow.google.cn/s?deployment-format=lite&q=movenet

我们发布了可在 Android 环境下使用 Raspberry Pi 的全新姿态预测示例,可让您在移动设备和 IoT 设备上试用 MoveNet。(即将支持 iOS 系统)

  • Android

    https://github.com/tensorflow/examples/tree/master/lite/examples/pose_estimation/android

  • Raspberry Pi

    https://github.com/tensorflow/examples/tree/master/lite/examples/pose_estimation/raspberry_pi

同时,我们还发布了 Colab notebook,旨在教会您如何利用 MoveNet 对自定义姿势进行分类(例如,识别不同的瑜伽姿势)。您可以在上文提到的 Android、iOS 和 Raspberry Pi 应用中试用姿态分类。

  • notebook

    https://tensorflow.google.cn/lite/tutorials/pose_classification

什么是姿态预测?

姿态预测是一项机器学习任务,即通过预测图像或视频中特定身体部位(关键点)的空间位置来预测人物姿态。MoveNet 是目前最先进的姿态预测模型,能够检测以下 17 个关键点:

  • 鼻子

  • 左眼和右眼

  • 左耳和右耳

  • 左肩和右肩

  • 左肘和右肘

  • 左腕和右腕

  • 左臀和右臀

  • 左膝和右膝

  • 左脚踝和右脚踝

我们发布了以下两个 MoveNet 版本:

MoveNet.Lightning 模型体积更小、速度更快,但在准确性方面不如 Thunder 模型。该模型能在现代智能手机上实时运行。

  • MoveNet.Lightning

    http://hub.tensorflow.google.cn/google/movenet/singlepose/lightning/

MoveNet.Thunder 模型准确性更高,但体积较 Lightning 模型而言更大,速度也相对较慢。

  • MoveNet.Thunder

    http://hub.tensorflow.google.cn/google/movenet/singlepose/thunder/

各种基准数据集(参见下文表中的评估/基准结果)中的数据表明,MoveNet 模型的表现优于我们先前的 TensorFlow Lite 姿态预测模型 Posenet(论文、文章和模型)。

  • 论文

    https://arxiv.org/abs/1803.08225

  • 文章

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

  • 模型

    https://storage.googleapis.com/download.tensorflow.org/models/tflite/posenet_mobilenet_v1_100_257x257_multi_kpt_stripped.tflite

以上 MoveNet 模型支持 TensorFlow Lite FP16 和 INT8 量化格式,可最大限度与硬件加速器兼容。

此次 MoveNet 版本可识别输入图像中的单一姿态。如果图像中的人数超过一个,该模型会通过剪裁算法将尽可能地聚焦在离图像中心最近的人物身上。同时,我们还采用了智能剪裁算法,来提高视频检测的准确率。简而言之,该模型将放大前一帧中检测到姿态的区域,继而查看更细节的部分,然后根据当前帧做出更准确的预测。

如果您想深入了解 MoveNet 的实现过程,请查看之前发布的文章,其中包括 MoveNet 模型架构和其训练时用到的数据集。

Android 与 Raspberry Pi

的示例应用

我们发布了全新的姿态预测示例应用,便于您在所选平台上快速试用不同的姿态预测模型(MoveNet Lightning、MoveNet Thunder 和 Posenet)。

  • Android 示例

  • iOS 示例

  • Raspberry Pi 示例

在 Android 和 iOS 示例中,您也可以选择使用加速器(GPU、NNAPI 或 CoreML)来运行姿态预测模型。

Android 示例应用屏幕截图。图像来自 Pixabay

MoveNet 性能

我们已对 MoveNet 进行优化,使其能在由 TensorFlow Lite 提供支持的硬件加速器(包括 GPU 和获得 Android NN API 支持的加速器)上更好地运行。MoveNet 的性能基准结果可助您选择最适合您用例的运行时配置。

模型

大小 (MB)

mAP*

延迟时间 (ms) **

Pixel 5 - 

CPU 4 线程

Pixel 5 - GPU

Raspberry Pi 4 -

 CPU 4 线程

MoveNet.

Thunder

(FP16 量化)

12.6MB

72.0

155ms

45ms

594ms

MoveNet.

Thunder

(INT8 量化)

7.1MB

68.9

100ms

52ms

251ms

MoveNet.

Lightning

(FP16 量化)

4.8MB

63.0

60ms

25ms

186ms

MoveNet.

Lightning

(INT8 量化)

2.9MB

57.4

52ms

28ms

95ms

PoseNet(MobileNetV1

主干,FP32)

13.3MB

45.6

80ms

40ms

338ms

* 我们在 COCO 关键点数据集的子集上测量 mAP,并在其中筛选并裁剪每张图像,使其只包含一个人像。

** 在持续负载下,我们使用带有 TensorFlow 2.5 的 Android 和 Raspberry Pi 示例应用测量端到端的延迟时间。

选择 Lightning 或 Thunder 模型。首先,您应该了解 Lightning 模型的准确率能否满足您的用例。

对于您的用例而言,如果 Lightning INT8 模型的准确率足够高,则可以选择该模型,因为它是系列模型中体积最小、速度最快的模型。模型的越快则意味着其能耗越少。

如果准确率对于您的用例而言至关重要,Thunder FP16 模型则是理想之选。

选择加速器。加速器的性能会因不同的制造商制造的 Android 设备而异。

CPU 是最为安全便捷的选择,因为可以肯定的是,CPU 几乎可以在任何能运行 TensorFlow Lite 的 Android 设备上正常工作。但在通常情况下,相较于在加速器上运行模型,在 CPU 运行模型时速度更慢,且耗能更高。所有 MoveNet 模型都能在 CPU 上运行良好,因此您应该根据自身的准确率需求选择模型。

GPU 是应用最广泛的加速器,能够提供出色的性能提升。如果您想使用 GPU,FP16 量化模型则是理想之选。

Android NNAPI 是一种能在 Android 设备上支持其他 ML 加速器的便捷方式。如果您已经将 CPU 或 GPU 用于其他工作负载,并且用户设备运行版本为 Android 10 或更高版本,则您可以选择满足您准确率需求的模型,并让 NNAPI 选择最适合您模型的路径。

如果您是 IoT 开发者,不妨使用 Coral 来提升推理速度。请在此处查看 Coral 基准数据。

  • 此处

    https://coral.ai/models/pose-estimation/

对模型进行无线部署,而非将其捆绑在应用的二进制文件中。

由于 Android 生态系统的多元化,我们无法提供适用于所有用户的统一模型。对于使用低端设备的用户而言,Lightning INT8 模型是最佳选择,因为该模型速度最快,且能耗最少。然而对于使用高端设备的用户而言,不妨凭借 Thunder FP16 模型提供更为出色的性能。如果您想根据用户设备更改模型,则可以考虑使用免费版Firebase ML 托管您的模型,而非将所有打算使用的模型捆绑到应用中。如果用户开始使用需要 TFLite 模型的应用功能,则您可以编写逻辑,为每个用户设备下载最佳模型。

  • Firebase ML

    https://firebase.google.com/docs/ml/manage-hosted-models

姿态分类

TensorBoard 是 TensorFlow 的可视化工具包。通过将 TensorFlow Quantum 模型与 TensorBoard 进行集成,您将获得许多开箱可用的模型可视化数据,例如训练损失和准确性、可视化模型图和程序分析。

为简化姿态分类流程,我们还发布了 Colab notebook,该工具能够教您如何通过结合 MoveNet 和 TensorFlow Lite,并根据自定义姿态数据集来训练自定义姿态分类模型。这表示如果您想要识别瑜伽姿势,您需要做的就是收集您想识别的姿态图像并为其添加标签,然后按照教程进行训练,接着将瑜伽姿势分类器部署到您的应用中。

姿态分类器由两个阶段构成:

1. 利用 MoveNet 检测输入图像中的关键点。

2. 利用小型 TensorFlow Lite 模型,对已检测到的关键点进行姿态分类。

利用 MoveNet 进行姿态分类的示例。输入图像来自 Pixabay

为训练自定义姿态分类器,您需要准备姿态图像,并将它们放入下图所示的文件夹结构中。您可以根据想要识别的类别为每个子文件夹命名。然后运行 notebook 来训练自定义姿态分类器,并将其转换为 TensorFlow Lite 格式。

yoga_poses
|__ downdog|______ 00000128.jpg|______ 00000181.bmp|______ ...
|__ goddess|______ 00000243.jpg|______ 00000306.jpg|______ ...
...

TensorFlow Lite 姿态分类模型非常小,其大小只有 30KB 左右。该模型从 MoveNet 中获取标记点输出,使姿态坐标标准化,并将坐标传递至几个完全连接的层中。模型的输出是一个概率列表,即姿态为每个已知的姿态类别。

TensorFlow Lite 姿态分类模型概览

您可以在任何已发布的 Android 或 Raspberry Pi 姿态预测示例应用中试用姿态分类模型。

  • Android

    https://github.com/tensorflow/examples/tree/master/lite/examples/pose_estimation/android

  • Raspberry Pi

    https://github.com/tensorflow/examples/tree/master/lite/examples/pose_estimation/raspberry_pi#run-the-pose-classification-sample

未来计划

我们的目标是提供核心的姿态预测技术以及动作识别引擎,让开发者在此基础上构建创新性应用。以下是我们目前正在积极研究的一些方向:

对 MoveNet 当前版本做出改进,使其能在同一转接路径中检测多种姿态。

研发新型动作识别技术,使其能在多个帧上检测姿态。

如果您有任何反馈或建议,请通过 tflite@tensorflow.org 或 TensorFlow 论坛联系我们!

  • tflite@tensorflow.org

    mailto:tflite@tensorflow.org

  • TensorFlow 论坛

    https://discuss.tensorflow.org/

致谢

我们想要感谢 MoveNet 的其他贡献者:Ronny Votel、Ard Oerlemans、Francois Belletti 以及 TensorFlow Lite 相关人员:Tian Lin 和 Lu Wang。

END,入群????备注:姿态

MoveNet 姿态估计,树莓派上也能跑!相关推荐

  1. CPU上跑到 33 FPS 的简单轻量级人体姿态估计网络

    点击我爱计算机视觉标星,更快获取CVML新技术 在姿态估计算法中,微软开发的 SimpleBaseline 是精度高而又轻量级的典范,昨天一篇论文Simple and Lightweight Huma ...

  2. 告别Heatmap!人体姿态估计表征新方法SimDR

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Tau 编辑丨极市平台 导读 本文提出了一种姿态估计的解耦坐标表征:SimDR,将关键点坐标(x ...

  3. 自监督3D手部姿态估计方法

    作者 | 镜子@知乎 来源 | https://zhuanlan.zhihu.com/p/446726196 编辑 | 极市平台 导读 手部姿态估计任务作为一个对空间信息敏感的下游任务,任何改变空间信 ...

  4. CVPR2021|Anchor-free新玩法,一个head统一目标检测,实例分割,姿态估计三种任务...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文转自小马哥@知乎,https://zhuanlan.zhihu.com/p/366651996. ...

  5. ICCV 2019 | SPM:单阶段人体姿态估计解决方案

    本文为极市作者Panzer原创,欢迎加小助手微信(cv-mart) 备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测.目标跟踪.人脸.工业检测.医学影像. ...

  6. ICCV 2019 | 基于无标签单目视频序列的单帧三维人体姿态估计算法

    作者丨王璇 学校丨西安交通大学 研究方向丨人体姿态估计 我们都知道,要训练一个准确的三维人体姿态估计深度神经网络,需要大量有三维标签的数据,越多越好.而在现实生活中,我们很难得到很多有标签数据,而无标 ...

  7. 腾讯优图刷新人体姿态估计国际权威榜单,相关论文被ECCV2020收录

    本文转载自腾讯优图. 近日,腾讯优图实验室在人体2D姿态估计任务中获得创新性技术突破,其提出的基于语义对抗的数据增强算法Adversarial Semantic Data Augmentation ( ...

  8. 图匠数据等提出高精度零售货架姿态估计算法GSPN

    导语 近日,ImageDT图匠数据联合江西科技师范大学在<IEEE Transactions on Industrial informatics>(国际工业电子学会顶刊/中科院A类期刊/影 ...

  9. OpenPose 升级,CMU提出首个单网络全人体姿态估计网络,速度大幅提高

    点击我爱计算机视觉标星,更快获取CVML新技术 昨天,曾经开源OpenPose的卡内基梅隆大学(CMU)公布了ICCV 2019 论文 Single-Network Whole-Body Pose E ...

最新文章

  1. torch拼接合并 cat优化记录
  2. sublime :[Decode error - output not utf-8]
  3. USACO1.1Broken Necklace[环状DP作死]
  4. 关于scws分词的一些记录
  5. 使用纯css做的按钮
  6. 软件工程方法学要素含义_日期时间数据的要素工程
  7. 听一个内行人讲云原生简史
  8. oracle 对两列加唯一性束_oracle中创建unique唯一约束(单列和多列) 。
  9. c#equals方法源码_C#中的Int32.Equals()方法示例
  10. POJ 2777 线段树
  11. MySQL高级知识(九)——慢查询日志
  12. scala 函数中嵌套函数_Scala中的VarArgs函数和@varargs批注
  13. 函数除颤/节流提高性能 + 原生实现滚动时到视口时展现
  14. rbac 一个用户对应多个账号_SaaS产品用户权限管理-RBAC
  15. johnson算法c语言,Johnson-Trotter(JT)算法生成排列
  16. 机器学习--sklearn(决策树)
  17. vhg电路是什么意思_显示装置和电力监测电路的制作方法
  18. python3 Python.h No such file or directory
  19. 7-2 打印九九口诀表 (10 分)
  20. 时光机穿梭(管理修改)

热门文章

  1. 边缘检测之Canny
  2. Vert x开发指南
  3. 牛客小bai月赛43——C 木棍游戏(DFS)
  4. 【读书笔记0101】Beginning linux programming-3rd
  5. vue获取编辑器纯文字_前端富文本编辑器 vue-html5-editor
  6. 实车采集的数据重建场景_避障、探测、采样......华理这套系统让无人小车“身手非凡”...
  7. python django mysql写入中文乱码_Django 连接mysql数据库中文乱码
  8. TEN网格数据导入oracle,开源-Solidity 分散的oracle网络的示例链链接。-糯米PHP
  9. 分子动力学模拟软件_分子模拟软件Discovery Studio教程(十三):构建PLS模型(3D-QSAR)...
  10. html织梦站内搜索代码,简单三步-实现dede站内搜索功能