人臉檢測技術發展及百度“框”實踐

特邀精選發表於2020-04-17

近年來,人臉識別逐漸成為了視覺領域研究裡最熱門的課題,人臉相關應用在安防監控、人證比對、人臉解鎖、人機互動、人臉特效等領域都有重要的應用價值。人臉檢測是很多人臉應用的基礎任務,比如人臉關鍵點,人臉識別,人臉老化等。由於存在姿態變化、遮擋、光照變化、尺度變化等一系列問題,人臉檢測的實際落地應用仍存在較大的挑戰。衍生於手工設計特徵的人臉檢測器,現有的檢測器透過深度卷積神經網路學到的魯棒特徵大大提升了效果。最近的效能領先的人臉檢測器往往受通用目標檢測器的啟發,通常是基於錨點的深度卷積神經網路。

據我們所知,為了實現高效、準確的人臉檢測器,主流的SOTA人臉檢測框架往往從以下幾個思路去最佳化:特徵融合、上下文資訊、錨點設計、額外監督、資料擴充、網路結構、感知野設計、單階段Refinement、頭部網路設計、anchor free等。過去幾年,百度視覺技術部在人臉檢測問題上也產出了一系列的研究,本文我們透過人臉檢測器最佳化的多個角度來剖析下這些研究。

該圖為人臉檢測器設計的幾個最佳化思路,包括特徵融合、上下文資訊、錨點設計、額外監督、資料擴充、網路結構等等。黃色部分為百度視覺技術部發表在各會議和期刊的相關研究。人臉檢測技術發展及百度“框”實踐Anchor Free&端到端角度:第一個anchor free且可以進行端到端訓練的物體檢測器DenseBox (Arxiv 15)

上下文資訊角度:引入基於anchor的上下文輔助方法,用於半監督學習人臉上下文特徵的PyramidBox (ECCV 18), 同時更好的利用尺度感知的Data-Anchor-Sampling以改變訓練樣本的分佈; 

特徵融合角度:基於注意力指引的語義增強特徵融合框架來學習各個尺度的具有豐富語義特徵金字塔的DAFBox (Progressively Refined Face Detection Through Semantics-Enriched Representation Learning. TIFS 19)

錨點設計角度:使得異常人臉被補償高質量錨點的線上高質量錨點挖掘框架HAMBox (HAMBox: Delving into High-quality Anchors Mining for Outlier Faces Detection. CVPR 20)

網路結構角度:第一個基於神經網路架構搜尋的方法,同時搜尋一個適合人臉檢測的特徵提取器(Backbone)和特徵金字塔(FPN)的BFBox (BFBox: Searching Face-appropriate Backbone and Feature Pyramid Network for Robust Face Detector. CVPR 20)

其中,HAMBox方案幫助百度視覺技術部在2019年WIDER Face and Pedestrian Challenge上以mAP值57.13%的成績奪得人臉檢測的冠軍,超過了第二名0.47%,遠超去年冠軍55.82%的成績。同時將WIDERFACE 驗證集hard子集的AP重新整理到恐怖的93.3%。PyramidBox和PyramidBox++方案兩次重新整理WIDER Face國際榜單世界紀錄。百度已在飛槳(PaddlePaddle)上開源了PyramidBox,並計劃開源HAMBox,該方案將進一步推動人臉檢測相關的研究,幫助更多開發者應用更前沿的人臉技術。

人臉檢測技術發展及百度“框”實踐以上圖中,紅色框是PyramidBox的檢測效果,可以看出PyramidBox對於姿態、模糊、遮擋、尺度等條件具有極強的魯棒性。

開源專案地址:https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/face_detection

Anchor Free&端到端角度: DenseBox: Unifying Landmark Localization with End to End Object Detection

DenseBox這篇工作從2015年就已經發表了。現在回過頭看DenseBox,他是第一個anchor free且可以進行端到端訓練的物體檢測器,甚至比Fast R-CNN還要早,極具前瞻性。誰能想到2019年物體檢測和人臉檢測領域出現的大量借鑑DenseBox思路的anchor-free的文章,諸如CornerNet,FCOS,FoveaBox,ExtremeNet,CenterFace,SFace等等。

