Face Recognition環境設置

來源: http://krasserm.github.io/2018/02/07/deep-face-recognition/

臉部辨識識別臉部圖像或圖片上的人。 簡而言之,人臉識別系統從輸入人臉圖像中提取特徵,並將其與數據庫中標記人臉的特徵進行比較。 比較基於特徵相似性度,並且最相似的數據庫條目的標籤用於標記輸入圖像。 如果相似度值低於某個閾值,則輸入圖像被標記為未知。 比較兩個面部圖像以確定它們是否顯示同一個人被稱為面部驗證。

本文使用深度卷積神經網絡(CNN)從輸入圖像中提取特徵。 它遵循[1]中描述的方法,並受到OpenFace項目啟發的修改。 Keras用於實現CNN,Dlib和OpenCV以對準輸入圖像上的面。 在LFW數據集的一小部分上評估面部識別性能,您可以將其替換為您自己的自定義數據集,例如 如果您想進一步試驗筆記本,請附上您的家人和朋友的照片。 在概述了CNN架構以及如何訓練模型之後,將演示如何:

1.在輸入圖像上檢測,變換和裁剪面部。 這可確保面部在進入CNN之前對齊。 該預處理步驟對於神經網絡的性能非常重要。(資料前處理)

2.使用CNN從對齊的輸入圖像中提取面部的128維表示或嵌入。 在嵌入空間中,歐幾里德距離直接對應於面部相似性的度量。

3.將輸入嵌入向量與數據庫中標記的嵌入向量進行比較。 這裡,支持向量機(SVM)和KNN分類器,在標記的嵌入向量上訓練,起到數據庫的作用。 在此上下文中的面部識別意味著使用這些分類器來預測標籤,即新輸入的身份。

需要Dlib的面部地標數據文件的本地副本來運行面部對齊:
import bz2
import os

from urllib.request import urlopen

def download_landmarks(dst_file):
    url = 'http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2'
    decompressor = bz2.BZ2Decompressor()
    
    with urlopen(url) as src, open(dst_file, 'wb') as dst:
        data = src.read(1024)
        while len(data) > 0:
            dst.write(decompressor.decompress(data))
            data = src.read(1024)

dst_dir = 'models'
dst_file = os.path.join(dst_dir, 'landmarks.dat')

if not os.path.exists(dst_file):
    os.makedirs(dst_dir)
    download_landmarks(dst_file)

code 說明


補充 bzip2
https://blog.gtwang.org/programming/python-data-compression-archiving-gzip-bz2-zip-tar/


補充  with urlopen python

補充  os.path.join 












留言