0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于TensorFlow Lite的几项技术更新

Tensorflowers 来源:TensorFlow 作者:Yu-hui Chen 2021-09-23 15:38 次阅读

自年初在 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 - GPURaspberry Pi 4 -

CPU 4 线程

MoveNet.

Thunder

(FP16 量化)12.6MB72.0155ms45ms594ms

MoveNet.

Thunder

(INT8 量化)7.1MB68.9100ms52ms251ms

MoveNet.

Lightning

(FP16 量化)4.8MB63.060ms25ms186ms

MoveNet.

Lightning

(INT8 量化)2.9MB57.452ms28ms95ms

PoseNet(MobileNetV1

主干,FP32)13.3MB45.680ms40ms338ms

* 我们在 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 当前版本做出改进,使其能在同一转接路径中检测多种姿态。

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

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    2671

    浏览量

    47573
  • tensorflow
    +关注

    关注

    13

    文章

    313

    浏览量

    60232
  • TensorFlow Lite
    +关注

    关注

    0

    文章

    27

    浏览量

    541

原文标题:MoveNet 技术更新|基于 TensorFlow Lite 的姿态模型预测及分类

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    能量收集应用的几项技术挑战

    电子发烧友网站提供《能量收集应用的几项技术挑战.doc》资料免费下载
    发表于 11-15 10:36 0次下载
    能量收集应用的<b class='flag-5'>几项</b><b class='flag-5'>技术</b>挑战

    使用MobilenetV2、ARM NN和TensorFlow Lite Delegate预建二进制文件进行图像分类教程

    本指南回顾了使用ARM NN TensorFlow Lite Delegate(ARM NN TfLite Delegate)进行图像分类的示例应用程序。 该指南解释了如何构建应用程序并将其部署到您
    发表于 08-28 06:12

    TensorFlow将神经网络量化为8位

    随着TensorFlow Lite的推出,TensorFlow已经更新了量化技术和工具,您可以使用这些
    发表于 08-10 06:01

    使用Wio Terminal和Tensorflow Lite创建智能气象站

    电子发烧友网站提供《使用Wio Terminal和Tensorflow Lite创建智能气象站.zip》资料免费下载
    发表于 06-25 10:30 0次下载
    使用Wio Terminal和<b class='flag-5'>Tensorflow</b> <b class='flag-5'>Lite</b>创建智能气象站

    使用MTCNN和用于ESP32-S3的TensorFlow Lite进行人脸检测

    电子发烧友网站提供《使用MTCNN和用于ESP32-S3的TensorFlow Lite进行人脸检测.zip》资料免费下载
    发表于 06-13 15:28 0次下载
    使用MTCNN和用于ESP32-S3的<b class='flag-5'>TensorFlow</b> <b class='flag-5'>Lite</b>进行人脸检测

    如何使用pycoral、tensorflow-lite和edgetpu构建核心最小图像?

    如果您能告诉我们如何使用 pycoral、tensorflow-lite 和 edgetpu 构建核心最小图像,我们将不胜感激。
    发表于 06-05 10:53

    如何使用meta-imx层中提供的tensorflow-lite编译图像?

    我们正在尝试使用 meta-imx 层中提供的 tensorflow-lite 编译图像。我们没有任何 自定义更改/bbappends (Highlight to read)sources
    发表于 05-29 06:55

    任何支持在运行Debian 10/11的IMX8PLUS板上交叉编译eIQ for tensorflow lite的指南?

    任何支持在运行 Debian 10/11 的 IMX8PLUS 板上交叉编译 eIQ for tensorflow lite 的指南?甚至用于 Linux 的 eIQ ML 下载链接也已关闭。
    发表于 04-23 07:53

    imx8mp新BSP (6.1) 中的NPU / tensorflow-lite较慢是什么原因?

    对我来说,委托给 NPU 的 tensorflow lite 示例似乎越来越慢。 使用最新的 BSP(内核 6.1),它需要大约 50% 的时间。任何原因?
    发表于 04-23 06:55

    L5.4.47_2.2.0中的Tensorflow Lite 2.2.0 NNAPI内存不足怎么处理?

    L5.4.47_2.2.0 中的 Tensorflow Lite 2.2.0 NNAPI 内存不足
    发表于 04-21 06:38

    tensorflow-lite可以通过NPU加速运行吗?

    你能帮我确定构建/安装所需的最小包,以便 tensorflow-lite 可以通过 NPU 加速运行吗?我知道 NPX 将它捆绑为 packagegroup-imx-ml - 但它包含的内容远远
    发表于 04-14 08:17

    evklpc55S69_tflm_kws_eiq.axf参数不正确是怎么回事?

    /tensorflow-lite/third_party/cmsis/CMSIS/NN/Source/SoftmaxFunctions/arm_nn_softmax_common_s8.o ./eiq
    发表于 04-11 07:26

    是什么导致TensorFlow Lite的NNAPI Delegate被弃用?

    在i.MX Machine Learning User\'s Guide LF5.15.5-1.0.0中,我发现了如下release note语句:TensorFlow Lite 的 NNAPI
    发表于 04-07 10:25

    调试评估板MIMXRT1060 evkmimxrt1060_tensorflow_lite_label_image项目的问题如何解决?

    我正在尝试调试 evkmimxrt1060_tensorflow_lite_label_image 项目。我的 i.MXRT 1060 和 MCUXpresso 版本的 MCUXpresso SDK
    发表于 04-07 06:14

    tensorflow lite上的未定义引用是怎么回事?

    我在 LPC55S69 上构建了一个 cifar-10 tensorflow lite 项目,在那里我得到了很多与 TensorFlow lite 相关的未定义引用。在附件里(请用no
    发表于 04-04 08:09