您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何進行OpenCV及Dlib的人臉檢測比較分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
人臉檢測是計算機視覺最典型的應用之一,早期OpenCV的logo就是Haar人臉檢測的示意圖。
很多人的第一個OpenCV學習目標就是跑通Haar級聯人臉檢測,Dlib庫在業內開始流行很大程度上是因為其HOG-SVM人臉檢測比OpenCV Haar的好,而近年來OpenCV和Dlib均已包含基于深度學習的人臉檢測算法實現。
Haar-Cascade,HOG-SVM,深度學習正是代表著人臉檢測乃至目標檢測的三個時代。
昨天Learn OpenCV網站博主Vikas Gupta博士發表文章,對OpenCV與Dlib中四種人臉檢測算法實現進行了比較分析,包含C++/Python的代碼示例,且對精度和速度都進行了量化。
1. OpenCV Haar Cascade人臉檢測
算法無需贅言。
代碼示例:
優點
1)幾乎可以在CPU上實時工作;
2)簡單的架構;
3)可以檢測不同比例的人臉。
缺點
1)會出現大量的把非人臉預測為人臉的情況;
2)不適用于非正面人臉圖像;
3)不抗遮擋。
2. OpenCV DNN 人臉檢測
從OpenCV3.3版本后開始引入,算法出自論文《SSD: Single Shot MultiBox Detector》(https://arxiv.org/abs/1512.02325)。使用ResNet-10作為骨干網。
OpenCV提供了兩個模型:
1)原始Caffe實現的16位浮點型版本(5.4MB);
2)TensorFlow實現的8位量化版本(2.7MB)。
Vikas Gupta的代碼包含了這兩種模型。
模型加載代碼示例:
檢測測試代碼示例:
優點
1)在這四種方法中是最準確的;
2)在CPU上能夠實時運行;
3)適用于不同的人臉方向:上,下,左,右,側面等。
4)甚至在嚴重遮擋下仍能工作;
5)可以檢測各種尺度的人臉。
缺點
作者認為沒有什么大的缺點^_^
(52CV君不敢妄提缺點,但認為不能使用NVIDIA GPU絕對是個遺憾)
3. Dlib HoG人臉檢測
代碼示例:
優點
1)CPU上最快的方法;
2)適用于正面和略微非正面的人臉;
3)與其他三個相比模型很小;
4)在小的遮擋下仍可工作。
缺點
1)不能檢測小臉,因為它訓練數據的最小人臉尺寸為80×80,但是用戶可以用較小尺寸的人臉數據自己訓練檢測器;
2)邊界框通常排除前額的一部分甚至下巴的一部分;
3)在嚴重遮擋下不能很好地工作;
4)不適用于側面和極端非正面,如俯視或仰視。
4. Dlib CNN人臉檢測
算法來自論文《Max-Margin Object Detection》(https://arxiv.org/abs/1502.00046)。
代碼示例:
優點
1)適用于不同的人臉方向;
2)對遮擋魯棒;
3)在GPU上工作得非常快;
4)非常簡單的訓練過程。
缺點
1)CPU速度很慢;
2)不能檢測小臉,因為它訓練數據的最小人臉尺寸為80×80,但是用戶可以用較小尺寸的人臉數據自己訓練檢測器;
3)人臉包圍框甚至小于DLib HoG人臉檢測器。
5. 四種方法精度比較
作者在FDDB數據庫中測評了四種人臉檢測算法實現的精度,結果如下:
可以看到Dlib的兩種方法效果都不怎么好,作者發現原來Dlib訓練使用的數據集的人臉包圍框較小,導致按照FDDB的評價標準不公平。
另外,Dlib無法檢測小臉也拉低了分數。
6. 速度比較
軟硬件環境:
Processor : Intel Core i7 6850K – 6 Core
RAM : 32 GB
GPU : NVIDIA GTX 1080 Ti with 11 GB RAM
OS : Linux 16.04 LTS
Programming Language : Python
圖像大小300*300,測試結果如下:
可以看到除了MMOD 其他方法都達到實時,而MMOD方法的GPU計算是最快的。
7. 分情況檢測結果示例
7.1跨尺度檢測
7.2 非正面人臉
7.3 遮擋
8 總結推薦
如何在應用中選擇人臉檢測算法呢?作者認為應該首先嘗試OpenCV DNN方法與Dlib HOG方法,然后再做決定。
一般情況
在大多數應用程序中,我們無法知道圖像中人臉尺寸的大小。因此,最好使用OpenCV-DNN方法,因為它非常快速且非常準確,即使對于小尺寸的人臉也是如此。它還可以檢測各種角度的人臉。所以OpenCV-DNN是首選。
中到大尺寸的圖像
Dlib HOG是CPU上最快的方法。但它不能檢測到小臉(<70x70)。因此,如果知道程序不會處理非常小的人臉(例如自拍照),那么基于HOG的人臉檢測器是更好的選擇。
此外,如果你可以使用GPU(NVIDIA家的),那么MMOD人臉檢測器是最好的選擇,因為它在GPU上非常快,并且還提供各種角度的檢測。
高分辨率圖像
由于在高分辨率圖像中,這些算法的速度都會很慢,而如果縮小圖像尺寸,HOG/MMOD可能會失敗,同時OpenCV-DNN卻可以檢測小臉,所以對于高分辨率圖像推薦縮小圖像再使用OpenCV-DNN的方法。
上述就是小編為大家分享的如何進行OpenCV及Dlib的人臉檢測比較分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。