Face Recognition 人臉辨識Python 教學 - Medium

文章推薦指數: 80 %
投票人數:10人

人臉辨識在Computer Vision 中一直是很火熱的話題,也是目前廣為人知的一項技術。

本質上分為Face Verification、Face Recognition:前者為驗證兩張人 ... 謦伊的閱讀筆記AI📘Programming📙FaceRecognition人臉辨識Python教學李謦伊FollowJul10·5minread人臉辨識在ComputerVision中一直是很火熱的話題,也是目前廣為人知的一項技術。

本質上分為FaceVerification、FaceRecognition:前者為驗證兩張人臉是否為同一個人,屬於一對一的過程;後者則是從數據庫裡辨識出相同的人臉,屬於一對多的過程。

詳細的人臉辨識解說可以參考:使用深度學習進行人臉辨識:Tripletloss,Largemarginloss(ArcFace)。

本文將要使用Python來進行人臉辨識的實作,過程分為幾個階段:FaceDetectionFaceAlignFeatureextractionCreateDatabaseFaceRecognition首先安裝相關library$pipinstallscikit-learn$pipinstallonnxruntimeFaceDetection這部分要進行人臉偵測,可以使用PythonAPIMTCNN、RetinaFace,這邊示範使用RetinaFace來進行偵測。

安裝RetinaFace$pipinstallretinaface偵測接著就可以來偵測人臉啦~輸出會有預測框左上角跟右下角、兩個眼睛、鼻子、嘴巴兩邊的座標值#output[{‘x1’:243,‘y1’:142,‘x2’:557,‘y2’:586,‘left_eye’:(303,305),‘right_eye’:(431,346),‘nose’:(305,403),‘left_lip’:(272,468),‘right_lip’:(364,505)}]❗若在使用RetinaFace的時候,出現以下錯誤有可能是因為無法導入shapely.geometry模塊的關係,因此要先去下載Shapelypackage,下載網址→🔗下載完後再執行以下指令$pipinstall測試是否安裝成功$python>>>fromshapely.geometryimportPolygonFaceAlign這部分要來將人臉特徵點進行對齊,需要先定義對齊的座標,在onnxarcface_inference.ipynb裡的Preprocessimages中可以看到。

接著就用skimage套件transform.SimilarityTransform()得到要變換的矩陣,然後進行對齊。

對齊特徵點後的人臉會呈現以下樣子Featureextraction這部分要提取剛剛對齊後的人臉特徵,這邊示範使用onnxArcFacemodel。

InsightFace-REST模型arcface_r100_v1下載→🔗onnx官方模型下載→🔗如果是下載onnx官方模型需要先進行更新,因為該模型的BatchNorm節點中spatial為0,參考:https://github.com/onnx/models/issues/156。

不過轉換過後的模型準確度較差,因此資料集需要放兩張比較能夠偵測出來。

接著使用模型進行提取~將對齊後的人臉做轉置,再轉換dtype為float32,最後進行inferenceCreateDatabase這部分要將辨識的人臉資料寫進資料庫裡,這邊資料庫是使用sqlite。

首先,準備要辨識的人臉資料接著把上面的FaceDetection、FaceAlign、Featureextraction寫成函數,調用比較方便。

然後將資料夾的圖片分別進行偵測、對齊、提取特徵後,再寫入資料庫裡。

確認是否寫入資料庫裡FaceRecognition這部分是要將資料庫裡的人臉特徵跟輸入照片進行比對,這邊使用L2-Norm來計算之間的距離。

最後再設定threshold,若L2-Norm距離大於threshold表示輸入照片不為資料庫裡的任何一個人;反之,L2-Norm距離最小的人臉與輸入照片為同一個人。

接下來就來測試看看吧!由以下測試結果可以看出,在資料庫的人臉都有正確的識別到,而不在的則會顯示UnknownPerson。

詳細的code可參考我的Githubchingi071/Face_recognitionContributetochingi071/Face_recognitiondevelopmentbycreatinganaccountonGitHub.github.com謦伊的閱讀筆記Ching-I143FaceRecognitionArcfaceDeepLearningArtificialIntelligence143 claps143謦伊的閱讀筆記DeepLearning,MachineLearningWrittenby李謦伊FollowAIEngineer,EnjoyDeepLearning,MachineLearning~Contactme:[email protected]謦伊的閱讀筆記DeepLearning,MachineLearning



請為這篇文章評分?