OpenCV DNN
之前的opencv haar和dlib人脸检测。
现在深度学习不断发展,基于深度学习的人脸检测算法也在不断更新。OpenCV实现深度学习人脸检测是从OpenCV3.3版本后开始引入,算法出自论文《SSD: Single Shot MultiBox Detector》。Dlib也已经实现了。
Haar-Cascade,HOG-SVM,深度学习正是代表着人脸检测乃至目标检测的三个时代。他们的对比可以看这篇博客。
依据那个Learn OpenCV网站博主Vikas Gupta博士评测,OpenCV Dnn没啥缺点。下面是一些实现。确实比之前的准确率更高。采用的是TensorFlow实现的8位量化版本(2.7MB)。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : opencv_dnn.py
# @Author: Shang
# @Date : 2020/6/13
from __future__ import division
import cv2
def detectFaceOpenCVDnn(net, frame):
blob = cv2.dnn.blobFromImage(frame, 1.0, (300, 300), [104, 117, 123], False, False)
frameHeight = frame.shape[0