谷歌開發手部識別系統,適配跨平臺框架MediaPipe,手機可用!

2020-12-23 大數據文摘

大數據文摘出品

來源:谷歌AI

編譯:趙偉、李雷、錢天培

近日,谷歌發布了一個高性能的實時手部追蹤系統。不需要高性能的GPU、TPU,在手機上就能用!

什麼是手部追蹤呢?來看一下下面這張動圖就知道了。

通過MediaPipe在手機上實現實時3D手部

只要把你的手往鏡頭前一伸,該系統就可以通過使用機器學習(ML)從單個視頻幀推斷出手部的21個骨骼關鍵點(每根手指4個,手掌1個)的位置,從而得到高保真的手掌和手指運動追蹤。

在此基礎上,這一系統還可以推斷出手勢的含義。

雖然手部追蹤這種能力是人類天生的,但是對計算機來說,能穩定地實時感知手部狀態是一項極具挑戰性的視覺任務。

難度來自多個方面。比如,雙手的運動經常會導致某一部分被遮蓋(例如合掌和握手),而手的顏色也沒有很強的對比度。

同時,手部追蹤也是各技術領域和應用平臺上改善用戶體驗的關鍵技術之一。

比如說,手部形狀識別是手語理解和手勢控制的基礎。它還可以在增強現實(AR)中將虛擬的數字內容疊加到真實的物理世界之上。

因此,谷歌這次的實時手部追蹤意義重大。

事實上,谷歌已經在今年6月份的CVPR 2019會議上演示過該模型。而這一次,谷歌選擇在MediaPipe這一個開源跨平臺框架正式發布這一系統。

該系統背後的原理是什麼呢?我們一起來看。

用於手部跟蹤和手勢識別的機器學習

谷歌的手部追蹤方案使用了一個由多個模型協同工作組成的機器學習管道:

一個手掌探測器模型(BlazePalm),作用於整個圖像並返回定向的手部邊界框。

一個手部標誌模型,作用於手掌探測器返回的裁剪圖像區域,並返回高保真的3D手部關鍵點。

一個手勢識別器,將先前得到的關鍵點排列分類為不同的手勢。

這種架構類似於我們最近發布的面部網格ML管道以及其它用於姿勢估計的架構。提供給手部標誌模型的手掌剪裁圖像大大降低了對額外數據(如旋轉、平移和縮放)的要求,從而允許其將大部分能力用於針對坐標預測精度的處理。

frame:幀;palm detector:手掌探測器;hand landmarks:手部標誌模型;gesture recognizer:手勢識別器

BlazePalm:實時手部/手掌探測

為了檢測初始手部位置,我們採用名為BlazePalm的單發探測器模型,它參考了MediaPipe中的BlazeFace,並進行了優化以針對實時移動應用。

檢測人手是一項非常複雜的任務:我們的模型必須適用於各種尺寸的手掌,還要能夠檢測各種遮擋和合掌的情況。

面部具有眼睛和嘴巴這樣的高對比度特徵,手部卻沒有。因此,機器學習模型通常很難僅靠視覺特徵來進行準確檢測。但如能提供額外的環境信息,如手臂、身體或人物等特徵等,則有助於手部的精確定位。

在我們的方法中使用了不同的策略來解決上述挑戰。首先,我們訓練的是手掌探測器而非手部探測器,因為檢測像手掌和拳頭這樣的剛性物體的邊界比檢測整個手部要簡單得多。此外,由於手掌的面積較小,這使得非極大值抑制算法在雙手遮擋情況(如握手)下也能得到良好結果;手掌可以使用方形邊界框(也就是ML術語中的anchors)來描述,忽略其長寬比,從而可將anchors的數量減少3-5倍。其次,編碼-解碼特徵提取器可用於在更大範圍的環境中感知很小的物體(類似於RetinaNet方法)。最後,我們將訓練期間的焦點損失(focal loss)降至最低,用以支持由於高尺度方差而產生的大量anchors。

利用上述技術,我們在手掌檢測中得到了95.7%的平均精度。而使用固定的交叉熵損失且沒有解碼器的情況下精度基準僅為86.22%。

手部標誌模型

在對整個圖像進行手掌檢測之後,手部標誌模型通過回歸(即直接坐標預測)在之前檢測到的手部區域內精確定位了21個3D手部骨骼關鍵點坐標。這個模型學習了連續的手勢圖案,並且對於被遮擋只有部分可見的手部也能識別。

