自年初在 Google I/O 大會(huì)上宣布推出 MoveNet 以來(lái),我們已經(jīng)收到了眾多積極反饋和功能請(qǐng)求。今天,我們很高興能與大家分享以下幾項(xiàng)技術(shù)更新:
●
MoveNet 的 TensorFlow Lite 版本現(xiàn)已在 TensorFlow Hub 上推出。我們對(duì)該版本進(jìn)行了一些可提升準(zhǔn)確率的更新,并使其與硬件加速器兼容,其中包括 GPU 和獲得 Android NN API 支持的其他加速器。
TensorFlow Hub
http://hub.tensorflow.google.cn/s?deployment-format=lite&q=movenet
●
我們發(fā)布了可在 Android 環(huán)境下使用 Raspberry Pi 的全新姿態(tài)預(yù)測(cè)示例,可讓您在移動(dòng)設(shè)備和 IoT 設(shè)備上試用 MoveNet。(即將支持 iOS 系統(tǒng))
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
●
同時(shí),我們還發(fā)布了 Colab notebook,旨在教會(huì)您如何利用 MoveNet 對(duì)自定義姿勢(shì)進(jìn)行分類(例如,識(shí)別不同的瑜伽姿勢(shì))。您可以在上文提到的 Android、iOS 和 Raspberry Pi 應(yīng)用中試用姿態(tài)分類。
notebook
https://tensorflow.google.cn/lite/tutorials/pose_classification
什么是姿態(tài)預(yù)測(cè)?
姿態(tài)預(yù)測(cè)是一項(xiàng)機(jī)器學(xué)習(xí)任務(wù),即通過(guò)預(yù)測(cè)圖像或視頻中特定身體部位(關(guān)鍵點(diǎn))的空間位置來(lái)預(yù)測(cè)人物姿態(tài)。MoveNet 是目前最先進(jìn)的姿態(tài)預(yù)測(cè)模型,能夠檢測(cè)以下 17 個(gè)關(guān)鍵點(diǎn):
鼻子
左眼和右眼
左耳和右耳
左肩和右肩
左肘和右肘
左腕和右腕
左臀和右臀
左膝和右膝
左腳踝和右腳踝
我們發(fā)布了以下兩個(gè) MoveNet 版本:
●
MoveNet.Lightning 模型體積更小、速度更快,但在準(zhǔn)確性方面不如 Thunder 模型。該模型能在現(xiàn)代智能手機(jī)上實(shí)時(shí)運(yùn)行。
MoveNet.Lightning
http://hub.tensorflow.google.cn/google/movenet/singlepose/lightning/
●
MoveNet.Thunder 模型準(zhǔn)確性更高,但體積較 Lightning 模型而言更大,速度也相對(duì)較慢。
MoveNet.Thunder
http://hub.tensorflow.google.cn/google/movenet/singlepose/thunder/
各種基準(zhǔn)數(shù)據(jù)集(參見(jiàn)下文表中的評(píng)估/基準(zhǔn)結(jié)果)中的數(shù)據(jù)表明,MoveNet 模型的表現(xiàn)優(yōu)于我們先前的 TensorFlow Lite 姿態(tài)預(yù)測(cè)模型 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 版本可識(shí)別輸入圖像中的單一姿態(tài)。如果圖像中的人數(shù)超過(guò)一個(gè),該模型會(huì)通過(guò)剪裁算法將盡可能地聚焦在離圖像中心最近的人物身上。同時(shí),我們還采用了智能剪裁算法,來(lái)提高視頻檢測(cè)的準(zhǔn)確率。簡(jiǎn)而言之,該模型將放大前一幀中檢測(cè)到姿態(tài)的區(qū)域,繼而查看更細(xì)節(jié)的部分,然后根據(jù)當(dāng)前幀做出更準(zhǔn)確的預(yù)測(cè)。
如果您想深入了解 MoveNet 的實(shí)現(xiàn)過(guò)程,請(qǐng)查看之前發(fā)布的文章,其中包括 MoveNet 模型架構(gòu)和其訓(xùn)練時(shí)用到的數(shù)據(jù)集。
Android 與 Raspberry Pi
的示例應(yīng)用
我們發(fā)布了全新的姿態(tài)預(yù)測(cè)示例應(yīng)用,便于您在所選平臺(tái)上快速試用不同的姿態(tài)預(yù)測(cè)模型(MoveNet Lightning、MoveNet Thunder 和 Posenet)。
Android 示例
iOS 示例
Raspberry Pi 示例
在 Android 和 iOS 示例中,您也可以選擇使用加速器(GPU、NNAPI 或 CoreML)來(lái)運(yùn)行姿態(tài)預(yù)測(cè)模型。
Android 示例應(yīng)用屏幕截圖。圖像來(lái)自 Pixabay
MoveNet 性能
我們已對(duì) MoveNet 進(jìn)行優(yōu)化,使其能在由 TensorFlow Lite 提供支持的硬件加速器(包括 GPU 和獲得 Android NN API 支持的加速器)上更好地運(yùn)行。MoveNet 的性能基準(zhǔn)結(jié)果可助您選擇最適合您用例的運(yùn)行時(shí)配置。
模型大小 (MB)mAP*延遲時(shí)間 (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
主干,F(xiàn)P32)13.3MB45.680ms40ms338ms
* 我們?cè)?COCO 關(guān)鍵點(diǎn)數(shù)據(jù)集的子集上測(cè)量 mAP,并在其中篩選并裁剪每張圖像,使其只包含一個(gè)人像。
** 在持續(xù)負(fù)載下,我們使用帶有 TensorFlow 2.5 的 Android 和 Raspberry Pi 示例應(yīng)用測(cè)量端到端的延遲時(shí)間。
●
選擇 Lightning 或 Thunder 模型。首先,您應(yīng)該了解 Lightning 模型的準(zhǔn)確率能否滿足您的用例。
對(duì)于您的用例而言,如果 Lightning INT8 模型的準(zhǔn)確率足夠高,則可以選擇該模型,因?yàn)樗窍盗心P椭畜w積最小、速度最快的模型。模型的越快則意味著其能耗越少。
如果準(zhǔn)確率對(duì)于您的用例而言至關(guān)重要,Thunder FP16 模型則是理想之選。
●
選擇加速器。加速器的性能會(huì)因不同的制造商制造的 Android 設(shè)備而異。
CPU 是最為安全便捷的選擇,因?yàn)榭梢钥隙ǖ氖牵珻PU 幾乎可以在任何能運(yùn)行 TensorFlow Lite 的 Android 設(shè)備上正常工作。但在通常情況下,相較于在加速器上運(yùn)行模型,在 CPU 運(yùn)行模型時(shí)速度更慢,且耗能更高。所有 MoveNet 模型都能在 CPU 上運(yùn)行良好,因此您應(yīng)該根據(jù)自身的準(zhǔn)確率需求選擇模型。
GPU 是應(yīng)用最廣泛的加速器,能夠提供出色的性能提升。如果您想使用 GPU,F(xiàn)P16 量化模型則是理想之選。
Android NNAPI 是一種能在 Android 設(shè)備上支持其他 ML 加速器的便捷方式。如果您已經(jīng)將 CPU 或 GPU 用于其他工作負(fù)載,并且用戶設(shè)備運(yùn)行版本為 Android 10 或更高版本,則您可以選擇滿足您準(zhǔn)確率需求的模型,并讓 NNAPI 選擇最適合您模型的路徑。
如果您是 IoT 開(kāi)發(fā)者,不妨使用 Coral 來(lái)提升推理速度。請(qǐng)?jiān)诖颂幉榭?Coral 基準(zhǔn)數(shù)據(jù)。
此處
https://coral.ai/models/pose-estimation/
●
對(duì)模型進(jìn)行無(wú)線部署,而非將其捆綁在應(yīng)用的二進(jìn)制文件中。
由于 Android 生態(tài)系統(tǒng)的多元化,我們無(wú)法提供適用于所有用戶的統(tǒng)一模型。對(duì)于使用低端設(shè)備的用戶而言,Lightning INT8 模型是最佳選擇,因?yàn)樵撃P退俣茸羁欤夷芎淖钌佟H欢鴮?duì)于使用高端設(shè)備的用戶而言,不妨憑借 Thunder FP16 模型提供更為出色的性能。如果您想根據(jù)用戶設(shè)備更改模型,則可以考慮使用免費(fèi)版Firebase ML 托管您的模型,而非將所有打算使用的模型捆綁到應(yīng)用中。如果用戶開(kāi)始使用需要 TFLite 模型的應(yīng)用功能,則您可以編寫邏輯,為每個(gè)用戶設(shè)備下載最佳模型。
Firebase ML
https://firebase.google.com/docs/ml/manage-hosted-models
姿態(tài)分類
TensorBoard 是 TensorFlow 的可視化工具包。通過(guò)將 TensorFlow Quantum 模型與 TensorBoard 進(jìn)行集成,您將獲得許多開(kāi)箱可用的模型可視化數(shù)據(jù),例如訓(xùn)練損失和準(zhǔn)確性、可視化模型圖和程序分析。
為簡(jiǎn)化姿態(tài)分類流程,我們還發(fā)布了 Colab notebook,該工具能夠教您如何通過(guò)結(jié)合 MoveNet 和 TensorFlow Lite,并根據(jù)自定義姿態(tài)數(shù)據(jù)集來(lái)訓(xùn)練自定義姿態(tài)分類模型。這表示如果您想要識(shí)別瑜伽姿勢(shì),您需要做的就是收集您想識(shí)別的姿態(tài)圖像并為其添加標(biāo)簽,然后按照教程進(jìn)行訓(xùn)練,接著將瑜伽姿勢(shì)分類器部署到您的應(yīng)用中。
姿態(tài)分類器由兩個(gè)階段構(gòu)成:
1. 利用 MoveNet 檢測(cè)輸入圖像中的關(guān)鍵點(diǎn)。
2. 利用小型 TensorFlow Lite 模型,對(duì)已檢測(cè)到的關(guān)鍵點(diǎn)進(jìn)行姿態(tài)分類。
利用 MoveNet 進(jìn)行姿態(tài)分類的示例。輸入圖像來(lái)自 Pixabay
為訓(xùn)練自定義姿態(tài)分類器,您需要準(zhǔn)備姿態(tài)圖像,并將它們放入下圖所示的文件夾結(jié)構(gòu)中。您可以根據(jù)想要識(shí)別的類別為每個(gè)子文件夾命名。然后運(yùn)行 notebook 來(lái)訓(xùn)練自定義姿態(tài)分類器,并將其轉(zhuǎn)換為 TensorFlow Lite 格式。
yoga_poses
|__ downdog
|______ 00000128.jpg
|______ 00000181.bmp
|______ 。..
|__ goddess
|______ 00000243.jpg
|______ 00000306.jpg
|______ 。..
。..
TensorFlow Lite 姿態(tài)分類模型非常小,其大小只有 30KB 左右。該模型從 MoveNet 中獲取標(biāo)記點(diǎn)輸出,使姿態(tài)坐標(biāo)標(biāo)準(zhǔn)化,并將坐標(biāo)傳遞至幾個(gè)完全連接的層中。模型的輸出是一個(gè)概率列表,即姿態(tài)為每個(gè)已知的姿態(tài)類別。
TensorFlow Lite 姿態(tài)分類模型概覽
您可以在任何已發(fā)布的 Android 或 Raspberry Pi 姿態(tài)預(yù)測(cè)示例應(yīng)用中試用姿態(tài)分類模型。
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
未來(lái)計(jì)劃
我們的目標(biāo)是提供核心的姿態(tài)預(yù)測(cè)技術(shù)以及動(dòng)作識(shí)別引擎,讓開(kāi)發(fā)者在此基礎(chǔ)上構(gòu)建創(chuàng)新性應(yīng)用。以下是我們目前正在積極研究的一些方向:
●
對(duì) MoveNet 當(dāng)前版本做出改進(jìn),使其能在同一轉(zhuǎn)接路徑中檢測(cè)多種姿態(tài)。
●
研發(fā)新型動(dòng)作識(shí)別技術(shù),使其能在多個(gè)幀上檢測(cè)姿態(tài)。
責(zé)任編輯:haq
-
模型
+關(guān)注
關(guān)注
1文章
3238瀏覽量
48824 -
tensorflow
+關(guān)注
關(guān)注
13文章
329瀏覽量
60530 -
TensorFlow Lite
+關(guān)注
關(guān)注
0文章
26瀏覽量
621
原文標(biāo)題:MoveNet 技術(shù)更新|基于 TensorFlow Lite 的姿態(tài)模型預(yù)測(cè)及分類
文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論