2021年1月14日 星期四

【簡單玩python】~~使用「dlib」讓python簡單、快速完成人臉辨識

 人臉辨識一直是號稱AI應用的熱門(入門)議題~~尤其是幾年前微軟的用照片辨識年紀的推波助瀾下,大家更是樂此不疲~~呵!

既然如此~~那就也玩玩看如何用python來達成人臉辨識及標記的目標吧!

其實這塊之前就結合OpenCV跟dlib這組套件,並串接雲端微軟的年齡、情緒辨識技術,一起玩過整套的~~不過之前沒有記錄下來,時間久了~~也容易忘掉,所以,這次就納入自己整理、分享的議題之一!只是一開始,還是一樣~~先拆解從簡單的應用入手介紹,後續再依序加入其他整合性的應用!

要達成人臉辨識的目標,我們可以借助「dlib」這支相當成熟、易用的套件,結合OpenCV來著手設計!

首先在Windows系統上,要安裝「dlib」套件時,為避免缺乏CMAKE導致安裝失敗的窘境,建議安裝時直接指定「dlib」套件版本

安裝「dlib」:pip install dlib==19.8.1(個人在win10上可正常安裝無誤)

當然別忘了安裝OpenCV這支影像視覺處理的強大套件:

pip install opencv-python

安裝完成後,就可以開始進行程式設計的部分了~~~

好囉~~又到了直接上程式碼的步驟了:

import dlib
import cv2

# 讀取照片檔
img = cv2.imread('imgs/faceo8.jpg')

# 呼叫 dlib 人臉偵測器
fd = dlib.get_frontal_face_detector()

# 偵測圖檔上的人臉資訊
fs = fd(img, 0)
print(f"偵測到{len(fs)}組人臉資訊")

# 將偵測結果以序列方式取出
for i, f in enumerate(fs):
    x1 = f.left()
    y1 = f.top()
    x2 = f.right()
    y2 = f.bottom()

    # 以上列四點數據,繪製人臉區域綠色矩形框
    cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)

# 顯示結果
cv2.imshow("Face", img)

cv2.waitKey(0)
cv2.destroyAllWindows()

相關程式碼的說明,都標註在其中了!

所以也就不必再贅敘了~~~

執行程式結果如下:

其中最重要的當然就是:第8行~呼叫dlib的人臉偵測函式的部分囉!

fd = dlib.get_frontal_face_detector()

好囉~~這次人臉偵測標示的紀錄就到這告一段落了!

dlib還有個相當強悍的人臉68個特徵偵測標示的訓練模型可供應用,後續再紀錄、分享上來囉!

沒有留言:

張貼留言