前言
在课上学习了人脸识别相关的入门知识,并运行了授课师姐提供的demo,记录如下:
人脸识别的一般步骤是
- 人脸检测
- 人脸对齐
- 提取人脸特征向量
- 人脸匹配
出于环境配置方便考虑,这里直接使用了Colab跑demo。运行结果和具体代码见Colab Notebook
人脸定位
利用OpenCV进行人脸定位
环境配置
- 安装python库:
opencv-python
- 将haarcascade_frontalface_default.xml文件放在python安装目录
/Lib/site-packages/cv2/data/
目录下
检测函数
使用时直接调用
def detect(filename):
# xml文件路径
face_cascade = cv2.CascadeClassifier('/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_frontalface_default.xml')
img = cv2.imread(filename)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
cv2_imshow(img)
cv2.waitKey(0)
cv2.destroyAllWindows()
利用face_recognition + Dlib进行人脸定位
环境配置
pip install dlib
pip install face_recognition
效果如图
特征点检测
环境配置
需要下载包:shape_predictor_68_face_landmarks.dat
经过效果如图
人脸对齐和人脸识别
“根据上一步检测到的特征点,进行平移旋转等操作,将人脸位于正面,便于机器识别”
将对齐后的人脸输入特征向量提取器得到人脸的特征向量;结果特征向量与数据库中已有的数据进行匹配得到识别结果