人臉檢測學習筆記(數據集-DLIB人臉檢測原理-DLIB&OpenCV人臉檢測方法及對比)

1.Easily Create High Quality Object Detectors with Deep Learninghtml

2016/10/11python

http://blog.dlib.net/2016/10/easily-create-high-quality-object.htmlgit

dlib中的MMOD實現使用HOG特徵提取,而後使用單個線性過濾器。這意味着它沒法學習檢測出具備複雜姿式變化的物體。HOG:方向梯度直方圖(Histogram of oriented gradient)是在計算機視覺和圖像處理領域用於目標檢測的特徵描述器。github

 人臉檢測基準FDDB有兩種模式:10倍交叉驗證和不受限制。二者都在同一數據集上進行測試,但在10倍交叉驗證模式下,您只能對FDDB數據集中的數據進行訓練。在無限制模式下,您能夠訓練您喜歡的任何數據,只要它不包含來自FDDB的圖像。FDDB站點:http://vis-www.cs.umass.edu/fddb/index.html算法

人臉數據集:FDDB、ImageNet、AFLW、Pascal VOC、VGG、WIDER 、Ibug(https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/)、facescrub(http://www.robots.ox.ac.uk/~vgg/data/vgg_face/)等。網絡

 

2.dlib-models架構

https://github.com/davisking/dlib-models工具

(1)mmod_human_face_detector性能

是在這個數據集上訓練的:http://dlib.net/files/data/dlib_face_detection_dataset-2016-09-30.tar.gz。做者經過在許多公開可用的圖像數據集(不包括FDDB數據集)中查找人臉圖像來建立數據集。特別是,有來自ImageNet,AFLW,Pascal VOC,VGG數據集,WIDER和facescrub的圖像。數據集中的全部註釋都是由做者使用dlib的imglab工具建立的。mmod_human_face_detector 包含兩種模式。不能人臉識別。學習

(2)shape_predictor_68_face_landmarks.dat.bz2

這是在ibug 300-W數據集上訓練的(https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/)。dlib_face_recognition_resnet_model_v1  shape detect聯合使用,能夠人臉識別。

(3)性能效果

DLIB,HOG+SVM:正臉,CPU百毫秒級

DLIB,CNN:非正臉,秒級,GPU百毫秒級

  

3.Face Detection – OpenCV, Dlib and Deep Learning ( C++ / Python )

2018/10/22

https://www.learnopencv.com/face-detection-opencv-dlib-and-deep-learning-c-python/

 本文對比了OpenCV和dlib的4中人臉檢測方法:OpenCV中的Haar Cascade人臉檢測器、基於深度學習的OpenCV人臉檢測器、Dlib中的HoG Face Detector、基於深度學習的Dlib人臉檢測器。

(1)OpenCV中的Haar Cascade人臉檢測器

優勢:

1)幾乎能夠在CPU上實時工做。

2)簡單的架構。

3)檢測不一樣比例的臉部。

缺點:

1)這種方法的主要缺點是它提供了大量的假預測。

2)不適用於非正面圖像。

3)在遮擋下不起做用。

(2)基於深度學習的OpenCV人臉檢測器

它基於Single-Shot-Multibox檢測器,並使用ResNet-10架構做爲主幹。使用來自網絡的圖像訓練該模型,但未公開該來源。 OpenCV爲這款人臉探測器提供了2種型號:浮點16版原始caffe實現(5.4 MB)和使用Tensorflow的8位量化版本(2.7 MB)。

優勢:

1)四種方法中最準確的

2)在CPU上實時運行。

3)適用於不一樣的面部方向 - 上,下,左,右,側面等。

4)甚至在嚴重遮擋下工做。

5)檢測各類尺度的面部(檢測大面和小面)。

缺點:基於DNN的探測器克服了基於Haar級聯探測器的全部缺點,同時不會損害Haar提供的任何優點。除了它比下面討論的基於Dlib HoG的面部檢測器慢以外,咱們看不出這種方法的任何主要缺點。

(3)Dlib中的HoG Face Detector

