作者 | 其聲
來源 | 阿里技術公眾號
一 背景
過去一年,阿里體育技術團隊在端智能方面不斷探索,特別地,在運動健康場景下實現了實踐落地和業務賦能,這就是AI運動項目。AI運動項目踐行運動數字化的理念,為運動人口的上翻提供了重要支撐,邁出了阿里體育端智能運動領域的第一步,為用戶帶來了更加有趣的新穎玩法。上線以來,項目受到了廣泛關注。
2020年因新冠疫情,傳統的線下運動受到限制,居家運動逐漸成為新趨勢。基於阿里巴巴強大的技術沉澱,阿里體育團隊順應線上運動的迫切需要,開發出基於AI識別的智能運動,為用戶提供了簡便、好玩的新型居家運動方式。只需一部手機和3-4平米的場地,就可以開展AI運動。運動時,用戶打開樂動力APP,將手機固定在場地一側,適當設置手機角度,根據應用的自動語音提示調整身體與手機距離,直到人體完全位於識別框內,即可開始運動。
二 端智能實踐
經過⼀年的探索和完善,從驗證DEMO到囊括多種動作、支持能力遷移的AI運動智能平臺,阿⾥體育建立了系統化的客戶端運動智能體系。端智能運動體系基於阿里深度推理引擎在手機端進行推理,識別⼈體姿態和動作,分析人體姿態、運動軌跡、動作角度等,給出實時反饋並進行動作糾正,通過能力的模塊化組合,現已支持十多種運動動作和數十種玩法,實現了運動與AI的有機整合,讓用戶的線上運動變得上手簡單而又充滿趣味。
三 技術支持
端智能運動的基本技術思路是運用MNN推理引擎進行推理和姿態識別。即
- 實時檢測圖像及視頻中的人體輪廓,定位人體14個關鍵骨骼點,包括頭、肩、腳等重點關節部位。
- 基於這些關鍵點信息,連點成線、連線形成動作,可以分析人體姿態、動作角度和運動軌跡。
- 通過動作姿態匹配,檢測用戶運動動作,實現動作的計時與計數。同時,實時檢測分析動作標準化程度,給出狀態反饋,糾正用戶動作,實現互動,提高交互體驗。
傳統運動方式下,用戶在運動時可以及時得到現場輔助人員(教練員、考官或親友)的實時提醒和幫助。端智能運動方式下,用戶在做動作時只能與手機應用進行交互。交互的能力和識別水平會受到推理模型能力、運動場景複雜度、運動匹配識別算法等一系列因素的影響。在端智能運動能力的探索和落地過程中,會遇到一些新的問題或者難題,如人機方位匹配、骨骼點識別丟點、點誤識別、二維失真、用戶移動、手機晃動、場景噪聲等。這些問題不一一贅述,僅選取幾個有代表性的問題進行分享:
- 動作的有效性判斷及關鍵算法設計,以提高動作匹配精度,這是智能運動能力的基礎。
- 在保證識別效果的前提下,採取有效措施,降低移動終端的資源消耗,以提升用戶體驗,主要表現是費電和發熱。
- 採取更加靈活的方式,減輕移動端測試的人力和時間消耗,提高開發和測試效率,為團隊的交付保障提供有力支撐。
提升識別精度
智能運動帶給用戶的最直觀、最基礎的感受就是動作計數準確性。如果動作識別計數不準,用戶使用APP的積極性就會打消,參與性就不高。為此,我們要首先解決計數準不準的問題。
智能運動計數的基本原理是,把一個完整動作分解成若干個小步驟,然後對每個步驟觸發識別和判斷,全部步驟遍歷後,對整個動作進行有效性確認。如果有效,計數加1;反之就重複上述過程。簡言之,智能運動識別與計數是一個狀態機。將一個運動動作離散化,抽象成N個狀態機,{s(0),s(1),s(2),...,s(n-1)},狀態機按照一定的順序依次進行檢測,全部檢測到意味用戶完成了該動作,對計數加1;若某個狀態未被檢測到,觸發對應反饋信息,重置狀態機進入新的循環。每一個狀態機對應著一定的觸發條件,通過實時骨骼點座標與狀態的循環匹配性檢測,獲取一個動作匹配結果。
不難看出,動作識別精度與動作匹配算法緊密相關,算法匹配效果好,識別精度就越高。為提高動作識別精度,可以選取影響匹配算法的因素作為切入點和突破口,骨骼點、狀態機、匹配等。相應的解決辦法為:
- 提高骨骼點穩定性,確保狀態匹配結果精度。
- 選擇骨骼點穩定、易識別、具有代表性的動作作為狀態機。
- 幀率要能夠覆蓋一個動作的所有狀態機。
下面將舉例進行說明。
骨骼點識別準確度對動作匹配有著重要影響。如下圖所示:測試對象左手臂骨骼點識別出現錯誤。如果徑直進行匹配,顯然會得到錯誤的結果。針對這種情況,應當利用好用戶的歷史動作信息,在動作匹配算法上對動作匹配進行糾正。
還有一種情況,用戶已經完成某種動作的全部動作,如下圖中的開合跳,由於採樣幀率低,無法捕獲和識別全部開合跳運動過程中的全部姿態,造成某個狀態匹配不成功,最終導致開合跳動作匹配錯誤。對於低幀率問題,可從模型和輸入源兩個方面著手。對於模型來說,在不影響動作識別精度情況下,採用精簡模型,減少推理耗時。對不同的終端設備,採用不同分辨率的輸入源,降低原始數據處理操作耗時。
降低性能消耗
受物理條件影響,手機端算力和存儲空間有限。此外,深度學習推理本身包含大量的運算,資源消耗大。如果直接在端上進行深度學習推理,再考慮上手機端自身業務(如攝像頭、錄製視頻、動畫效果)的資源消耗,CPU和內存開銷就顯著增長,直觀表現是手機發熱明顯,電量消耗很快。智能運動在端智能上落地時,要特別考慮降低性能消耗,這對於提升用戶體驗來說至關重要。
降低整體性能消耗,要追根溯源,從降低單幀消耗處著手。單幀處理可以劃分為三個階段:分別是推理前、推理和推理後。
這三個階段分別起著不同的作用。推理前階段主要完成格式轉換,將攝像頭獲取的流數據轉換為推理需要的數據格式,如YUV格式、RGBA格式。推理階段主要完成計算輸出骨骼點座標。對輸入的幀數據,經過推理引擎,執行一系列算法,輸出推理結果,如姿態識別是將輸入圖片的RGBA數據轉換成骨骼點座標數據。推理後階段主要完成展示,進行渲染操作和業務相關操作,如UI展示、動畫效果展示。
相應地,可對上述三個階段分別進行優化。其中,推理過程中的優化由阿里深度推理引擎MNN負責,這裡不作討論。對於推理前階段的數據轉換,應減少不必要的中間轉換環節,直接將攝像頭流數據轉換成為需要的格式。如推理使用RGBA裸數據,就直接將攝像頭流數據轉換為RGBA格式。對於推理後階段,應根據承載的平臺選擇合適的渲染方案,降低渲染消耗。對於iOS平臺,可直接採用Metal進行渲染提效。
提高測試效率
AI智能運動是阿里體育團隊在體育數字化上的一次大膽嘗試。在應用開發特別是測試環節中,投入相當的人力、設備及時間,不斷完善應用功能、優化應用性能、提升用戶體驗。此外,AI運動識別的效果測試受環境因素的影響較大,如光線、背景、距離、人物在攝像頭中的成像大小等。這就對測試方式提出了考驗。
以傳統測試方案為例:一般是真人、實地、實時動作,測試人員手動記錄結果再事後分析,如下圖所示。
不難想象,AI智能運動所運行的手機有著不同的品牌、型號、系統版本和性能參數,AI智能運動的用戶可能處於不同的使用環境,若採用傳統的測試方式,對不同因素進行測試覆蓋,對測試人員、測試時間提出了很大的挑戰,測試的一致性與精度也難以保證。具體原因如下:
- 人工成本較高:一次測試需多名同學配合,耗時耗力。
- 測試環境較單一:無法應對線上複雜多樣的環境。
- 測試結果量化難。無法對模型的精度、算法的效率、動動匹配準確度、精度提升度、性能消耗等量化評估。
- 問題定位難。事後分析排查,無法復現定位線上客訴問題。
傳統的測試方法難以為繼,為克服上述困難,阿里體育技術團隊開發了一套AI運動自動測試工具,專門用於解決AI智能項目測試難題,實現了線上問題的快捷定位與迴歸,並對模型算法精度實現量化評估。
自動測試工具的解決思路是:批量解析視頻集,模擬真實場景,獲取骨骼點數據,進行業務結果測試,自動生成測試報告。具體技術方案如下圖所示:
採用新的測試工具後,顯著地降低了人工成本、提高了測試效率。具體測試效果如下:
需要注意的是,測試工具的效果與測試樣本的數量相關,樣本越豐富,測試精度越好。
四 業務結果
阿里體育智能運動現已支持數十種運動動作,開發出豐富的AI訓練課程,同時通過運動能力的模塊化組合,支持未來不斷拓展新的動作。
自AI智能運動誕生以來,樂動力APP陸續上線了直臂開合跳、俯臥撐等上肢動作,臀橋、深蹲等下肢動作以及跳繩、開合跳等全身動作等多種運動形式,使得用戶可以不受時間和場地限制,隨時隨地和朋友一起參與到AI運動,提升了APP的用戶吸引力和趣味性。此外,AI訓練課程創新引進明星資源,推進全年52周每週7天不間斷的“明星陪練”課,以明星帶動用戶養成運動習慣、快樂運動、愛上運動。阿里體育團隊也將不斷地根據用戶需要打造更多的運動玩法,豐富產品功能,形成阿里體育端智能的獨特業務品牌和創新產品特色。
阿里雲開發者社區邀你參加
《我的Java打怪日記》徵文
阿里雲開發者社區全新升級!歡迎所有熱愛技術的開發者在這裡學習、成長,並特別推出《我的Java打怪日記》有獎徵文活動,以Java為主題,分享同學們在Java學習中的思考和感悟,期待和開發者們一起,共建原創、開放、共享的開發者社區!
點擊這裡,快來參與吧~