Face Recognition 人臉辨識Python 教學 - Medium
文章推薦指數: 80 %
人臉辨識在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
接著就用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
延伸文章資訊
- 1[Day13] 使用OpenCV & Dlib作人臉偵測需要知道的一些事
[Computer Vision] 電腦視覺下的人臉系列第13 篇 ... 如果今天要做的只是人臉偵測或是人臉辨識,那你可以很安心的使用你喜歡的方法。
- 2Python 使用OpenCV、Dlib 實作即時人臉偵測程式教學
這裡示範如何在Python 中使用OpenCV 與Dlib 開發人臉偵測程式,即時擷取網路攝影機串流影像,輸出人臉偵測結果。 人臉偵測是一項相當成熟的技術,不管 ...
- 3用Python實現簡單的臉部辨識,10分鐘搞定!(附原始碼)
Python裡,簡單的臉部辨識有很多種方法可以實現,依賴於python膠水語言的特性,我們通過呼叫包可以快速準確的達成這一目的。這裡介紹的是準確性比較高的 ...
- 4Face Recognition 人臉辨識Python 教學 - Medium
人臉辨識在Computer Vision 中一直是很火熱的話題,也是目前廣為人知的一項技術。本質上分為Face Verification、Face Recognition:前者為驗證兩張人 ...
- 5Python影像辨識筆記(一):使用Open CV辨識圖片及影片中的人臉
圖片人. “Python影像辨識筆記(一):使用Open CV辨識圖片及影片中的人臉” is published by Yanwei Liu.