人臉檢測是應(yīng)用最為廣泛的計算機視覺任務(wù)之一,特別是在移動端上發(fā)揮著不可替代的重要作用,包括美顏、人臉跟蹤、VR、人臉特效、人臉識別等任務(wù)以及刷臉支付、直播、試妝等應(yīng)用上都有著廣泛的引用,幾乎涵蓋了人工智能落地的方方面面。作為很多后續(xù)工作的第一步,人臉檢測器需要達到非常高效的性能,盡可能高速準確地完成檢測任務(wù)。
為了不斷提升用戶的流程體驗、促進人臉相關(guān)應(yīng)用的進一步發(fā)展、拓寬支持人臉檢測的設(shè)備范圍,來自谷歌的研究人員通過改造mobileNet提出更為緊湊的輕量級特征提取方法、結(jié)合適用于移動端GPU高效運行的新型錨框機制,以及代替非極大值抑制的加權(quán)方法保證檢測結(jié)果的穩(wěn)定性,在移動端上實現(xiàn)了超高速的高性能人臉檢測BlazeFace,最快不到一毫秒的檢測速度為眾多人臉相關(guān)的應(yīng)用提供了更廣闊的發(fā)展空間。
強大的模型一定有強大的細節(jié)在支撐。
BlazeFace模型一共從四個方面進行了有效改進,從而大幅減小了計算量并提高了檢測精度與穩(wěn)定性。它提升了mobilenet中深度可分離卷積的計算效率和感受野,基于此構(gòu)建了有效的特征抽取器、改進錨框機制后處理過程。
更大的感受野更快的計算。mobilenet中的深度可分離架構(gòu)包含了每個通道上的3*3卷積和逐點進行的在深度方向上的1*1的卷積操作。
深度可分離卷積
研究人員發(fā)現(xiàn),其中大部分計算量都發(fā)生在最后逐點計算1*1的過程中。例如針對一個s*s*c的張量,如果使用k*k卷積核為大小的深度可分離操作,那么第一步操作的計算量是s^2*c*k^2,第二步針對d個通道的輸出進行逐點1*1卷積的計算量則是s^2*c*d,第二步相對于第一步的計算量消耗是d/k^2倍。在mobilenet論文中也提高1*1卷積對于計算資源的占比較高。
讓我們再來直觀的感受一下這兩種操作計算量的大小。針對實際的iPhoneX手機,其中基于Metal Performance Shader實現(xiàn)的3*3卷積,針對56*56*128大小的16比特浮點張量操作需要0.07ms,而使用1*1卷積對128通道到128通道的操作則需要耗時0.3ms,幾乎是前者的四倍多。
這樣的結(jié)果為研究人員指明了提高效率的方向,增加深度可分離卷積操作中第一步核的大小是相對高效的選擇。所以在BlazeFace中研究人員將卷積核的大小擴大成了5*5。卷積核的增大在bottleneck總量減小的情況下保證了模型感受野的大小。
此外,MobileNetV2的bottleneck通過非線性將深度增加的擴張和深度縮減的投影分開。
mobileNet中的深度可分離卷積單元
為了適應(yīng)Blaze單元中更少的通道數(shù),研究人員對這一階段進行掃描使得殘差可以實現(xiàn)類似拓展通道分辨率的操作。
BlazeBlock的單元構(gòu)造,包括增大的卷積核與殘差連接。
左圖是基本的blaze單元,右圖是雙blaze單元
由于增大了卷積核后的Blaze單元的開銷很小,使得另一個層的加入成為可能。于是研究人員又在上面模塊的基礎(chǔ)上開發(fā)出了雙份的Blaze單元。不僅增加了感受野的大小,同時也提高了特征的抽象。
特征抽取器。雖然這一模型同時適合與后攝和前攝,研究人員在文章中針對前視攝像頭作為例子來構(gòu)建特征抽取器,前視攝像頭需要搜索的范圍更小,計算需求也更少。
模型的輸入是針對128*128大小的rgb圖像展開的,在一個卷積后疊加了5個單Blaze單元和6個雙Blaze單元,可以看到通道數(shù)最多的時候達到了96,而最低的空間分辨率則不低于8*8的大小。
可以發(fā)現(xiàn)這一模型的最大通道數(shù)大大小于其他模型,而最低空間分辨率也較高。下面是模型的構(gòu)造細節(jié):
錨框機制。錨框在目標檢測中廣泛使用,通常為了適應(yīng)多尺度的目標,預(yù)定義的錨框都包含了多個不同的分辨率。同時大幅度的將采樣也為目標檢測中的計算量帶來了較多的優(yōu)化。雖然SSD中使用了多個不同尺度的特征度來進行預(yù)測,單池化金字塔架構(gòu)中卻表明過多尺度的特征圖可能在某個分辨率后變得冗余。
同時GPU計算相比于CPU存在一個需要注意的關(guān)鍵問題,針對特定層的計算GPU存在固定的調(diào)度開銷,在對低分辨率層進行計算時會尤其明顯。例如測試中的MobileNetV1耗時4.9ms,其中只有3.9ms真正在進行計算。
綜上考慮,研究人員對于錨框的設(shè)計作出了以下幾個方面的改進:
首先特征圖的尺寸不低于8*8,避免更深的下采樣;
其次將8*8,4*4和2*2各個特征圖上的兩個錨框用8*8特征圖上的6個錨框代替;
由于人臉的寬高比相對問題,在實際過程中使用1*1的錨框比例已經(jīng)能夠達到足夠的精度了。
后處理。由于在8*8的特征圖上存在多個錨框,很有可能產(chǎn)生多個重疊的結(jié)果。為了處理多個不同的框,先前的方法利用執(zhí)行度的非極大值抑制來選擇可能性最高的框作為結(jié)果,但這會帶來人臉檢測結(jié)果的抖動,造成人類感知上的不適。
為了緩解這種抖動,研究人員使用融合策略代替了非極大值抑制,通過加權(quán)平均多個重疊結(jié)果的方式來估計最后回歸的bbox參數(shù)。這不會增加額外的計算量,在減小抖動的同時還提升了10%的精度。實驗表明這一機制使得前視攝像頭的人臉檢測抖動降低了40%,后攝則降低了30%。
優(yōu)異性能
實驗中研究人員利用66K圖像進行了訓(xùn)練,2K多樣性圖像進行了測試。下圖顯示了數(shù)據(jù)在地理位置上的多樣性:
針對前視攝像頭模型,只有超過20%的區(qū)域被人臉(faces)占據(jù)才考慮(后攝5%,為了與實際情況相符)。下圖顯示了與MobileNetv2-SSD對比下的前視攝像頭性能,研究人員利用tensorflowLite在16bit下實現(xiàn)了模型,在iPhoneXS上僅需0.6ms,這意味著達到了1600fps+的速度。
研究人員還測試了在不同型號手機上的實現(xiàn)結(jié)果,速度都在約170fs到1600ps之間。
最后研究人員還比較了回歸參數(shù)的預(yù)測質(zhì)量,由于模型體量較小帶來了一定程度的退化,但不影響AR或者人臉跟蹤中的使用。
應(yīng)用展示
高速準確的人臉檢測網(wǎng)絡(luò)將為后續(xù)的人臉相關(guān)任務(wù)提供有效地預(yù)處理,包括關(guān)鍵點檢測、輪廓、表面幾何估計、微表情識別和人臉解譯等任務(wù)。
通過與BlazeFaze給出的人臉關(guān)鍵點結(jié)合,算法可以得到跟隨人臉旋轉(zhuǎn)的bbox,得到居中的、尺度歸一化的、相對框無較大角度誤差的人臉結(jié)果,這將大幅度降低后續(xù)對于圖像的旋轉(zhuǎn)和平移處理,節(jié)約了計算的開銷。
例如在人臉輪廓檢測中,首先利用BlazeFace模型預(yù)測出人臉框和對應(yīng)的關(guān)鍵點,隨后利用更為復(fù)雜的模型對人臉輪廓進行進一步優(yōu)化估計。這些檢測結(jié)果可以用于后續(xù)幀的處理中。
研究人員展示了基于這一人臉檢測模型的一系列例子,包括人臉幾何重建、分割、美妝等等。
值得一提的是,研究人員還將這一方法集成到了多模態(tài)媒體機器學(xué)習(xí)工具mediapipe中,這一工具包含了多種圖像處理模塊和方法、可以基于圖機制來構(gòu)建多模態(tài)的機器學(xué)習(xí)應(yīng)用工具鏈,并實現(xiàn)跨平臺的運行。
最后附上一份Blazeface的海報,再次感受下這一算法眾多的創(chuàng)新:
-
谷歌
+關(guān)注
關(guān)注
27文章
6177瀏覽量
105691 -
人臉檢測
+關(guān)注
關(guān)注
0文章
80瀏覽量
16478
原文標題:超高速人臉檢測器BlazeFace,谷歌將人臉檢測效率提升到逆天水平
文章出處:【微信號:thejiangmen,微信公眾號:將門創(chuàng)投】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論