智慧健身動作識別:PP-TinyPose打造AI虛擬健身教練!

語言: CN / TW / HK

圖片

在人工智慧技術更迭及後疫情時代的背景下,隨著居民生活模式發生改變,智慧運動健身行業得到了極大的發展。劉畊巨集帶起的“本草綱目”健身熱潮也正式開啟了居家健身時代,隨之而來的便是人們對個性化、智慧化的健身動作識別、矯正、計數的強烈需求,如何隨時隨地進行便捷、標準的健身運動逐漸成為了人們熱議的話題。

在健身場景下,動作型別與人體骨骼點的位置變化之間存在著密不可分的關係,因此採取人體關鍵點檢測技術實現智慧化健身動作識別與計數就再為合適不過了。

圖片

                          圖1:基於PP-TinyPose的健身動作識別

那麼具體如何能利用人體關鍵點檢測實現智慧化的健身動作識別與計數呢?今天就手把手帶大家用飛槳搭建一個AI虛擬健身教練吧!

不慌,先碼住完整教程:

https://github.com/PaddlePaddle/PaddleDetection

★ 記得Star收藏 ★

防止走丟又實時關注更新

圖片

專案難點

非常規姿態多

在健身、舞蹈等場景中,人體姿態明顯區別於常見的站姿,存在較多複雜的姿態。常見的公開資料集中往往缺少這類資料,因此在處理這類複雜姿態時,容易出現檢測框位置或關鍵點位置不準確的問題,導致動作識別出現誤檢漏檢,無法達到令人滿意的效果。

模型體積與速度要求高

體育健身動作持續時間通常在秒級以內,因此對檢測響應速度要求極高,同時隨著邊緣端硬體在健身行業的普及,對模型的體積要求也愈加嚴苛。

視訊抖動嚴重

使用關鍵點演算法處理視訊資料時,由於預測針對單幀影象進行,在視訊結果上往往會有抖動的現象。對於依靠精細化座標的應用場景(如健身計數、基於關鍵點的虛擬渲染等),非常容易造成誤檢或視覺化效果不流暢的問題。

關鍵點點數需求多變

例如在芭蕾舞場景下,墊腳、勾腳等動作僅依賴腳腕關鍵點無法進行區分,往往需要更多骨骼點資訊才能實現精細化動作識別。

方案設計

圖片 圖2:方案設計

模型選型

PP-TinyPose的出世徹底打破了精度與速度無法兼得的難題,成為輕量級關鍵點檢測的最佳選擇。PP-TinyPose採用Top-Down的方式,先應用3.3M、150FPS的超輕量檢測網路PP-PicoDet檢測出人體,再用基於Lite-HRNet的移動端優化模型確保關鍵點檢測的高精度,同時擴大資料集,減小輸入尺寸,預處理與後處理加入AID、UDP和DARK等策略,保證模型的高效能。實現速度在FP16下達到122FPS的情況下,精度也可達到COCO資料集51.8%AP,不僅比其他類似實現速度更快,精度更是提升了130%!

圖片

資料準備

資料收集包含人體檢測和人體關鍵點檢測兩部分,均使用COCO train2017和AI Challenger trainset作為訓練集。將兩資料集標註含義進行統一,並轉換為COCO資料格式後執行訓練。

圖片
圖3:資料準備

模型訓練優化

更令人驚喜的是,在原版的基礎上,針對體育健身場景難點,PP-TinyPose分別從場景資料多樣性、檢測模型迭代、關鍵點穩定性三個方向全面升級,釋出了專為體育動作識別打造的增強版本,最終相比原版在健身場景資料上提升9.1%AP,實現速度85FPS精度77.1%AP。同時,新增7個複雜動作的精準識別,包括側身、臥躺、跳躍、高擡腿等非常規動作。具體來看:

場景資料多樣性

在COCO資料集和AI Challenger資料集的基礎上,進一步結合採集的健身、舞蹈等較難場景資料對模型進行迭代,提升模型預測效果。

圖片

圖4:PP-TinyPose增強版效果對比圖

檢測模型迭代

使用PP-PicoDet增強版模型,在原版基礎上引入TAL及ETA Head,優化PAN等結構,COCO資料集精度提升2個點以上。基於豐富的健身場景資料,人體檢測模型精度提升6.8% mAP****。

關鍵點穩定性

加入OneEuro濾波器和EMA兩種關鍵點穩定方式,將當前關鍵點座標結果和歷史關鍵點座標結果結合計算,使得輸出的座標更加穩定平滑。

圖片

圖5:穩定性升級對比圖

如果模型仍無法滿足要求,開發者還可以基於飛槳目標檢測開發套件PaddleDetection所提供的二次開發文件,進行模型訓練及優化、關鍵點新增、刪減與類別自定義,5分鐘即可實現關鍵點檢測個性化開發。

圖片

圖6:PP-TinyPose增強版支援手指、腳趾等29個關鍵點

  • 完整連結:

https://github.com/PaddlePaddle/PaddleDetection/blob/develop/docs/advanced_tutorials/customization/keypoint_detection.md

後處理邏輯

得到人體關鍵點檢測結果後,可以結合不同關鍵點在相同幀的相對關係,或者不同幀下同一關鍵點的位置變化來進行動作識別和計數。

以側平舉為例,當手臂擡起角度接近水平,則認為手臂處於擡起動作;當手臂放下角度接近垂直,則認為手臂處於放下動作;兩動作交替完成後認為側平舉動作計數加一。

圖片圖7:動作計數邏輯

除此之外,PP-TinyPose增強版還配套了深蹲和站姿上舉的動作識別計數實現。

  • 詳細程式碼連結:

https://github.com/zhiboniu/pose_demo_android/blob/release/1.0/app/src/main/cpp/pose_action.cc

端側部署
圖片

圖8:端側部署效果展示

通過以上方法即可獲得高效的健身動作識別計數模型,依託於飛槳端側推理引擎Paddle Lite,能夠靈活快速的部署到各類端側裝置上。

blog.csdnimg.cn/img_convert/7479679e3abfb3507e9b0dddb05c8b65.png)

如需更新模型並實現更豐富的健身動作識別,可參考以下流程:

  1. 訓練模型匯出為.nb字尾的Paddle Lite模型;

  2. 替換pose_demo_android中models下的nb模型檔案;

  3. 通過Android Studio編譯執行程式碼,重新生成APP。

  • 詳細步驟參考連結:
    https://github.com/zhiboniu/pose_demo_android

作為輕量化骨骼點檢測的開源SOTA演算法, PP-TinyPose以精度速度高、微小目標識別效果好、多人檢測速度快、端側部署易用性強、體育健身動作檢測準著稱,在端側微弱算力上,使用飛槳輕量化推理引擎Paddle Lite,即可快速實現各類健身動作識別與計數!

還在等什麼,快來搭建屬於你的AI健身教練吧!

  • 教程文件及模型下載連結:

https://github.com/PaddlePaddle/PaddleDetection/blob/develop/industrial_tutorial/README.md

最後,歡迎大家掃碼進群,與PP-TinyPose核心研發工程師一起交流討論,同時Get飛槳最新產品動態!

關注【飛槳PaddlePaddle】公眾號

獲取更多技術內容~

本文同步分享在 部落格“飛槳PaddlePaddle”(CSDN)。
如有侵權,請聯絡 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。