Dlib人臉特征點檢測


前言

Dlib庫的使用。


一、Dlib是什么?

Dlib由C++編寫,提供了和機器學習、數值計算、圖模型算法、圖像處理等領域相關的一系列功能。詳細功能可以登錄Dlib官網查看,我具體只使用了Dlib中對於圖像處理部分。同時,與許多開源項目不同,該項目為每個類和功能提供完整而精確的文檔,可以大大的降低我們使用的難度。

Dlib對於圖像處理的應用
可以在Dlib官網對標注的地方進行解讀,本文不詳細描述。
關於預測訓練的模型下載:
http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

百度網盤鏈接:shape_predictor_68_face_landmarks.rar

提取碼:gnab

二、使用步驟

1.Dlib使用

pip install dlib==19.6.1

2.使用Dlib,可以查看Dlib中關於圖像處理的實例CNN Face DetectorFace DetectorFace Landmark DetectionFace RecognitionTrain Shape Predictor

import dlib
import cv2
import os
import numpy as np
from PIL import Image
import imutils
from imutils import face_utils
'''shape_predictor_68_face_landmarks.dat在文章開頭分享的百度雲鏈接下載'''
face_landmark_path = 'D:\\WorkPlace\\Python\\test1\\Head_Pose\\shape_predictor_68_face_landmarks.dat'

detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(face_landmark_path)

def face_recognition(img):
    face_rects = detector(img, 0)
    print(len(face_rects))
    result = []
    for index,face in enumerate(face_rects):
        shape = predictor(img, face_rects[index])
        shape = face_utils.shape_to_np(shape)
        for (x, y) in shape:
            cv2.circle(img, (x, y), 1, (0, 0, 255), -1)

def main():
    image = cv2.imread("D:\\test\\my\\3.jpg")
    try:
         image.shape
    except:
        print("can not read image")
        return 
    image = imutils.resize(image, width=640,height=480) 
    shape = face_recognition(image)
    cv2.imshow("image",image)
    cv2.waitKey(0)
    
if __name__ == '__main__':
    main()

三、效果圖

圖為使用Dlib進行人臉特征點檢測結果圖:
人臉特征點檢測效果圖

圖為使用Dlib進行人臉特征點位置和下標:

Dlib檢測的68個點的位置和對應的下標


總結

我對於CASIA-FaceV5 人臉數據集抽取了500張人臉圖像進行測試,提取成功率約為99%。Dlib的使用既方便有有高識別率,可以為后續對於頭部姿態估計提供准確的人臉特征點坐標值,從而使結果更加精確。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM