最近在做人脸识别的项目,其中人脸检测模块原来使用dlib但效果和性能一直不佳,就对比了几个主流的人脸检测算法,下面会从检测率和检测速度两方面来对比不同算法的效果。
基本环境:Linux, python3, cpu
人脸数据:红外照片,704*576,共221张照片;这里要注意的是当前数据集的检测效果与公开数据集的效果差异较大,注意原因是当前数据集都是红外照,且很多都是打哈欠、打电话、瞌睡、抽烟等警报照片,所以准确率会偏低,这里主要是对比不同算法和模型的优劣。
五种人脸检测算法:
(1)dlib自带的人脸检测(本文简称dlib_frontal),dlib.get_frontal_face_detector()
(2)dlib使用cnn人脸检测模型(本文简称dlib_cnn),dlib.cnn_face_detection_model_v1("mmod_human_face_detector.dat")
(3)yolov3,load_net("yolov3-tiny.cfg", "yolov3-tiny_140000.weights", 0)
(4)Ultra-Light-Fast-Generic-Face-Detector-1MB(本文简称ultra),ort.InferenceSession("version-RFB-320.onnx")
(5)mtcnn,MTCNN()
对比结果如下:
从检测率来看,yolov3和ultra效果都挺好,都在85%以上,速度方面ultra性能最优,综合来看ultra是最好的,上述各种算法还有其它不同模型,目前暂时没有测到,就先对比这几个,大家有个了解就好。
领取专属 10元无门槛券
私享最新 技术干货