DenseBox的主要貢獻如下:

  1. DenseBox設計了一個簡單的全卷積網路,來高效、準確檢測遮擋的多尺度物體,並且實現了端到端的訓練和測試。而R-CNN系列演算法是從Faster R-CNN中使用了RPN代替了Selective Search才開始實現端到端訓練的,而和語義分割的結合更是等到了2017年的Mask R-CNN才開始。
  2. DenseBox透過多工學習的方式引入了關鍵點定位,並且進一步提升了目標檢測的準確率。並且在人臉檢測資料集MALF和車輛檢測資料集KITTI上驗證了其優秀的效能。
  3. 提出多尺度特徵,而R-CNN系列直到FPN才開始使用多尺度融合的特徵。

人臉檢測技術發展及百度“框”實踐

如圖所示為結合檢測和關鍵點定位的框架圖。

上下文資訊角度: PyramidBox: A Context-assisted Single Shot Face Detector (ECCV 18)

    在不受控制的環境中檢測小的、模糊的及部分遮擋的人臉仍舊是一個有待解決的難題。針對棘手的人臉檢測問題,本文提出了一種語境輔助的單次人臉檢測新方法——PyramidBox。考慮到語境的重要性,我們從以下三個方面改進語境資訊的利用。首先,我們設計了一種全新的語境 anchor,透過半監督的方法來監督高層級語境特徵學習,我們稱之為 PyramidAnchors。其次,我們提出了一種低層次級特徵金字塔網路,將充分的高層級語境語義特徵和低層級面部特徵結合在一起,使 PyramidBox 能夠一次性預測所有尺寸的人臉。再次,我們引入了語境敏感結構,擴大預測網路的容量,以提高最終的輸出準確率。此外,我們還採用「資料-anchor-取樣」的方法對不同尺寸的訓練樣本進行擴充,增加了較小人臉訓練資料的多樣性。PyramidBox 充分利用了語境的價值,在兩個常用人臉檢測基準——FDDB 和 WIDER FACE 上表現非凡,取得當前最優水平。2018年3月該方法在世界最權威的人臉檢測公開評測集 WIDER FACE 的「Easy」、「Medium」和「Hard」三項評測子集中均榮膺榜首,重新整理業內最好成績。

如下圖所示,PyramidBox在六個尺度的特徵圖上進行不同層級的預測。該工作主要包括以下模組:低尺度特徵金字塔LFPN、語境輔助監督模組Pyramid Anchors、上下文敏感結構CPM、尺度感知的Data-anchor-sampling。

人臉檢測技術發展及百度“框”實踐

LFPN: LFPN全稱Low-level Feature Pyramid Networks, 在檢測任務中,LFPN可以充分結合高層次的包含更多上下文的特徵和低層次的包含更多紋理的特徵。高層級特徵被用於檢測尺寸較大的人臉,而低層級特徵被用於檢測尺寸較小的人臉。為了將高層級特徵整合到高解析度的低層級特徵上,我們從中間層開始做自上而下的融合,構建Low-level FPN。

Pyramid Anchors: 該演算法使用半監督解決方案來生成與人臉檢測相關的具有語義的近似標籤,提出基於anchor的語境輔助方法,它引入有監督的資訊來學習較小的、模糊的和部分遮擋的人臉的語境特徵。使用者可以根據標註的人臉標籤,按照一定的比例擴充,得到頭部的標籤(上下左右各擴充1/2)和人體的標籤(可自定義擴充比例)。如下圖所示,可以看出由於缺少背景資訊,小人臉很難被定位和分類,然而當給人臉區域充足的上下文資訊的條件下,我們能夠清晰準確的定位人臉位置。

人臉檢測技術發展及百度“框”實踐

CPM: CPM全稱Context-sensitive Predict Module, 本方法設計了一種上下文敏感結構(CPM)來提高預測網路的表達能力。該模型由混合網路結構和最大輸入輸出層組成,從融合特徵中學習準確的定位和分類;

