自年初在 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文章
3437瀏覽量
49604 -
tensorflow
+關注
關注
13文章
330瀏覽量
60810 -
TensorFlow Lite
+關注
關注
0文章
26瀏覽量
676
原文標題:MoveNet 技術更新|基于 TensorFlow Lite 的姿態模型預測及分類
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
FlexBuild構建Debian 12,在“tflite_ethosu_delegate”上構建失敗了怎么解決?
OpenVINO?是否與TensorFlow集成支持Raspberry Pi?
EE-217:更新ADSP-TS101S TigerSHARC EZ-KIT Lite固件

請問為ADC選Driver主要要看哪幾項技術指標呢?
第四章:在 PC 交叉編譯 aarch64 的 tensorflow 開發環境并測試

評論