人臉檢測經典算法


我們將整個人臉檢測算法分為3個階段,分別是早期算法,AdaBoost框架,以及深度學習時代,在接下來將分這幾部分進行介紹。

早期的人臉檢測算法使用了模板匹配技術,即用一個人臉模板圖像與被檢測圖像中的各個位置進行匹配,確定這個位置處是否有人臉;此后機器學習算法被用於該問題,包括神經網絡,支持向量機等。以上都是針對圖像中某個區域進行人臉-非人臉二分類的判別。

早期有代表性的成果是Rowley等人提出的方法[1][2]。他們用神經網絡進行人臉檢測,用20x20的人臉和非人臉圖像訓練了一個多層感知器模型。

文獻[1]的方法用於解決近似正面的人臉檢測問題

文獻[2]的方法解決多角度人臉檢測問題,整個系統由兩個神經網絡構成,第一個網絡用於估計人臉的角度,第二個用於判斷是否為人臉。角度估計器輸出一個旋轉角度,然后用整個角度對檢測窗進行旋轉,然后用第二個網絡對旋轉后的圖像進行判斷,確定是否為人臉。

 

AdaBoost框架

接下來介紹AdaBoost框架之后的方法,boost算法是基於PAC學習理論(probably approximately correct)而建立的一套集成學習算法(ensemble learning)。其根本思想在於通過多個簡單的弱分類器,構建出准確率很高的強分類器,PAC學習理論證實了這一方法的可行性。

在2001年Viola和Jones設計了一種人臉檢測算法[10]。它使用簡單的Haar-like特征和級聯的AdaBoost分類器構造檢測器,檢測速度較之前的方法有2個數量級的提高,並且保持了很好的精度,我們稱這種方法為VJ框架。VJ框架是人臉檢測歷史上第一個最具有里程碑意義的一個成果,奠定了基於AdaBoost目標檢測框架的基礎,所以作為重點和大家嘮嘮。

在VJ算法問世之后,較好的解決了近似正面人臉的檢測問題。此后出現了大量改進方案,在深度學習技術出現之前,一直是人臉檢測算法的主流框架。這些方案的改進主要在以下幾個方面:

新的特征,包括擴展的Haar特征[4],ACF特征[15]等,它們比標准的Haar-like特征有更強的描述能力,同時計算成本也很低。

使用其他類型的AdaBoost分類器。VJ框架中采用的是離散型的AdaBoost算法,除此之外,還有實數型,Logit型,Gentle型等各種方案。實數型、Logit型和Gentle型AdaBoost算法不僅能輸出分類標簽值,還能給出置信度,有更高的精度。

ACF[15](Aggregate ChannelFeatures for Multi-view Face Detection)是一種為分類提供足夠多的特征選擇的方法。在對原圖進行處理后,得到多通道的圖像,這些通道可以是RGB的通道,可以是平滑濾波得到的,可以是x方向y方向的梯度圖等等。將這些通道合起來,在此基礎上提取特征向量后續采用Soft-Cascade分類器進行分類。

相較於VJ-cascade的設計,Soft-Cascade采用幾個改進的方案:

(1)每個stage的決策函數不是二值而是標量值(scalar-valued) ,且與該樣本有多"容易"通過這個
stage以及在這個stage的相對重要性成比例。
(2)生成的決策函數是需要通過之前每個階段的值而不單單是本階段來判定。
(3)文中把檢測器的運行時間-准確率權衡通過一個叫ROC surface的3維曲面清楚的展示出來,方便
調節參數,可以明確的知道動了哪個參數會對這個檢測器的性能會有些什么影響。

DMP模型

DPM(Deformable Part Model),正如其名稱所述,可變形的組件模型,是一種基於組件的檢測算法,其所見即其意。該模型由Felzenszwalb在2008年提出,並發表了一系列的CVPR,NIPS會議。並且還拿下了2010年,PASCAL VOC的“終身成就獎”。

由於DPM算法[16]本身是一種基於組件的檢測算法,所以對扭曲,性別,多姿態,多角度等的人臉都具有非常好的檢測效果(人臉通常不會有大的形變,可以近似為剛體,基於DMP的方法可以很好地處理人臉檢測問題)。

 

深度學習框架

卷積神經網絡在圖像分類問題上取得成功之后很快被用於人臉檢測問題,在精度上大幅度超越之前的AdaBoost框架,當前已經有一些高精度、高效的算法。直接用滑動窗口加卷積網絡對窗口圖像進行分類的方案計算量太大很難達到實時,使用卷積網絡進行人臉檢測的方法采用各種手段解決或者避免這個問題。

  Cascade CNN