Data-anchor-sampling: 設計了一種新的取樣方法,稱作Data-anchor-sampling,該方法可以增加訓練樣本在不同尺度上的多樣性。該方法改變訓練樣本的分佈,重點關注較小的人臉。

Pyramidbox模型可以在以下示例圖片上展示魯棒的檢測效能,該圖有一千張人臉,該模型檢測出其中的880張人臉。

人臉檢測技術發展及百度“框”實踐

不同模組在baseline上的提升對比實驗:人臉檢測技術發展及百度“框”實踐

特徵融合角度:DAFBox: Progressively Refined Face Detection Through Semantics-Enriched Representation Learning (TIFS 19)

特徵金字塔旨在學習到多尺度的特徵表達,來檢測多尺度的人臉。然而,在不同的尺度下,它們往往缺乏足夠的上下文資訊,特別是當資料集有很多小人臉的時候。本文中,我們提出了基於注意力指引的語義增強特徵融合框架來學習各個尺度的具有豐富語義特徵金字塔的DAFBox。高維的抽象特徵被直接透過skip connections的方式引入到低維特徵,這樣可以保持儘可能多的語義資訊。除此之外,在特徵融合過程中,我們使用注意力機制作為“門”來強化有用特徵,弱化無用特徵。受人類對於小臉的視覺感知啟發,我們設計了一個深度漸進精煉損失DPRL有效的使得特徵學習變得簡單。根據以上原則,我們設計和調研了多種不同的特徵金字塔框架。最終,我們提出了兩種典型的可以端到端訓練的結構:集中注意力特徵CAF和分散式注意力特徵DAF。人臉檢測技術發展及百度“框”實踐

從下圖可以明顯看出,對於小的人臉來說,包含過大上下文資訊的感知野並不是十分有利的。

人臉檢測技術發展及百度“框”實踐

往往是包括頭部或者肩膀的區域能夠更容易被人識別出來。人臉檢測技術發展及百度“框”實踐

【錨點設計角度: HAMBox: Delving into High-quality Anchors Mining for Outlier Faces Detection. CVPR 20】

近期的人臉檢測器利用錨點來構建一個結合分類和座標框迴歸的多工學習問題,有效的錨點設計和錨點匹配策略使得人臉檢測器能夠在大姿態和尺度變化下精準的定位人臉。然而,我們發現在推理階段,超過80%可以正確預測的檢測框是由負樣本錨點(錨點和對應人臉的交併比IoU小於一定閾值)迴歸生成。這表明這些負樣本錨點展示出了極好的迴歸能力,但是現有的方法都忽略了可以根據負樣本錨點進行學習。在本文中,我們提出了一種線上高質量錨點挖掘策略HAMBox, 它可以使得異常人臉(outer faces)被補償高質量的錨點。我們提出的HAMBox方法可以成為一種基於錨點的單步驟人臉檢測器的通用最佳化方案。

人臉檢測技術發展及百度“框”實踐

本文提出了線上高質量錨點挖掘策略HAMBox來給異常人臉補償最合適的錨點。我們首先基於RetinaNet建立了我們的高召回的人臉檢測器。接下來,我們細節化的列舉了線上高質量錨點補償策略。最後,我們針對補償錨點構建了基於迴歸敏感的focal loss。

  • 基於錨點的高召回人臉檢測器

已有的人臉檢測器利用錨點來構建一個結合分類和座標框迴歸的多工學習問題。我們以RetinaNet作為基線。特徵提取器是ResNet-50。遵循S3FD[3]的設定,我們採用了conv2的特徵來提升檢測器效果。

受啟發於圖一的數理統計,我們調整錨點尺寸(0.68×{16, 32, 64, 128, 256, 512})來匹配到更多人臉。

  • 線上高質量錨點補償策略

