MediaPipe - BlazeFace原理
BlazeFace原理
- 摘要
- 介紹
- Face detection for AR pipelines
- Model architecture and design
- Enlarging the receptive field sizes(增大感受野)
- Feature extractor(特征提取)
- Anchor scheme(改進的anchor 機制)
- Post-processing(后處理機制)
- Experiments
- Applications
簡介:
在移動GPU上進行亞毫秒級神經人臉檢測
BlazeFace算法,這是一款專為移動GPU推理量身定制的輕量級且性能卓越的人臉檢測器。
BlazeFace 在旗艦移動設備上以200-1000 + FPS的速度運行。 這種超實時性能使其能夠應用于任何對性能要求極高的增強現實應用中。
算法主要創新點:
1)極輕量級特征提取網絡,受MobileNet V1/V2啟發,但又與其不同;
2)修改的SSD目標檢測anchor機制,使其更適于GPU計算;
3)使用tie resolution 策略替換非極大抑制(NMS)。
簡單總結,作者在MobileNet-SSD目標檢測框架下,改進了網絡結構、anchor機制、替換NMS后處理,使算法在人臉檢測任務中保持高精度的同時,在移動GPU上速度還很快。
論文地址:https://arxiv.org/pdf/1907.05047v1.pdf
論文翻譯
摘要
我們展示了BlazeFace,這是一種輕量級且性能良好的面部檢測器,專為移動GPU推理量身定制。在旗艦設備上,它以200–1000 + FPS的速度運行。這種超實時性能使其可以應用于需要準確的感興趣面部區域作為特定任務模型(例如2D / 3D面部關鍵點或幾何估計,面部特征或表情分類)的輸入的任何增強現實管線。以及臉部區域分割。我們的貢獻包括受MobileNetV1 / V2啟發但與MobileNetV1 / V2有所不同的輕量級功能提取網絡,從Single Shot MultiBox Detector(SSD)修改而來的GPU友好錨定方案,以及替代非最大抑制的改進的平局分辨率策略。
介紹
近年來,深度網絡([4,6,8])的各種體系結構改進已實現了實時對象檢測。在移動應用中,這通常是視頻處理流程中的第一步,然后是特定于任務的組件,例如分段,跟蹤或幾何推斷。因此,至關重要的是,對象檢測模型推斷必須盡可能快地運行,其性能要比標準實時基準要高得多。
我們提出了一種新的面部檢測框架,稱為BlazeFace,該框架針對單GPU多框檢測器(SSD)框架[4]進行了優化,可在移動GPU上進行推理。我們的主要貢獻是:
1.與推理速度有關:
1.1。一個非常緊湊的特征提取器卷積神經網絡,其結構與MobileNetV1 / V2 [3,9]有關,專為輕型物體檢測而設計。
1.2。一種從SSD [4]修改而來的新穎的GPU友好錨方案,旨在有效地利用GPU。錨[8]或SSD術語的先驗,是預定義的靜態邊界框,可作為基礎
1個
通過網絡預測進行調整并確定預測粒度。
2.與預測質量有關:非最大抑制[4、6、8]的平局決勝策略替代方案,可在重疊的預測之間實現更穩定,更平滑的平局決勝率。
Face detection for AR pipelines
雖然所提出的框架適用于各種對象檢測任務,但在本文中,我們著重于在手機相機取景器中檢測面部。由于不同的焦距和典型的拍攝對象尺寸,我們為前置攝像頭和后置攝像頭建立了單獨的模型。
除了預測與軸對齊的臉部矩形外,我們的BlazeFace模型還生成6個臉部關鍵點坐標(用于眼睛中心,耳部扭傷,嘴中心和鼻尖),使我們可以估計臉部旋轉(滾動角度)。這樣就可以將旋轉的面部矩形傳遞到視頻處理管道的后續特定任務階段,從而減輕了后續處理步驟中顯著平移和旋轉不變性的需求(請參見第5節)。
Model architecture and design
BlazeFace模型體系結構圍繞以下討論的四個重要設計考慮而構建。
Enlarging the receptive field sizes(增大感受野)
盡管大多數現代卷積神經網絡體系結構(包括兩個MobileNet [3,9]版本)都傾向于在模型圖中的任何地方使用3 3個卷積核,但我們注意到,深度可分離卷積計算由它們的點向支配。部分。在s s c輸入張量上,k k深度方向卷積涉及s2ck2乘法加法運算,而隨后的1 1卷積到d個輸出通道中的s2cd這樣的運算包括在深度部分的d / k2內。
例如,實際上,在具有Metal Performance Shaders實現的Apple iPhone X上,對于56 56 128張量,在16位浮點算術中進行3×3深度卷積需要0.07 ms,而隨后的1從128通道到128通道的1卷積在0.3 ms時要慢4.3(由于固定成本和內存訪問因素,這不像純算術運算計數差那么大)。該觀察表明,增加深度部分的核尺寸相對便宜。我們在模型架構瓶頸中采用了5 5個內核,將內核大小的增加與達到特定接收域大小所需的此類瓶頸的總量的減少進行了交易(圖1)。
MobileNetV2 [9]瓶頸包含隨后的深度增加的擴展和深度減少的投影逐點卷積,這些卷積被非線性分隔。為了適應中間張量中較少數量的通道,我們交換了這些階段,以便瓶頸中的剩余連接以“擴展的”(提高的)通道分辨率運行。
最后,深度卷積的低開銷使我們能夠在這兩個點式卷積之間引入另一個這樣的層,從而進一步加速了接收場大小的發展。這形成了雙重BlazeBlock的本質,該BlazeBlock用作BlazeFace的較高抽象級別層的選擇瓶頸(請參見右圖1)。
Feature extractor(特征提取)
對于一個特定的示例,我們專注于前置攝像頭模型的特征提取器。它必須考慮較小的對象比例范圍,因此對計算的要求較低。提取器接受128 128像素的RGB輸入,并由2D卷積和隨后的5個單BlazeBlock和6個雙BlazeBlock組成(完整布局請參見附錄A中的表4)。最高張量深度(通道分辨率)為96,而最低空間分辨率為8×8(與SSD相比,后者將分辨率降低至1×1)。
Anchor scheme(改進的anchor 機制)
類似SSD的對象檢測模型依賴于預先定義的固定大小的基本邊界框,這些邊界框稱為Pris或Faster-R-CNN [8]術語中的錨點。一套
圖2.錨計算:SSD(左)與Blaze預測每個錨的回歸(以及可能的分類)參數,例如中心偏移和尺寸調整。它們用于將預定義的錨位置調整為緊密的邊界矩形。通常的做法是根據對象比例范圍在多個分辨率級別上定義錨點。進取的下采樣也是計算資源優化的一種手段。典型的SSD模型使用來自1、2、2、4、4、8、8和16 16個特征圖大小的預測。但是,池金字塔網絡(PPN)體系結構的成功[7]意味著在達到一定的特征圖分辨率后,其他計算可能是多余的。分配特定層計算的成本,這對于流行的CPU量身定制的體系結構固有的深層低分辨率層來說變得相對重要。例如,在一個實驗中,我們觀察到在4.9 ms的MobileNetV1推理時間中,實際的GPU著色器計算僅花費3.9 ms。考慮到這一點,我們采用了另一種錨定方案,該方案在8 8個要素地圖維處停止,而無需進一步下采樣(圖2)。我們已將每個8、8、4 4和2 2分辨率中的每個像素2個錨點替換為8個8點處的6個錨點。由于人臉縱橫比的變化有限,因此將錨點限制為1:1縱橫比足以進行準確的人臉檢測。
Post-processing(后處理機制)
由于我們的特征提取器并未將分辨率降低到8 8以下,因此重疊在給定對象上的錨點的數量會隨著對象大小的增加而顯著增加。在典型的非最大抑制場景中,只有一個錨點“獲勝”,并被用作最終算法結果。當將這種模型應用于后續視頻幀時,預測趨于在不同錨點之間波動,并表現出時間抖動(人類可感知的噪聲)。
為了最大程度地減少這種現象,我們將混合算法替換為抑制算法,該策略將邊界框的回歸參數估計為重疊預測之間的加權均值。與原始的NMS算法相比,它幾乎不會產生任何額外的成本。為了我們的臉
檢測任務,此調整導致準確性提高了10%。
我們通過將同一輸入圖像的幾個略有偏移的版本傳遞到網絡中,并觀察模型結果(經過調整以考慮平移)的影響,從而對抖動量進行量化。在對上述平局決議策略進行修改之后,抖動度量(定義為原始輸入和位移輸入的預測之間的均方根差)在我們的前置攝像頭數據集上下降了40%,在后置攝像頭數據集上下降了30%包含較小的面孔。
Experiments
我們在66K圖像的數據集上訓練了我們的模型。為了進行評估,我們使用了由2K圖像組成的私有地理位置不同的數據集。對于前置攝像頭模型,由于預期的用例(后置攝像頭模型的閾值為5%),僅考慮占據圖像區域超過20%的面部。
回歸參數誤差通過眼距(IOD)進行尺度不變性標準化,平均絕對誤差測得為IOD的7.4%。通過上述過程評估的抖動指標為IOD的3%。
表1顯示了擬議的正面人臉檢測網絡的平均精度(AP)指標[5](具有標準的0.5交叉交界框匹配閾值)和移動GPU推理時間,并將其與基于MobileNetV2的對象進行了比較具有相同錨編碼方案(MobileNetV2-SSD)的探測器。我們已使用16位浮點模式下的TensorFlow Lite GPU [2]作為推理時間評估的框架。較小的模型尺寸。如以下部分所述,這不一定會導致整個AR管道質量成比例下降。
Applications
在完整圖像或視頻幀上運行的擬議模型可以用作幾乎任何與面部相關的計算機視覺應用程序的第一步,例如2D / 3D面部關鍵點,輪廓或表面幾何估計,面部特征或表情分類以及臉部區域分割。因此,可以根據適當的面部修剪來定義計算機視覺管道中的后續任務。結合BlazeFace提供的一些面部關鍵點估計值,還可以旋轉該作物,以使內部人臉居中,按比例縮放歸一化并具有接近零的側傾角。這從特定于任務的模型中消除了顯著平移和旋轉不變性的要求,從而實現了更好的計算資源分配。我們以面部輪廓估計的特定示例說明了這種流水線方法。在圖3中,我們顯示了BlazeFace的輸出(即預測的邊界框和該面部的6個關鍵點(紅色))如何通過更復雜的方式進一步完善
表2給出了兩個網絡模型在更多旗艦設備上的GPU推理速度的透視圖。
人臉輪廓估計模型應用于略微擴大的作物。詳細的關鍵點產生了更好的邊界。表3顯示了回歸參數預測質量的降低量,該降低量是由
框估計(綠色),可在不運行面部檢測器的情況下重新用于后續幀中的跟蹤。為了檢測此計算節省策略的失敗,輪廓模型還可以檢測所提供的矩形作物中是否確實存在該面部并合理地對齊了該面部。每當違反該條件時,BlazeFace面部檢測器都會再次在整個視頻幀上運行。
本文描述的技術正在驅動手機上的主要AR自表達應用程序和AR開發人員API。
總結
以上是生活随笔為你收集整理的MediaPipe - BlazeFace原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于微信支付报错
- 下一篇: main.js中封装全局登录函数