當前位置:
首頁 > 知識 > 谷歌公布亞毫秒級人臉檢測演算法 BlazeFace,人臉檢測又一突破!

谷歌公布亞毫秒級人臉檢測演算法 BlazeFace,人臉檢測又一突破!

AI 開發者按:谷歌近日發布了一款專為移動 GPU 推理量身定製的輕量級人臉檢測器——亞毫秒級的人臉檢測演算法 Blaze Face。它能夠在旗艦設備上以 200~1000 FPS 的速度運行,並且可以應用在諸多需要快速準確的識別出人臉區域的任務中,例如:2D/3D 面部關鍵點識別與幾何評估、面部特徵和表情分類以及面部區域分割等。谷歌發表了相關論文介紹了該研究成果,AI 開發者將其編譯如下。

BlazeFace 簡介

近年來,通過對深度神經網路中各種架構的改進,我們已經可以實現實時目標檢測。在移動應用程序中,實時目標檢測通常是視頻處理流程中的第一步,接著是各種特定任務組件,例如分割,跟蹤或幾何推理。因此,目標檢測模型推理必須儘可能快地運行,其性能最好能夠達到遠高於標準的實時基準。

我們提出了一種名為 BlazeFace 的新面部檢測框架,該框架是在單鏡頭多盒檢測器(SSD)框架上針對移動 GPU 推理進行的優化。我們的主要創新包括:

1.有關於推理速度

一個專為輕量級目標檢測而設計的在結構上與 MobileNetV1/V2 相關的非常緊湊的特徵提取器卷積神經網路。

一種基於 SSD 的新型 GPU-friendly anchor 機制,旨在提高 GPU 利用率。Anchors(SSD 術語中的先驗)是預定義的靜態邊界框,作為網路預測調整和確定預測粒度的基礎。

2.有關於推理效果

一種替代非最大抑制的聯合解析度策略,可在多預測之間實現更穩定、更平滑的聯繫解析度。

基於 AR 的人臉檢測

雖然該框架適用於各種目標檢測任務,但在本文中,我們致力於探討手機相機取景器中的人臉檢測問題。由於不同的焦距和捕獲物體尺寸,我們分別為前置和後置攝像頭構建了模型。

除了預測軸對齊的面部矩形外,BlazeFace 模型還生成了 6 個面部關鍵點坐標(用於眼睛中心、耳、嘴中心和鼻尖),以便我們估計面部旋轉角度(滾動角度)。這樣的設置使其能夠將旋轉的面部矩形傳遞到視頻處理流程的後期任務特定階段,從而減輕後續處理步驟對重要平移和旋轉不變性的要求。

模型結構與設計

BlazeFace 模型架構圍繞下面討論的四個重要設計考慮因素而構建。

1、擴大感受野

