谷歌近日公布亞毫秒級的人臉檢測算法BlazeFace,這是一款專為移動GPU推理量身定制的輕量級人臉檢測器,能夠以200~1000+ FPS的速度運(yùn)行,且性能非常卓越!
近年來,深度神經(jīng)網(wǎng)絡(luò)的各種架構(gòu)改進(jìn)使得實(shí)時目標(biāo)檢測成為可能。實(shí)驗(yàn)室可以不計一切地開發(fā)各種算法追求逼近極限的精度,而實(shí)際應(yīng)用中,響應(yīng)速度、能耗和精度都重要。這就要求算法的復(fù)雜度要低、適合硬件加速。
在移動應(yīng)用中,實(shí)時目標(biāo)檢測往往只是視頻處理流程的第一步,接下來是各種特定的任務(wù),如分割、跟蹤或幾何推理。
因此,運(yùn)行對象檢測模型推理的算法要盡可能快,最好還具有比標(biāo)準(zhǔn)實(shí)時基準(zhǔn)更高的性能。
谷歌剛剛上傳到arXiv的一篇論文BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs,推出了BlazeFace算法,這是一款專為移動GPU推理量身定制的輕量級人臉檢測器,且性能非常卓越!
有多卓越呢?谷歌在其旗艦設(shè)備測試,結(jié)果發(fā)現(xiàn)BlazeFace能夠以200~1000+ FPS的速度運(yùn)行。
這種超實(shí)時性能使其能夠應(yīng)用于任何需要準(zhǔn)確的面部區(qū)域,作為特定模型輸入的增強(qiáng)現(xiàn)實(shí)應(yīng)用中,例如2D/3D面部關(guān)鍵點(diǎn)或幾何估計、面部特征或表情分類、以及面部區(qū)域分割等。
谷歌已經(jīng)把該算法應(yīng)用在工業(yè)中。
兩大算法創(chuàng)新,一切為了又快又好
BlazeFace包括一個輕量級的特征提取網(wǎng)絡(luò),其靈感來自于MobileNetV1/V2,但又有所不同。還采取了一種修改過的SSD目標(biāo)檢測算法,使其對GPU更加友好。然后用改進(jìn)的聯(lián)合分辨率(tie resolution)策略來替代非極大抑制(Non-maximum suppression)。
BlazeFace可用于檢測智能手機(jī)前置攝像頭捕捉到的圖像中的一個或多個人臉。返回的是一個邊界框和每個人臉的6個關(guān)鍵點(diǎn)(從觀察者的角度看左眼、右眼、鼻尖、嘴、左眼角下方和右眼角下方)。
算法創(chuàng)新包括:
1、與推理速度相關(guān)的創(chuàng)新:
提出一種在結(jié)構(gòu)上與MobileNetV1/V2相關(guān)的非常緊湊的特征提取器卷積神經(jīng)網(wǎng)絡(luò),專為輕量級對象檢測而設(shè)計。
提出了一種基于SSD的GPU-friendly anchor機(jī)制,旨在提高GPU的利用率。Anchors是預(yù)定義的靜態(tài)邊界框,作為網(wǎng)絡(luò)預(yù)測調(diào)整的基礎(chǔ),并確定預(yù)測粒度。
2、與預(yù)測性能相關(guān)的創(chuàng)新:
提出一種替代非極大抑制的聯(lián)合分辨率策略,在重疊預(yù)測之間實(shí)現(xiàn)更穩(wěn)定、更平滑的tie resolution。
BlazeBlock (左) 和 double BlazeBlock
BlazeFace的模型架構(gòu)如上圖所示,在設(shè)計方面考慮了以下4個因素:
擴(kuò)大感受野(receptive field)的大小:
雖然大多數(shù)現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)(包括MobileNet)都傾向于在模型圖中使用3×3的卷積核,但我們注意到深度可分離卷積計算主要由它們的點(diǎn)態(tài)部分控制。
本研究發(fā)現(xiàn),增加深度部分的內(nèi)核大小成本并不會增加很多。因此,我們在模型架構(gòu)中使用了5×5的卷積核,用kernel size的增加來交換達(dá)到特定receptive field大小所需的bottlenecks總數(shù)的減少。
深度卷積的低開銷還允許我們在這兩個點(diǎn)卷積之間引入另一個這樣的層,從而進(jìn)一步加速達(dá)到所需receptive field。這形成了一個double BlazeBlock,如上圖右邊所示。
特征提取器(Feature extractor):
在實(shí)驗(yàn)中,我們將重點(diǎn)放在前置相機(jī)模型的特征提取器上。它必須考慮更小的對象范圍,因此具有更低的計算需求。提取器采用128×128像素的RGB輸入,包含一個2D卷積,以及5個BlazeBlock和6個 double BlazeBlock,如下表所示:
改進(jìn)的Anchor 機(jī)制:
類似于SSD的對象檢測模型依賴于預(yù)定義的固定大小的基本邊界框,稱為priors,或者Faster-R-CNN中提出的術(shù)語“Anchor”。
我們將 8×8,4×4 和 2×2 分辨率中的每個像素的 2 個 anchor 替換為 8×8 的 6 個 anchor。由于人臉長寬比的變化有限,因此將 anchor 固定為 1:1 縱橫比足以進(jìn)行精確的面部檢測。
pipeline示例。紅色:BlazeFace的輸出。綠色:特定于任務(wù)的模型輸出。
后處理機(jī)制(Post-processing):
由于我們的feature extractor并沒有將分辨率降低到8×8以下,所以與給定對象重疊的anchor的數(shù)量會隨著對象的大小而顯著增加。在典型的非極大抑制場景中,只有一個anchor“勝出”,并被用作最終的算法結(jié)果。當(dāng)這樣的模型應(yīng)用于隨后的視頻幀時,預(yù)測往往會在不同的anchor點(diǎn)之間波動,并表現(xiàn)出明顯的人臉框抖動。
為了最小化這個問題,我們用一種混合策略代替了抑制算法,該策略將一個邊界框的回歸參數(shù)估計為重疊預(yù)測之間的加權(quán)平均值。它實(shí)際上不會給原始的NMS算法帶來額外的成本。對于我們的人臉檢測任務(wù),這個調(diào)整使準(zhǔn)確率提高了10%。
專為GPU設(shè)計,準(zhǔn)確度超越MobileNetV2
超實(shí)時性能。解鎖需要面部區(qū)域作為輸入的“任務(wù)特定”模型的實(shí)時AR pipeline:
準(zhǔn)確的3D面部幾何
通過Blendshapes進(jìn)行Puppeteering
面部分割
AR化妝試穿/美化
頭發(fā)/嘴唇/虹膜重新著色
磨皮
專為移動GPU設(shè)計
專為移動GPU和CPU設(shè)計
輕量級特征提取網(wǎng)絡(luò)
更適合GPU的anchor方案
改進(jìn)了tie resolution策略
GPU上的快速推理
精度
眼間距離的平均絕對誤差為10%左右就足夠精確了
后續(xù)模型的面對齊
生成6個面部關(guān)鍵點(diǎn)坐標(biāo)
在低端設(shè)備上僅使用此模型,實(shí)現(xiàn)耳朵等簡單特效
-
谷歌
+關(guān)注
關(guān)注
27文章
6192瀏覽量
105804 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4779瀏覽量
101040 -
人臉識別
+關(guān)注
關(guān)注
76文章
4015瀏覽量
82163
原文標(biāo)題:亞毫秒級手機(jī)人臉識別!谷歌BlazeFace算法重大突破, 面向移動GPU
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論