介紹
人臉識別不同于人臉檢測。在人臉檢測中,我們只檢測了人臉的位置,在人臉識別任務中,我們識別了人的身份。
在本文中,我們將在人臉識別庫的幫助下,使用構建一個人臉識別系統。
市場上有許多用于人臉識別的算法。這一計算機視覺挑戰是從視頻和圖片中檢測人臉。許多應用程序可以構建在識別系統之上。許多大公司出于安全和身份驗證的目的而采用識別系統。
識別系統用例
人臉識別系統在現代得到廣泛應用,許多新的創新系統都建立在識別系統之上。
有幾個用例:
多種實現面部識別的算法取決于其性能和準確性。
傳統人臉識別算法
傳統的人臉識別算法不符合現代人臉識別標準。它們旨在使用舊的傳統算法識別面部。
提供了一些傳統的面部識別算法。
這些方法在提取圖像信息和匹配輸入和輸出圖像的方式上有所不同。
LBPH 算法是一種簡單但非常有效的方法,仍在使用中,但與現代算法相比速度較慢。
人臉識別深度學習
有多種基于深度學習的面部識別算法可供使用。
一般來說,基于地標的人臉識別器對人臉圖像進行拍攝報錯己阻擊應用程序對圖像,并試圖找到眉毛、嘴角、眼睛、鼻子、嘴唇等基本特征點。有60多個地標。
人臉識別涉及的步驟
人臉檢測:定位人臉,記下每個人臉定位的坐標,并在每個人臉周圍繪制一個邊界框。
面部對齊。標準化人臉以獲得快速訓練。
特征提取。從面部圖片中提取局部特征進行訓練,這一步由不同的算法執行不同的操作。
人臉識別。將輸入人臉與我們數據集中的一個或多個已知人臉進行匹配。
本文重點介紹使用庫 實現人臉識別,該庫基于深度學習技術,并承諾使用單個訓練圖像的準確率超過 96%。
執行
使用實現人臉識別系統。使用 庫實現基于深度學習的人臉識別系統。
1. 設置人臉識別庫:
為了安裝人臉識別庫,我們需要先安裝dlib
#?installing?dlib?
pip?install?dlib
#?installing?face?recognition
pip?install?face?recognition
#?installing?opencv?
pip?install?opencv
Note:?Sometimes?installing?dlib?throws?error?in?that?case?install?install?the?C++?development?toolkit?using?vs_code?community?.
導入庫
import?cv2
import?numpy?as?np
import?face_recognition
2. 加載圖片:
我們完成了庫的安裝和導入。是時候將一些示例圖像加載到庫中了。
該庫僅支持 BGR 格式的圖像。在打印輸出圖像時,我們應該使用 將其轉換為 RGB。
僅加載 BGR 格式的圖像。
import?cv2
import?numpy?as?np
import?face_recognition
img_bgr?=?face_recognition.load_image_file('student_images/modi.jpg')

img_rgb?=?cv2.cvtColor(img_bgr,cv2.COLOR_BGR2RGB)
cv2.imshow('bgr',?img_bgr)
cv2.imshow('rgb',?img_rgb)
cv2.waitKey
輸出→ BGR 與 RGB
3.檢測和定位人臉:
庫可以自行快速定位人臉,我們不需要使用或其他技術。
img_modi=face_recognition.load_image_file('student_images/modi.jpg')
img_modi_rgb?=?cv2.cvtColor(img_modi,cv2.COLOR_BGR2RGB)
#---------?Detecting?Face?-------
face?=?face_recognition.face_locations(img_modi_rgb)[0]
copy?=?img_modi_rgb.copy()
#?------?Drawing?bounding?boxes?around?Faces------------------------
cv2.rectangle(copy,?(face[3],?face[0]),(face[1],?face[2]),?(255,0,255),?2)
cv2.imshow('copy',?copy)

cv2.imshow('MODI',img_modi_rgb)
cv2.waitKey(0)
4. 樣本圖像識別:
該庫基于深度學習,它支持單次學習,這意味著它需要一張圖片來訓練自己檢測一個人。
img_modi?=?face_recognition.load_image_file('student_images/modi.jpg')
img_modi?=?cv2.cvtColor(img_modi,cv2.COLOR_BGR2RGB)
#------to?find?the?face?location
face?=?face_recognition.face_locations(img_modi)[0]
#--Converting?image?into?encodings
train_encode?=?face_recognition.face_encodings(img_modi)[0]
#-----?lets?test?an?image
test?=?face_recognition.load_image_file('student_images/modi2.jpg')
test?=?cv2.cvtColor(test,?cv2.COLOR_BGR2RGB)
test_encode?=?face_recognition.face_encodings(test)[0]
print(face_recognition.compare_faces([train_encode],test_encode))

cv2.rectangle(img_modi,?(face[3],?face[0]),(face[1],?face[2]),?(255,0,255),?1)
cv2.imshow('img_modi',?img_modi)
cv2.waitKey(0)
上面的代碼拍了兩張總理的照片,因為兩張照片都是同一個人,所以它返回了true。
了解人臉識別的工作原理
我們將人的照片和他們的名字傳遞給模型。
該模型拍攝每張照片,將它們轉換為某種數字編碼報錯己阻擊應用程序對圖像,并將它們存儲在一個列表中,并將所有標簽(人名)存儲在另一個列表中。
在預測階段,當我們傳遞未知人的圖片時,識別模型會將該人的圖像轉換為編碼。
在將未知人的圖像轉換為編碼后,它會嘗試根據距離參數找到最相似的編碼。與未知人的編碼距離最小的編碼將是最接近的匹配。
在獲得最接近的匹配編碼后,我們從該列表中獲取該編碼的索引并使用索引。我們找到檢測到的人的名字。
識別系統的挑戰
這些都是識別系統面臨的重大挑戰,需要解決。
結論
本文討論了如何使用 和單次圖像訓練技術實現人臉識別系統。你可以進一步使用像 這樣的 GUI 來設計基于 GUI 的考勤系統。我們看到了影響識別系統的各種挑戰以及如何解決這些挑戰。
☆ END ☆
如果看到這里,說明你喜歡這篇文章,請轉發、點贊。微信搜索「」,歡迎添加小編微信「 」,每日朋友圈更新一篇高質量博文。
↓掃描二維碼添加小編↓