在完成錨點尺寸和比例的設計後,我們需要進一步給錨點分配它們最近鄰的真值或者背景。如下圖所示,已有的錨點匹配策略由兩步組成。人臉首先匹配與之IoU大於一定閾值的錨點,然後不能夠匹配上任何錨點的人臉將被補償一個與之具有最大IoU的錨點。如圖c所示,第二步中被補償的錨點可能會降低網路迴歸和分類的效果,因為這些錨點本質上與人臉有更低的IoU。

人臉檢測技術發展及百度“框”實踐

我們驚訝的發現隨著訓練迭代次數的增加,一些負樣本錨點具有了正確預測的能力,然而這些錨點在迴歸分支被忽略掉了,甚至在分類分支被賦予了背景類的標籤。 受這個發現的啟發,我們提出了線上高質量錨點補償策略來解決已有的未對準監督訊號的問題。

人臉檢測技術發展及百度“框”實踐

首先,每個人臉匹配與之IoU大於一定閾值的錨點。但是對於那些剩下的異常人臉來說,我們不補償任何的錨點。其次,在訓練過程中前向傳播的結尾,每個錨點透過它對應的迴歸座標計算迴歸檢測框。我們定義B_reg為這個迴歸檢測框,F_outer為異常人臉。最後,對於F_outer的每個人臉,我們計算它與B_reg的IoU,並且對這個人臉補償N個額外的負樣本錨點。我們定義所有的IoUs為IoU_set,這些N個補償的負樣本錨點根據以下兩個規則選出。(a)其對應的迴歸框和目標人臉之間的IoUs應該大於一個閾值T(T表示線上的正樣本錨點的閾值)。(b)根據規則1計算的IoUs應該在IoU_set集合裡面的top-K高的IoU裡面。K是一個超引數,表示F_outer匹配到的錨點的最大數目。在經過以上兩條規則過濾後,如果N大於K-M, 則我們在這N個負樣本錨點中選擇出top-(K-M)個高的IoU的錨點來補償這個臉,並且設定N=K-M。M表示第一步中人臉已經匹配上的錨點的數量。我們已經透過改變T,K來做了很多消融實驗。細節參考演算法1。

  • 基於迴歸敏感的focal loss

在分析完以上兩章節後,我們已經挖掘出了高質量的錨點,接下來的問題是如何有效的利用這些錨點。我們提出了基於迴歸敏感的focal loss來給予新補償的高質量錨點一個更合理的權重。

因此我們基於focal loss做出了兩個改進。(a)考慮到定位和分類之間的弱連線性,新補償的錨點被給予了基於IoU的動態權重。(b)我們定義同時滿足以下三個條件的錨點為可忽略錨點(在訓練中不被最佳化):1. 屬於高質量的錨點。2. 在錨點匹配策略的第一步中,被賦予了背景類的標籤。3. 不被包括於新補償的錨點中。

我們定義損失函式為:

人臉檢測技術發展及百度“框”實踐

除此之外,新補償的錨點的監督被新增到定位損失函式中,特定的公式如下:

人臉檢測技術發展及百度“框”實踐

總之,我們的主要貢獻可以總結為以下幾點:

  • 我們第一個發現瞭如此令人鼓舞的現象:一些負樣本錨點有足夠強的迴歸能力,並且已有的檢測框迴歸分支忽略了這些負樣本錨點的學習。這些現象是限制已有檢測器效果的主要瓶頸之一,我們認為這個觀察對檢測方向具有極大的價值。
  • 基於該發現,我們提出了線上高質量錨點挖掘策略HAMBox來取樣訓練過程中的高質量錨點。受益於HAMBox的方法,我們能夠在訓練過程中給異常人臉提供足夠多的有效的錨點。
  • 由於補償了高質量錨點,我們進一步提出了基於動態迴歸的focal loss,它幫助人臉檢測器以更靈活的方式訓練。
  • 我們的HAMBox需要的額外計算量幾乎可以忽略,並且它能夠被任意的插入到人臉檢測器中來提升效果。它在訓練階段,僅僅需要很少一部分額外效能成本,在推理階段不需要額外的效能成本。
  • 我們的方法在驗證集和測試集上取得了超過業內最佳模型2.9%和2.3%個AP的效果。更有甚者,該方法幫助我們在2019年WIDER Face and Pedestrian Challenge上以mAP 57.13%獲得冠軍。