Cascade CNN[17]可以認為是傳統技術和深度網絡相結合的一個代表,和VJ人臉檢測器一樣,其包含了多個分類器,這些分類器采用級聯結構進行組織,然而不同的地方在於,Cascade CNN采用卷積網絡作為每一級的分類器。

構建多尺度的人臉圖像金字塔,12-net將密集的掃描這整幅圖像(不同的尺寸),快速的剔除掉超過90%的檢測窗口,剩下來的檢測窗口送入12-calibration-net調整它的尺寸和位置,讓它更接近潛在的人臉圖像的附近。


采用非極大值抑制(NMS)合並高度重疊的檢測窗口,保留下來的候選檢測窗口將會被歸一化到24x24作為24-net的輸入,這將進一步剔除掉剩下來的將近90%的檢測窗口。和之前的過程一樣,通過24-calibration-net矯正檢測窗口,並應用NMS進一步合並減少檢測窗口的數量

將通過之前所有層級的檢測窗口對應的圖像區域歸一化到48x48送入48-net進行分類得到進一步過濾的人臉候選窗口。然后利用NMS進行窗口合並,送入48-calibration-net矯正檢測窗口作為最后的輸出。

  DenseBox

文獻[18]提出了一種稱為DenseBox的目標檢測算法,適合人臉這類小目標的檢測。這種方法使用全卷積網絡,在同一個網絡中直接預測目標矩形框和目標類別置信度。通過在檢測的同時進行關鍵點定位,進一步提高了檢測精度。

檢測時的流程如下:
1.對待檢測圖像進行縮放,將各種尺度的圖像送入卷積網絡中處理,以檢測不同大小的目標。
2.經過多次卷積和池化操作之后,對特征圖像進行上采樣然后再進行卷積,得到最終的輸出圖像,這張
圖像包含了每個位置出現目標的概率,以及目標的位置、大小信息。
3.由輸出圖像得到目標矩形框。
4.非最大抑制,得到最終的檢測結果。

  Faceness-Net

Faceness-Net[19]是一個典型的由粗到精的工作流,借助了多個基於DCNN網絡的facial parts分類器對人臉進行打分,然后根據每個部件的得分進行規則分析得到Proposal的人臉區域,最后通過一個Refine的網絡得到最終的人臉檢測結果。

  MTCNN

MTCNN[20]顧名思義是多任務的一個方法,它將人臉區域檢測和人臉關鍵點檢測放在了一起,同Cascade CNN一樣也是基於cascade的框架,但是整體思路更加巧妙合理,MTCNN總體來說分為三個部分:PNet、RNet和ONet。

  HR

之前我們講過的一些方法都沒有針對小目標去分析,小目標檢測依然是檢測領域的一個難題,[21]本文作者提出的檢測器通過利用尺度,分辨率和上下文多種信息融合來檢測小目標

  Face R-CNN

[22]該方法基於Faster R-CNN框架做人臉檢測,針對人臉檢測的特殊性做了優化。

  SSH

[23] SSH最大的特色就是尺度不相關性(scale-invariant),比如MTCNN這樣的方法在預測的時候,是對不同尺度的圖片分別進行預測,而SSH只需要處以一個尺度的圖片就可以搞定。實現方式就是對VGG網絡不同level的卷積層輸出做了3個分支(M1,M2,M3),每個分支都使用類似的流程進行檢測和分類,通過針對不同尺度特征圖進行分析,變相的實現了多尺度的人臉檢測。
  PyramidBox

這一次是百度的“PyramidBox”[24]

參考文獻

[1] Henry A Rowley, Shumeet Baluja, Takeo Kanade. Neural network-based face detection. 1998, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[2] Henry A Rowley, Shumeet Baluja, Takeo Kanade. Rotation invariant neural network-based face detection. 1998, computer vision and pattern recognition.

[3] P.Viola and M.Jones. Rapid object detection using a boosted cascade of simple features. In Proceedings IEEE Conf. on Computer Vision and Pattern Recognition, 2001

[4] Rainer Lienhart, Jochen Maydt. An extended set of Haar-like features for rapid object detection. 2002, international conference on image processing.

[5] Lubomir Bourdev, Jonathan Brandt. Robust Object Detection Via Soft Cascade. CVPR 2005.