這是一種普遍使用的人臉檢測模型,基於HoG特徵和SVM。該模型由5個HOG過濾器構成 - 前視,左視,右視,前視但向左旋轉,前視但向右旋轉。用於訓練的數據集包括2825個圖像,這些圖像從LFW數據集中得到,並由Dlib的做者Davis King手動註釋。它能夠從這裏下載。http://dlib.net/files/data/dlib_face_detector_training_data.tar.gz

優勢:

1)CPU上最快的方法。

2)適用於正面和略微非正面的面部。

3)輕量級模型與其餘三個相比,在小的遮擋下工做,基本上,這種方法在大多數狀況下都有效,除了下面討論的少數狀況。

缺點:

1)主要缺點是它不能檢測小臉,由於它訓練的最小面部尺寸爲80×80。所以,您須要確保面部大小應該大於應用程序中的面部大小。可是,您能夠爲較小尺寸的面部訓練本身的面部檢測器。

2)邊界框一般有時排除前額的一部分甚至下巴的一部分。

3)在嚴重遮擋下不能很好地工做。

4)不適用於側面和極端非正面,如俯視或俯視。

(4)Dlib中的CNN面部檢測器。

此方法使用具備基於CNN的功能的最大邊距對象檢測器(MMOD)。此方法的培訓過程很是簡單,您不須要大量數據來訓練自定義對象檢測器。它使用由其做者戴維斯·金手動標記的數據集,包括來自各類數據集的圖像,如ImageNet,PASCAL VOC,VGG,WIDER,Face Scrub。它包含7220張圖片。數據集:http://dlib.net/files/data/dlib_face_detection_dataset-2016-09-30.tar.gz

優勢:

1)適用於不一樣的面部方向。

2)偶然場景下健壯。

3)在GPU上工做得很是快。

4)很是簡單的培訓過程。

缺點:

1)CPU速度很慢

2)不會檢測小臉,由於它訓練的最小臉部尺寸爲80×80。所以,您須要確保面部大小應該大於應用程序中的面部大小。可是,您能夠爲較小尺寸的面部訓練本身的面部檢測器。

3)邊界框甚至小於HoG探測器。

基於dlib的方法可以檢測大小達(70×70)的人臉,以後它們沒法檢測到。正如咱們以前討論的那樣,我認爲這是基於Dlib的方法的主要缺點。由於在大多數狀況下不可能事先知道面部的大小。咱們能夠經過scaling圖像來擺脫這個問題,可是與OpenCV-DNN相比,dlib的速度優點消失了。OpenCV方法仍不支持NVIDIA GPU。各場景下的選擇建議:

(1)通常狀況

在大多數應用程序中,咱們不會在前面的圖像中知道面部的大小。所以,最好使用OpenCV- DNN方法,由於它很是快速且很是準確,即便對於小尺寸的面部也是如此。它還能夠檢測各類角度的面部。咱們建議大多數人使用OpenCV-DNN。

(2)中到大圖像尺寸

Dlib HoG是CPU上最快的方法。但它沒有檢測到小臉(<70x70)。所以,若是您知道您的應用程序不會處理很是小的面部(例如自拍應用程序),那麼基於HoG的面部檢測器是更好的選擇。此外,若是你可使用GPU,那麼MMOD人臉檢測器是最好的選擇,由於它在GPU上很是快,而且還提供各類角度的檢測。

(3)高分辨率圖像

因爲這些算法不能提供高分辨率圖像(計算速度),所以當縮小圖像時,HoG / MMOD檢測器可能會失敗。另外一方面,OpenCV-DNN方法能夠用於這些,由於它檢測小臉。

(4)非正臉

非正面能夠向右,向左,向上,向下看,基於Haar的探測器徹底失效。基於HoG的探測器確實檢測左側或右側面部的面(由於它是在它們上訓練的),但不如基於DNN的OpenCV和Dlib探測器那樣精確。

(5)遮擋

DNN方法優於其餘兩種方法,OpenCV-DNN略好於Dlib-MMOD。

相關文章
相關標籤/搜索