雖然大多數現代卷積神經網路架構(包括 MobileNet,https://arxiv.org/pdf/1704.04861.pdf )都傾向於在模型圖中都使用 3×3 卷積核,但我們注意到深度可分離卷積計算是由它們的點態部分主導。在 s×s×c 輸入張量上,應用可分離卷積操作,其中,k×k 的深度卷積涉及 s^2ck^2 次乘加運算,而後續的 1×1 卷積到 d 個輸出通道由 s^2cd 次乘加運算組成,是深度階段的 d /(k^2)倍。

實際上,在具有金屬外殼的 Apple iPhone X 上,16 位浮點運算中的 3×3 深度卷積對於 56×56×128 的張量需要花費 0.07 ms,相比之下 128 到 128 通道的 1×1 卷積運算會慢 4.3 倍,即後續的點卷積操作需要 0.3 毫秒(由於固定成本和存儲器訪問因素導致的純算術運算計數差)。

該觀察表明增加深度部分的核尺寸性價比更高。我們在模型架構中使用 5×5 內核,這樣使得感受野達到指定大小所需的 bottleneck 數量大大減少,得到的 BlazeBlock 有下圖所示的兩種結構:

圖 1 單個 BlazeBlock (左) 與 雙 BlazeBlock (右)

2、特徵提取器

對於具體的例子,我們專註於前置攝像頭模型的特徵提取器。該特徵提取器必須考慮較小範圍的目標尺度,因此它具有較低的計算需求。提取器採用 128×128 像素的 RGB 輸入,包括一個 2D 卷積和 5 個單 BlazeBlock 和 6 個雙 BlazeBlock 組成,完整布局見下表。最大張量深度(通道解析度)為 96,而最低空間解析度為 8×8(與 SSD 相比,它將解析度一直降低到 1×1)。

圖 2 BlazeFace 特徵提取器的網路結構

3、Anchor 機制

類似 SSD 的目標檢測模型依賴於預定義的固定大小的基礎邊界框,稱為先驗機制,或 Faster-R-CNN 術語中的錨點。為每個錨預測一組回歸(可能還包括分類)參數,例如中心偏移量和尺寸調整。它們用於將預定義的錨位置調整為緊密的邊界矩形。

通常的做法是根據目標比例範圍在多個解析度級別定義錨點,同時下採樣也是計算資源優化的手段。典型的 SSD 模型使用 1×1,2×2,4×4,8×8 和 16×16 特徵映射大小的預測。然而,金字塔池化網路 PPN 架構(https://arxiv.org/pdf/1807.03284.pdf)的成功意味著在特徵圖達到某個特徵映射解析度後,將產生大量額外的計算。

相比於 CPU 計算,GPU 獨有的關鍵特性是調度特定層計算會有一個顯著的固定成本,這對於流行的 CPU 定製架構固有的深度低解析度層而言非常重要。例如,在一個實驗中我們觀察到 MobileNetV1 推理時間需要 4.9 毫秒,而在實際 GPU 計算中花費 3.9 毫秒。

考慮到這一點,我們採用了另一種錨定方案,該方案停留在 8×8 特徵圖尺寸處而無需進一步下採樣(圖 2)。我們已經將 8×8,4×4 和 2×2 解析度中的每個像素的 2 個錨點替換為 8×8 的 6 個錨點。由於人臉長寬比的變化有限,因此發現將錨固定為 1:1 縱橫比足以進行精確的面部檢測。

圖 3 錨點計算,SSD(左)與 BlazeFace(右)

4、後處理機制

由於我們的特徵提取器未將解析度降低到 8×8 以下,因此給定目標重疊的錨點數量會隨目標尺寸的增加而顯著增加。在典型的非最大抑制方案中,只有一個錨點被選中作為演算法的輸出。這樣的模型應用於後續視頻人臉預測時,預測結果將在不同錨之間波動並且在時間序列上檢測框上持續抖動(人類易感雜訊)。

為了最小化這種現象,我們用一種混合策略代替抑制演算法,該策略以重疊預測之間的加權平均值估計邊界框的回歸參數,它幾乎不會產生給原來的 NMS 演算法帶來額外成本。對於人臉檢測任務,此調整使準確度提高 10%。

我們通過連續輸入目標輕微偏移的圖像來量化抖動量,並觀察模型結果(受偏移量影響)如何受到影響。在聯合解析度策略修改之後,抖動量(定義為原始輸入和移位輸入的預測之間的均方根差)在我們的前置攝像頭數據集上下降了 40%,在包含較小人臉的後置攝像頭數據集上下降了 30%。

實驗

我們在 66K 圖像的數據集上訓練我們的模型。為了評估實驗結果,我們使用了由 2K 圖像組成的地理位置多樣數據集。

對於前置攝像頭模型,它只考慮佔據圖像區域的 20%以上的面部,這是由預期的用例決定的(後置攝像頭型號的閾值為 5%)。

回歸參數誤差採用眼間距離(IOD)進行尺度不變性歸一化,中值絕對誤差為 IOD 的 7.4%。通過上述程序評估的抖動度量是 IOD 的 3%。

圖 4 顯示了所提出的正面人臉檢測網路的平均精度(AP)度量(標準 0.5 交叉聯合邊界框匹配閾值)和移動 GPU 推理時間,並將其與基於 MobileNetV2 的目標檢測器(MobileNetV2-SSD)進行了比較。我們在 16 位浮點模式下使用 TensorFlow Lite GPU 作為推理時間評估的框架。

圖 4 前置相機人臉檢測性能

圖 5 給出了更多旗艦設備上兩種網路模型的 GPU 推理速度的透視圖:

圖 5 跨多個移動設備的推理速度

圖 6 展示了由於模型尺寸較小引起的回歸參數預測質量的退化程度。如下一節所述,這不一定會導致整個 AR 管道質量的成比例降低。

圖 6 回歸參數預測質量

應用

上述模型可以在完整圖像或視頻幀上運行,並且可以作為幾乎任何與人臉相關的計算機視覺應用的第一步,例如 2D / 3D 人臉關鍵點、輪廓或表面幾何估計、面部特徵或表情分類以及人臉區域分割。因此,計算機視覺流程中的後續任務可以根據適當的面部剪裁來定義。結合 BlazeFace 提供的少量面部關鍵點估計,此結果也可以旋轉,這樣圖像中的面部是居中的、標準化的並且滾動角接近於零。這消除了 SIG-nifi 不能平移和旋轉不變性的要求,從而允許模型實現更好的計算資源分配。

我們通過一個具體的人臉輪廓估計示例來說明這種方法。在圖 7 中,我們展示了 BlazeFace 的輸出,即預測的邊界框和面部的 6 個關鍵點(紅色)如何通過一個更複雜的人臉輪廓估計模型來進一步細化,並將其應用於擴展的結果。

圖 7 流程示例;紅色代表 BlazeFace 輸出;綠色代表任務特定的模型輸出

詳細的關鍵點可以產生更精細的邊界框估計(綠色),並在不運行人臉檢測器的情況下重新用於後續幀中的跟蹤。為了檢測該計算節省策略的故障,該模型還可以檢測面部是否存在所提供的矩形裁剪中合理地對齊。每當違反該條件時,BlazeFace 人臉檢測器將再次在整個視頻幀上運行。

論文鏈接

https://arxiv.org/pdf/1907.05047v1.pdf

你可能還想看

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

如何使用 TensorFlow.js 自動化 Chrome 恐龍遊戲?
數據科學家必看!處理數據的 7 個小技巧

TAG:AI研習社 |