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