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。