【神經網路搜尋角度: BFBox: Searching Face-appropriate Backbone and Feature Pyramid Network for Robust Face Detector. CVPR 20

本文提出的方法BFBox是基於神經網路架構搜尋(NAS)的方法同時搜尋適合人臉檢測的特徵提取器和特徵金字塔。動機是我們發現了一個有趣的現象:針對影像分類任務設計的流行的特徵提取器已經在通用目標檢測任務上驗證了其重要的相容性,然而在人臉檢測任務上卻沒有取得預期的效果。同時不同的特徵提取器與特徵金字塔的結合也不是完全正相關的。首先,本文對於比較好的特徵提取器進行分析,提出了適合人臉的搜尋空間;其次,提出了圖1的特徵金字塔注意力模組(FPN-attention Module)去加強特徵提取器和特徵金字塔之間的聯絡;最後, 採取SNAS的方法同時搜出適和人臉的特徵提取器和特徵金字塔結構。多個資料集上(WIDER FACE, FDDB, AFW和PASCAL Face)的實驗表明了我們提出的方法的優越性。

如下圖所示為檢測網路的結構。網路是基於RetinaNet的結構加上我們提出的特徵金字塔注意力模組(FPN-attention Module),訓練超網路時採用的是隨機取樣的方法。人臉檢測技術發展及百度“框”實踐

【人臉檢測的討論】

透過以上分析,我們講解了人臉檢測最佳化低維度的思路,包括特徵融合、上下文資訊、錨點設計、額外監督、資料擴充、神經網路搜尋、感知野設計、單階段Refinement、頭部網路設計、anchor free等。

也許有人會問,在演算法設計上,人臉檢測和通用檢測又有什麼具體的區別呢?基於我們講解的幾篇文章,我們可以看出來:1.人臉具有自己的特定結構化特徵,PyramidBox提出用半監督解決方案來生成與人臉檢測相關的具有語義的近似標籤,其上下文具有包含頭部、肩膀等強語義的資訊。而通用檢測卻沒有這麼強的上下文語義相關性。2. 人臉檢測框和人臉關鍵點資訊足夠匹配,因此DenseBox透過多工學習的方式引入了關鍵點定位,並且進一步提升了目標檢測的準確率。而通用檢測裡面往往無法引入關鍵點資訊。3.針對影像分類任務設計的流行的特徵提取器已經在通用目標檢測任務上驗證了其重要的相容性,然而在人臉檢測任務上卻沒有取得預期的效果。BFBox重點分析了這種不相容性底層的原因。

在人臉輕量級檢測未來的研究趨勢上,還有哪些點值得我們關注呢?如何在端邊雲上設計更加輕量化的檢測模型?在這方面,我們可以關注下AutoML、 int8量化、蒸餾、裁剪等工作的進展。這裡也歡迎大家關注我們組參與開發的飛槳PaddleSlim平臺,PaddleSlim 實現了目前主流的網路量化、剪枝、蒸餾、AutoML四種壓縮策略,並可快速配置多種壓縮策略組合使用。我們人臉檢測方向基於PaddleSlim平臺也有對應的業務收益,同時我們也在PaddleDetection開源了輕量級人臉檢測模型FaceBoxes和BlazeFace,其搜尋得到的模型結構,相比於原版模型,在FDDB評測集上的離散ROC曲線AP值(DistROC AP)幾乎不變的情況下,體積僅有240KB,壓縮了3.3倍。在高通驍龍855 ARMv8處理器上單執行緒測試加速1.22倍。

【傳送門】

飛槳(PaddlePaddle)官網: https://www.paddlepaddle.org.cn/

PaddleSlim平臺:https://github.com/PaddlePaddle/PaddleSlim

PaddleDetection平臺:https://github.com/PaddlePaddle/PaddleDetection

相關文章