最近在微信公眾號里看到輕量級人臉檢測演算法大盤點的文章,里面還提供了github原始碼地址,我就把它們逐個下載到本地win10-cpu機器上,除錯通過運行,去年在github下載過一個包含6種人臉檢測的程式(地址是 https://github.com/cs-giung/face-detection-pytorch),分別是pyramidbox,dsfd,s3fd,tinyface,facebox,mtcnn,但是這些演算法大多是重量級的網路模型,它在一幅圖片上的人臉檢測結果和運行耗時統計直方圖如下


可以看到pyramidbox,dsfd,s3fd,tinyface這4個模型是非常耗時的,這在實際應用場景種是不滿足實時性的要求的,因此我就整理了最近一年之內的輕量級人臉檢測演算法的程式,獨立撰寫一個包含多種輕量級人臉檢測演算法的程式,pytorch是我最喜歡的深度學習框架,在部署模型的前向推理時,我更喜歡用opencv的dnn模塊,因而,我收集到的輕量級人臉檢測演算法的程式如果是基于pytorch框架的,我就不會對代碼做較大的改動,如果程式是基于caffe,tensorflow或者darknet的,我會把程式改寫成用opencv的dnn模塊做人臉檢測,最后我整理了9種人臉檢測演算法,它們分別是:
(1) Ultra-Light-Fast-Generic-Face-Detector,程式里簡寫為ultraface
(2) LFFD:A Light and Fast Face Detector for Edge Devices,程式里簡寫為lffd
(3) CenterFace, 程式里簡寫為centerface
(4) DBFace, 程式里簡寫位dbface
(5) RetinaFace, 程式里簡寫為retinaface
(6) MTCNN, 程式里簡寫為mtcnn
(7) SSD, 程式里簡寫為ssdface
(8) facebox,程式里簡寫為facebox
(9) yoloface,程式里簡寫為yoloface
其中ssdface參考的是https://github.com/spmallick/learnopencv/blob/master/FaceDetectionComparison/face_detection_opencv_dnn.py里的
yoloface參考的是https://github.com/ouyanghuiyu/yolo-face-with-landmark,它包含人臉關鍵點檢測
此外,我撰寫的程式里還包含 PFLD: A Practical Facial Landmark Detector,它是一個簡單、快速、超高精度人臉特征點檢測演算法,到此一共有9種人臉檢測和1個人臉關鍵點檢測的程式,我用面向物件的思想把每一種人臉檢測演算法寫成一個類的形式,里面包含建構式__init__和成員函式detect,最后,撰寫一個主函式,來做這9種人臉檢測演算法在同一幅圖上的人臉檢測結果和運行耗時的比較,我撰寫的這套程式在github上的地址是 https://github.com/hpc203/9kinds-light-face-detector-align-recognition
我分別測驗了兩幅圖片,第一幅圖片的檢測結果和運行耗時統計直方圖如下


第2幅圖片的檢測結果和運行耗時統計直方圖如下



在我的程式里還有提取人臉特征向量和計算人臉特征向量距離的模塊,這兩個模塊再加上前面的人臉檢測和關鍵點檢測(做人臉對齊)的模塊,這樣就組成了人臉檢測+人臉對齊+人臉識別,這時候你就可以構造一個實時的人臉識別系統,具體實作方式可以參見github代碼里的README.md
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/131976.html
標籤:其他