為了獲得可靠數據,我們手動標註了大約30000幅具有手部骨骼關鍵點坐標的真實圖像,如下所示(我們從圖像深度圖中獲取Z值,如果它相應的坐標存在)。為了更好地覆蓋可能的手部姿勢並對手部幾何形狀的性質提供額外的比照,我們還在各種背景下渲染高質量的合成手部模型,並將其映射到相應的3D坐標。

上圖:傳給跟蹤網絡的帶標註的校準手勢圖

下圖:帶標註的渲染合成手部圖像

然而,純粹的合成數據很難泛化應用到新的數據集上。為了解決這個問題,我們使用混合訓練模式。下圖顯示了大概的模型訓練流程。

Rendered synth:渲染合成圖片;real-world photos:真實圖像;hand presence:手部圖片;separable convolutional festure extractor:可分離卷積特徵提取;21 3Dkeypoints regression:21個3D關鍵點回歸;hand presence classification:手部分類

手部跟蹤網絡的混合訓練模式,裁剪的真實圖像和渲染的合成圖像用作預測21個3D關鍵點的輸入數據

下表總結了基於訓練數據性質的回歸準確率。綜合使用合成數據和真實數據可顯著提升性能。

手勢識別

基於預測出來的手部骨骼,我們用一個簡單的算法來推導手勢含義。首先,每個手指的狀態(如彎曲或筆直等)由多個關節的累積彎曲角度決定。然後我們將手指狀態集映射到一組預定義的手勢集合上。這種簡單卻有效的技術使我們能夠精確地估計基本的靜態手勢。現有的機器學習管道支持識別不同國家的姿勢(如美國、歐洲和中國),還支持各種手勢含義,包括「拇指向上」、「握拳」、「OK」、「搖滾」和「蜘蛛俠」等。

MediaPipe實現

谷歌的手部跟蹤MediaPipe模型圖如下所示。該圖由兩個子圖組成,一個用於手部檢測,一個用於手部骨骼關鍵點(標誌點)計算。

MediaPipe的一個關鍵優化是手掌探測器僅在必要時(很少)運行,從而節省了大量的計算時間。

MediaPipe地址:https://mediapipe.dev

GitHub地址:https://github.com/google/mediapipe

MediaPipe是用於構建應用ML pipeline(例如,視頻,音頻,任何時間序列數據)框架。利用MediaPipe,可以將感知管道構建為模塊化組件的圖形,包括例如推理模型(例如,TensorFlow,TFLite)和媒體處理功能。

谷歌在上周也將這一平臺進行了開源,適配多種視覺檢測任務。目前在GitHub上星標已經達到了2k+。

通過從當前幀中計算手部關鍵點推斷後續視頻幀中的手部位置來實現這一點,從而不必在每個幀上都運行手掌檢測器。為了得到穩定結果,手部探測器模型會輸出一個額外的標量,用於表示手是否存在於輸入圖像中並姿態合理的置信度。只有當置信度低於某個閾值時,手部探測器模型才會重新檢測整個幀。

Realtimeflowlimiter:實時限流器;handdetection:手部探測;detectiontorectangle:檢測到矩形;

image cropping:圖像裁剪;handlandmark:手部標誌;landmarktorectangle:標誌成矩形;annotationrender:注釋渲染

手部標誌模型的輸出(REJECT_HAND_FLAG)控制何時觸發手部檢測模型。這種行為是通過MediaPipe強大的同步構建塊實現的,從而實現ML管道的高性能和最佳吞吐量。

高效的ML解決方案可以實時並在各種不同的平臺和外形上運行,但與上述簡化描述相比,其具有更高的複雜性。最後,谷歌在MediaPipe框架中將上述手部跟蹤和手勢識別管道開源,並附帶相關的端到端使用場景和原始碼。

連結如下:

https://github.com/google/mediapipe/blob/master/mediapipe/docs/hand_tracking_mobile_gpu.md

這為研究和開發人員提供了完整的可用於實驗的程序棧,可以基於谷歌的模型來對新想法進行原型設計。

未來方向

谷歌稱,未來計劃通過更強大和穩定的跟蹤鎖定方法擴展此技術,來擴大能可靠檢測的手勢數量,並支持實時變化的動態手勢檢測。

相信這項技術的開源也可以促使研究和開發者社區產生大量的創意和應用!

相關報導:

https://ai.googleblog.com/2019/08/on-device-real-time-hand-tracking-with.html