[6] Bo Wu, Haizhou Ai, Chang Huang, Shihong Lao. Fast rotation invariant multi-view face detection based on real Adaboost. 2004, IEEE international conference on automatic face and gesture recognition.

[7] M.Jones, P.Viola. Fast Multi-View Face Detection. Mitsubishi Electric Research Laboratories, Technical Report: MERL-2003-96, July 2003.

[8] Y.Ma, X.Q.Ding. Real-time rotation invariant face detection based on cost-sensitive AdaBoost. In: Proceedings of the IEEE International Conference on Image Processing. Barcelona, Spain: IEEE Computer Society, 2003. 921-924.

[9] Y.Ma, X.Q.Ding. Robust multi-view face detection and pose estimation based on cost-sensitive AdaBoost. In: Proceedings of the 6-th Asian Conference on Computer Vision. Jeju, Korea: Springer, 2004.

[10] S.Z.Li, L.Zhu, Z.Q.Zhang, A.Blake, H.J.Zhang, H.Y.Shum. Statistical learning of multi-view face detection. In: Proceedings of the 7-th European Conference on Computer Vision. Copenhagen, Denmark: Springer, 2002.67-81.

[11] S.Z.Li, Z.Q.Zhang, H.Y.Shum, H.J.Zhang. FloatBoost learning for classification. In: Proceedings of the 16-th Annual Conference on Neural Information Processing Systems. Vancouver, Canada: MIT Press, 2002. 993-1000.

[12] S.Z.Li, L.Zhu, Z.Q.Zhang, H.J.Zhang. Learning to detect multi-view faces in real-time. In: Proceedings of the 2-nd International Conference on Development and Learning. Cambridge, MA, USA: IEEE Computer Society, 2002. 172-177.

[13] S.Z.Li, Z.Q.Zhang. FloatBoost Learning and Statistical Face Detection. In: IEEE Transactions on Pattern Analysis and Machine Intelligence, 2004.

[14] B.Wu, H.Z.Ai, C.Huang, S.H.Lao. Fast rotation invariant multi-view face detection based on real adaboost. In: Proc. 6th Int'l Conf. Automatic Face and Gesture Recognition, 2004, 79-84.

[15] B. Yang, J. Yan, Z. Lei and S. Z. Li. Aggregate channel features for multi-view face detection.. International Joint Conference on Biometrics, 2014.

[16] M. Mathias, R. Benenson, M. Pedersoli and L. Van Gool. Face detection without bells and whistles. ECCV 2014.

[17] Haoxiang Li, Zhe Lin, Xiaohui Shen, Jonathan Brandt, Gang Hua. A convolutional neural network cascade for face detection. 2015, computer vision and pattern recognition

[18] Lichao Huang, Yi Yang, Yafeng Deng, Yinan Yu. DenseBox: Unifying Landmark Localization with End to End Object Detection. 2015, arXiv: Computer Vision and Pattern Recognition

[19] Shuo Yang, Ping Luo, Chen Change Loy, Xiaoou Tang. Faceness-Net: Face Detection through Deep Facial Part Responses.

[20] Kaipeng Zhan, Zhanpeng Zhang, Zhifeng L, Yu Qiao. Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks. 2016, IEEE Signal Processing Letters.

[21] HR - P. Hu, D. Ramanan. Finding Tiny Faces. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017.

[22] Face R-CNN - H. Wang, Z. Li, X. Ji, Y. Wang. Face R-CNN. arXiv preprint arXiv:1706.01061, 2017.

[23] SSH - M. Najibi, P. Samangouei, R. Chellappa, L. Davis. SSH: Single Stage Headless Face Detector. IEEE International Conference on Computer Vision (ICCV), 2017.

[24] PyramidBox - X. Tang, Daniel K. Du, Z. He, J. Liu PyramidBox: A Context-assisted Single Shot Face Detector. arXiv preprint arXiv:1803.07737, 2018.

推薦文章
[1] 機器學習-波瀾壯闊40年 SIGAI 2018.4.13.
[2] 學好機器學習需要哪些數學知識?SIGAI 2018.4.17.
[3] 人臉識別算法演化史 SIGAI 2018.4.20.
[4] 基於深度學習的目標檢測算法綜述 SIGAI 2018.4.24.
[5] 卷積神經網絡為什么能夠稱霸計算機視覺領域? SIGAI 2018.4.26.
[6] 用一張圖理解SVM的脈絡 SIGAI

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM