最近做了人臉識別相關的項目,其中人臉處理庫dlib還是挺簡單容易的,今天就簡單展示下具體用法,很簡單哈~~~
我們先看下幾個主要的人臉相關的模型:
mmod_human_face_detector.dat:人臉檢測器模型
shape_predictor_68_face_landmarks.dat:68維人臉關鍵點檢測模型
dlib_face_recognition_resnet_model_1.data:人臉特徵提取模型
(1)人臉檢測
detector = dlib.cnn_face_detection_model_v1('mmod_human_face_detector.dat')
dets = detector(img_c, 1)
for t, d in enumerate(dets):
cv2.rectangle(img_c, (d.rect.left(), d.rect.top()), (d.rect.right(), d.rect.bottom()), (0, 0, 255), 2)
(2)人臉關鍵點檢測
predictor_68 = dlib.shape_predictor("./shape_predictor_68_face_landmarks.dat")
dets = detector(img_c, 1)
for t, d in enumerate(dets):
rec = dlib.rectangle(d.rect.left(),d.rect.top(),d.rect.right(),d.rect.bottom())
key_points = predictor_68(img_c, rec)
for pt in key_points.parts():
pt_pos = (pt.x, pt.y)
cv2.circle(img_c, pt_pos, 2, (0, 255, 0), 1)
(3)人臉特徵
facerec = dlib.face_recognition_model_v1("./dlib_face_recognition_resnet_model_v1.data")
for t, d in enumerate(dets):
rec = dlib.rectangle(d.rect.left(),d.rect.top(),d.rect.right(),d.rect.bottom())
key_points = predictor_68(img_c, rec)
face_descriptor = facerec.compute_face_descriptor(img_c, key_points)
face_feature = np.array(face_descriptor).reshape((1, 128)).tolist()[0]
上述就是人臉特徵提取的三個主要流程,後續要做匹配、識別就可以基於這個128維特徵進行建模了,挺簡單的吧~~~(●''●)
性能方面可以對圖像進行灰度化、縮放等操作來進行加速哈