相關焦點

  • 谷歌發布 MediaPipe Holistic,實現移動端同時進行人臉、手部和...
    在行動裝置上對人體姿勢、人臉關鍵點和手部追蹤的實時同步感知,可以實現各種有趣的應用,如健身和運動分析、手勢控制和手語識別、增強現實效果等。 谷歌之前發布的MediaPipe就是一個專門為GPU或CPU而設計的開源框架,已經為這些單個任務提供了快速、準確而又獨立的解決方案。
  • MediaPipe 集成人臉識別,人體姿態評估,人手檢測模型|image|數據流...
    543個界標(每手33個姿勢界標,468個臉部界標和21個手界標)。  對於姿勢模型的精度足夠低以至於所得到的手的ROI仍然不夠準確的情況,但我們運行附加的輕型手重新裁剪模型,該模型起著的作用,並且僅花費了手模型推斷時間的10%左右。  MediaPipe  MediaPipe是一款由GoogleResearch開發並開源的多媒體機器學習模型應用框架。
  • 谷歌開源基於 ML 的手部跟蹤算法:手機端實時檢測,多個手勢同時捕捉
    它對整個圖像進行操作,並返回一個定向的手部邊界框; 手部標誌模型。它在掌上探測器定義的裁剪圖像區域上操作,並返回高保真的 3D 手部關鍵點; 手勢識別器,它將先前計算的關鍵點配置分類為一組離散的手勢。Mediapipe 附帶了一組可擴展的計算器,可用於解決各種設備和平臺的模型推理、媒體處理算法以及數據轉換等任務。而像裁剪、渲染和神經網絡計算這樣的單個計算器,可以獨立在 GPU 上執行。例如,我們在大多數現代手機上採用 TFLite GPU 推理。 我們用於手部跟蹤的 MediaPipe 架構圖如下所示。該圖由兩個子圖組成——一個用於手檢測,另一個用於手部關鍵點(即標誌性)計算。
  • 谷歌發布MediaPipe Holistic,優化人體姿態、面部和手部
    原標題:谷歌發布MediaPipe Holistic,優化人體姿態、面部和手部(映維網 2020年12月11日)支持行動裝置實時、同步地感知人體姿態和面部特徵並進行手部追蹤,這可以實現多種有影響力的應用,如健身和運動分析、手勢控制和手語識別、以及增強現實效果等等。
  • 谷歌用MediaPipe實現手機高效實時3D對象檢測
    MediaPipe是一個開原始碼跨平臺框架,主要用於構建用於處理不同形式的感知數據的管道,而Objectron在MediaPipe中實現,並能夠在行動裝置中實時計算面向對象的3D邊界框。根據單張圖像進行3D對象檢測。MediaPipe Objectron可以支持確定行動裝置實時確定日常對象的位置,方向和大小。
  • 谷歌繼續開源新AI框架,可實現手機高效實時3D目標檢測
    3月12日,谷歌AI在其官方博客上發布了一款名為MediaPipe Objectron的算法框架,利用這個算法框架,只要一部手機,就能實時從2D視頻裡識別3D物品的位置、大小和方向。這一技術可以幫助機器人,自動駕駛汽車,圖像檢索和增強現實等領域實現一系列的應用。
  • 有這六大頂級跨平臺開發神器,還單學啥Android、IOS開發
    1, Flutter (Google)Flutter是谷歌的最新移動UI框架。Beta1版本於2018年2月27日在2018 世界移動大會公布,Beta2版本2018年3月6日發布。開發者可以使用 Flutter 在 iOS 和 Android 平臺上開發原生應用,閒魚、NOW 直播、京東 、美團這些應用也有使用 Flutter。
  • 華為發布鴻蒙OS手機開發者Beta版,明年覆蓋1億臺設備
    2、一次開發,多端部署 HarmonyOS提供了用戶程序框架、Ability框架以及UI框架,支持應用開發過程中多終端的業務邏輯和界面邏輯進行復用,能夠實現應用的一次開發、多端部署,提升了跨設備應用的開發效率。
  • 谷歌已經開始玩轉 3D 了
    在當前條件下,如何基於現有的 2D 圖像數據來做3D 檢測呢?日前,谷歌發布了一個針對日常物體的移動實時 3D 物體檢測管道——MediaPipe Objectron。該管道可以檢測2D圖像中的物體,然後通過機器學習模型估計物體的姿勢和大小,再在谷歌最新開發的3D數據集上對模型進行訓練。
  • APP跨平臺開發技術(Flutter VS React Native)分析
    背景APP 跨平臺開發是目前比較熱門的方向,採用 web 框架開發,以 web 的開發體驗快速構建應用,提高了迭代的效率。同時 web 開發方式大多使用動態語言,能夠繞過原生開發限制動態加載,因此具備熱加載、熱更新的能力。用跨平臺技術開發的應用無論性能還是用戶體驗都很接近原生應用。
  • 新版來了,華為餘承東做出新表態,谷歌乾瞪眼
    智慧型手機已經成為用戶離不開的工具,原因是智慧型手機不再是純粹的通訊工具,更是生活服務工具,用戶通過智慧型手機進行叫車、支付等眾多活動。而智慧型手機可以簡單分為兩類,一類是搭載IOS系統的蘋果iPhone,一類是採用谷歌安卓系統的智慧型手機。
  • 谷歌AI新研究讓你拋掉鍵鼠操控屏幕
    在行動裝置上實時、同步地感知人體姿勢、臉部標記和手勢跟蹤等可以實現各種有趣的應用,例如健身和運動分析、姿態控制和手語識別、擴增實境效果等等。谷歌的MediaPipe 是一個開源框架,專門為複雜的感知管道設計,利用加速推理(例如 GPU 或 CPU) 等已經為這些任務提供了快速、準確、獨立的解決方案。
  • HTML5 並非真正跨平臺,統一的企業級瀏覽器可能是解決方案
    HTML5 並非聽上去那麼完美業界一直都說 HTML5 的殺手級武器是跨平臺,意思是,相比原生 APP 要針對不同手機作業系統做開發,HTML5 只需一次開發,就可以在所有作業系統上運行。HTML5 是唯一一個通吃 PC、Mac、iPhone、iPad、Android、Windows Phone 等主流平臺的跨平臺語言。
  • H5 手機 App 開發入門:技術篇
    希望學習和提高手機 App 開發技術的朋友,可以留意一下本文結尾的安卓課程信息。一、手機 App 的技術棧手機 App 的技術棧可以分成三類。(1)原生 App 技術棧 (native technology stack)原生技術棧指的是,只能用於特定手機平臺的開發技術。
  • 如果沒有谷歌框架,安卓手機會失去哪些功能?
    包含谷歌在內,將暫時不會授權華為手機使用Android系統。那麼,當國際版的安卓手機沒有了谷歌框架,將會失去哪些功能呢?這裡小編為大家普及下:對於目前所有的設備,谷歌已經確認,他們將繼續發揮作用的發揮商店和谷歌的應用程式完好無損。他們很可能會停止更新Android,但安全補丁將繼續通過谷歌Play Protect。
  • 谷歌Fuchsia 之後,多終端作業系統正成為下一件大事
    與此同時,Google 方面還發布了針對 Fuchsia 的技術路線圖,其中包括驅動程序框架,文件系統性能,並在可訪問性方面做了優化設計。「 Fuchsia 是一個開放原始碼項目,從平臺本身的體系結構到我們正在構建的開放原始碼社區,其設計都具有包容性。該項目仍在迅速發展,我們歡迎所有人員參與貢獻。」谷歌方面如此表示。
  • 谷歌發力物聯網:推開源藍牙信標平臺Eddystone
    這也就意味著它拋下了美國智慧型手機市場中一半的用戶和全世界智慧型手機市場80%的份額。如果你希望吸引公司們使用信標來打廣告的話,一開局就喪失80%的受眾可不是什麼利好消息。相反,Eddystone是開源的,不僅能用在安卓系統上,iOS通過連結庫文件也可以使用。它在GitHub上存有原始碼。開放也是Eddystone最大的賣點。
  • JNPF快速開發平臺的四大開發框架介紹之移動端開發框架
    JNPF快速開發平臺包含的第二個重要的開發框架是移動端開發框架,即可在手機端、小程序端、微信公眾號埠、H5頁面端等各種智能移動終端來搭載快速開發平臺所開發出來的各種APP運用。通過移動端APP,使用者可以很方便快捷的在手機上實現工作辦公,隨時隨地掌握公司企業的運營管理情況,並迅速做出決策管理和優化調整,直觀地感受到智能化、信息化管理給企事業單位所帶來的各種效益提升。
  • 移動端適配(二)實操篇,前端必掌握技能
    典型移動端框架:淘寶的SUI Mobile框架http://m.sui.taobao.org/這個框架統一使用rem對頁面進行整體縮放。建議使用者對需要適應頁面大小的任何元素都使用 rem 為單位來定義。同時規定iphone6 上使用 1rem = 20px 來換算。
  • ChocolateChip-UI:能「逆轉」的跨平臺應用開發框架
    ChocolateChip-UI是一個移動Web開發框架,主要是採用HTML5、CSS和JavaScript技術來實現。它使用的是語義化的HTML5標記和屬性,並且,開發者可以自定義CSS主題來滿足自己的需求。有時只需使用ChocolateChip-UI所提供的布局和構件,就可以很快速的構建出一個Web應用。