0
雷鋒網(wǎng) AI 科技評論按:谷歌近日發(fā)布了一款專為移動 GPU 推理量身定制的輕量級人臉檢測器——亞毫秒級的人臉檢測算法 Blaze Face。它能夠在旗艦設(shè)備上以 200~1000+ FPS 的速度運(yùn)行,并且可以應(yīng)用在諸多需要快速準(zhǔn)確的識別出人臉區(qū)域的任務(wù)中,例如:2D/3D 面部關(guān)鍵點(diǎn)識別與幾何評估、面部特征和表情分類以及面部區(qū)域分割等。谷歌發(fā)表了相關(guān)論文介紹了該研究成果,雷鋒網(wǎng) AI 科技評論將其編譯如下。
近年來,通過對深度神經(jīng)網(wǎng)絡(luò)中各種架構(gòu)的改進(jìn),我們已經(jīng)可以實(shí)現(xiàn)實(shí)時目標(biāo)檢測。在移動應(yīng)用程序中,實(shí)時目標(biāo)檢測通常是視頻處理流程中的第一步,接著是各種特定任務(wù)組件,例如分割,跟蹤或幾何推理。因此,目標(biāo)檢測模型推理必須盡可能快地運(yùn)行,其性能最好能夠達(dá)到遠(yuǎn)高于標(biāo)準(zhǔn)的實(shí)時基準(zhǔn)。
我們提出了一種名為 BlazeFace 的新面部檢測框架,該框架是在單鏡頭多盒檢測器(SSD)框架上針對移動 GPU 推理進(jìn)行的優(yōu)化。我們的主要創(chuàng)新包括:
1. 有關(guān)于推理速度
一個專為輕量級目標(biāo)檢測而設(shè)計的在結(jié)構(gòu)上與 MobileNetV1/V2 相關(guān)的非常緊湊的特征提取器卷積神經(jīng)網(wǎng)絡(luò)。
一種基于 SSD 的新型 GPU-friendly anchor 機(jī)制,旨在提高 GPU 利用率。Anchors(SSD 術(shù)語中的先驗(yàn))是預(yù)定義的靜態(tài)邊界框,作為網(wǎng)絡(luò)預(yù)測調(diào)整和確定預(yù)測粒度的基礎(chǔ)。
2. 有關(guān)于推理效果
一種替代非最大抑制的聯(lián)合分辨率策略,可在多預(yù)測之間實(shí)現(xiàn)更穩(wěn)定、更平滑的聯(lián)系分辨率。
雖然該框架適用于各種目標(biāo)檢測任務(wù),但在本文中,我們致力于探討手機(jī)相機(jī)取景器中的人臉檢測問題。由于不同的焦距和捕獲物體尺寸,我們分別為前置和后置攝像頭構(gòu)建了模型。
除了預(yù)測軸對齊的面部矩形外,BlazeFace 模型還生成了 6 個面部關(guān)鍵點(diǎn)坐標(biāo)(用于眼睛中心、耳、嘴中心和鼻尖),以便我們估計面部旋轉(zhuǎn)角度(滾動角度)。這樣的設(shè)置使其能夠?qū)⑿D(zhuǎn)的面部矩形傳遞到視頻處理流程的后期任務(wù)特定階段,從而減輕后續(xù)處理步驟對重要平移和旋轉(zhuǎn)不變性的要求。
BlazeFace 模型架構(gòu)圍繞下面討論的四個重要設(shè)計考慮因素而構(gòu)建。
1、擴(kuò)大感受野
雖然大多數(shù)現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)(包括 MobileNet,https://arxiv.org/pdf/1704.04861.pdf )都傾向于在模型圖中都使用 3×3 卷積核,但我們注意到深度可分離卷積計算是由它們的點(diǎn)態(tài)部分主導(dǎo)。在 s×s×c 輸入張量上,應(yīng)用可分離卷積操作,其中,k×k 的深度卷積涉及 s^2ck^2 次乘加運(yùn)算,而后續(xù)的 1×1 卷積到 d 個輸出通道由 s^2cd 次乘加運(yùn)算組成,是深度階段的 d /(k^2)倍。
實(shí)際上,在具有金屬外殼的 Apple iPhone X 上,16 位浮點(diǎn)運(yùn)算中的 3×3 深度卷積對于 56×56×128 的張量需要花費(fèi) 0.07 ms,相比之下 128 到 128 通道的 1×1 卷積運(yùn)算會慢 4.3 倍,即后續(xù)的點(diǎn)卷積操作需要 0.3 毫秒(由于固定成本和存儲器訪問因素導(dǎo)致的純算術(shù)運(yùn)算計數(shù)差)。
該觀察表明增加深度部分的核尺寸性價比更高。我們在模型架構(gòu)中使用 5×5 內(nèi)核,這樣使得感受野達(dá)到指定大小所需的 bottleneck 數(shù)量大大減少,得到的 BlazeBlock 有下圖所示的兩種結(jié)構(gòu):
圖 1 單個 BlazeBlock (左) 與 雙 BlazeBlock (右)
2、特征提取器
對于具體的例子,我們專注于前置攝像頭模型的特征提取器。該特征提取器必須考慮較小范圍的目標(biāo)尺度,因此它具有較低的計算需求。提取器采用 128×128 像素的 RGB 輸入,包括一個 2D 卷積和 5 個單 BlazeBlock 和 6 個雙 BlazeBlock 組成,完整布局見下表。最大張量深度(通道分辨率)為 96,而最低空間分辨率為 8×8(與 SSD 相比,它將分辨率一直降低到 1×1)。
圖 2 BlazeFace 特征提取器的網(wǎng)絡(luò)結(jié)構(gòu)
3、Anchor 機(jī)制
類似 SSD 的目標(biāo)檢測模型依賴于預(yù)定義的固定大小的基礎(chǔ)邊界框,稱為先驗(yàn)機(jī)制,或 Faster-R-CNN 術(shù)語中的錨點(diǎn)。為每個錨預(yù)測一組回歸(可能還包括分類)參數(shù),例如中心偏移量和尺寸調(diào)整。它們用于將預(yù)定義的錨位置調(diào)整為緊密的邊界矩形。
通常的做法是根據(jù)目標(biāo)比例范圍在多個分辨率級別定義錨點(diǎn),同時下采樣也是計算資源優(yōu)化的手段。典型的 SSD 模型使用 1×1,2×2,4×4,8×8 和 16×16 特征映射大小的預(yù)測。然而,金字塔池化網(wǎng)絡(luò) PPN 架構(gòu)(https://arxiv.org/pdf/1807.03284.pdf)的成功意味著在特征圖達(dá)到某個特征映射分辨率后,將產(chǎn)生大量額外的計算。
相比于 CPU 計算,GPU 獨(dú)有的關(guān)鍵特性是調(diào)度特定層計算會有一個顯著的固定成本,這對于流行的 CPU 定制架構(gòu)固有的深度低分辨率層而言非常重要。例如,在一個實(shí)驗(yàn)中我們觀察到 MobileNetV1 推理時間需要 4.9 毫秒,而在實(shí)際 GPU 計算中花費(fèi) 3.9 毫秒。
考慮到這一點(diǎn),我們采用了另一種錨定方案,該方案停留在 8×8 特征圖尺寸處而無需進(jìn)一步下采樣(圖 2)。我們已經(jīng)將 8×8,4×4 和 2×2 分辨率中的每個像素的 2 個錨點(diǎn)替換為 8×8 的 6 個錨點(diǎn)。由于人臉長寬比的變化有限,因此發(fā)現(xiàn)將錨固定為 1:1 縱橫比足以進(jìn)行精確的面部檢測。
圖 3 錨點(diǎn)計算,SSD(左)與 BlazeFace(右)
4、后處理機(jī)制
由于我們的特征提取器未將分辨率降低到 8×8 以下,因此給定目標(biāo)重疊的錨點(diǎn)數(shù)量會隨目標(biāo)尺寸的增加而顯著增加。在典型的非最大抑制方案中,只有一個錨點(diǎn)被選中作為算法的輸出。這樣的模型應(yīng)用于后續(xù)視頻人臉預(yù)測時,預(yù)測結(jié)果將在不同錨之間波動并且在時間序列上檢測框上持續(xù)抖動(人類易感噪聲)。
為了最小化這種現(xiàn)象,我們用一種混合策略代替抑制算法,該策略以重疊預(yù)測之間的加權(quán)平均值估計邊界框的回歸參數(shù),它幾乎不會產(chǎn)生給原來的 NMS 算法帶來額外成本。對于人臉檢測任務(wù),此調(diào)整使準(zhǔn)確度提高 10%。
我們通過連續(xù)輸入目標(biāo)輕微偏移的圖像來量化抖動量,并觀察模型結(jié)果(受偏移量影響)如何受到影響。在聯(lián)合分辨率策略修改之后,抖動量(定義為原始輸入和移位輸入的預(yù)測之間的均方根差)在我們的前置攝像頭數(shù)據(jù)集上下降了 40%,在包含較小人臉的后置攝像頭數(shù)據(jù)集上下降了 30%。
我們在 66K 圖像的數(shù)據(jù)集上訓(xùn)練我們的模型。為了評估實(shí)驗(yàn)結(jié)果,我們使用了由 2K 圖像組成的地理位置多樣數(shù)據(jù)集。
對于前置攝像頭模型,它只考慮占據(jù)圖像區(qū)域的 20%以上的面部,這是由預(yù)期的用例決定的(后置攝像頭型號的閾值為 5%)。
回歸參數(shù)誤差采用眼間距離(IOD)進(jìn)行尺度不變性歸一化,中值絕對誤差為 IOD 的 7.4%。通過上述程序評估的抖動度量是 IOD 的 3%。
圖 4 顯示了所提出的正面人臉檢測網(wǎng)絡(luò)的平均精度(AP)度量(標(biāo)準(zhǔn) 0.5 交叉聯(lián)合邊界框匹配閾值)和移動 GPU 推理時間,并將其與基于 MobileNetV2 的目標(biāo)檢測器(MobileNetV2-SSD)進(jìn)行了比較。我們在 16 位浮點(diǎn)模式下使用 TensorFlow Lite GPU 作為推理時間評估的框架。
圖 4 前置相機(jī)人臉檢測性能
圖 5 給出了更多旗艦設(shè)備上兩種網(wǎng)絡(luò)模型的 GPU 推理速度的透視圖:
圖 5 跨多個移動設(shè)備的推理速度
圖 6 展示了由于模型尺寸較小引起的回歸參數(shù)預(yù)測質(zhì)量的退化程度。如下一節(jié)所述,這不一定會導(dǎo)致整個 AR 管道質(zhì)量的成比例降低。
圖 6 回歸參數(shù)預(yù)測質(zhì)量
上述模型可以在完整圖像或視頻幀上運(yùn)行,并且可以作為幾乎任何與人臉相關(guān)的計算機(jī)視覺應(yīng)用的第一步,例如 2D / 3D 人臉關(guān)鍵點(diǎn)、輪廓或表面幾何估計、面部特征或表情分類以及人臉區(qū)域分割。因此,計算機(jī)視覺流程中的后續(xù)任務(wù)可以根據(jù)適當(dāng)?shù)拿娌考舨脕矶x。結(jié)合 BlazeFace 提供的少量面部關(guān)鍵點(diǎn)估計,此結(jié)果也可以旋轉(zhuǎn),這樣圖像中的面部是居中的、標(biāo)準(zhǔn)化的并且滾動角接近于零。這消除了 SIG-nifi 不能平移和旋轉(zhuǎn)不變性的要求,從而允許模型實(shí)現(xiàn)更好的計算資源分配。
我們通過一個具體的人臉輪廓估計示例來說明這種方法。在圖 7 中,我們展示了 BlazeFace 的輸出,即預(yù)測的邊界框和面部的 6 個關(guān)鍵點(diǎn)(紅色)如何通過一個更復(fù)雜的人臉輪廓估計模型來進(jìn)一步細(xì)化,并將其應(yīng)用于擴(kuò)展的結(jié)果。
圖 7 流程示例;紅色代表 BlazeFace 輸出;綠色代表任務(wù)特定的模型輸出
詳細(xì)的關(guān)鍵點(diǎn)可以產(chǎn)生更精細(xì)的邊界框估計(綠色),并在不運(yùn)行人臉檢測器的情況下重新用于后續(xù)幀中的跟蹤。為了檢測該計算節(jié)省策略的故障,該模型還可以檢測面部是否存在所提供的矩形裁剪中合理地對齊。每當(dāng)違反該條件時,BlazeFace 人臉檢測器將再次在整個視頻幀上運(yùn)行。
論文鏈接
雷鋒網(wǎng) AI 科技評論
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。