使用Python的人臉識別系統(tǒng)
介紹
人臉識別不同于人臉檢測。在人臉檢測中,我們只檢測了人臉的位置,在人臉識別任務中,我們識別了人的身份。
在本文中,我們將在人臉識別庫的幫助下,使用python構建一個人臉識別系統(tǒng)。
市場上有許多用于人臉識別的算法。這一計算機視覺挑戰(zhàn)是從視頻和圖片中檢測人臉。許多應用程序可以構建在識別系統(tǒng)之上。許多大公司出于安全和身份驗證的目的而采用識別系統(tǒng)。
識別系統(tǒng)用例
人臉識別系統(tǒng)在現(xiàn)代得到廣泛應用,許多新的創(chuàng)新系統(tǒng)都建立在識別系統(tǒng)之上。
有幾個用例:
尋找失蹤者識別社交媒體上的帳戶識別汽車中的駕駛員考勤系統(tǒng)
多種實現(xiàn)面部識別的算法取決于其性能和準確性。
傳統(tǒng)人臉識別算法
傳統(tǒng)的人臉識別算法不符合現(xiàn)代人臉識別標準。它們旨在使用舊的傳統(tǒng)算法識別面部。
OpenCV 提供了一些傳統(tǒng)的面部識別算法。
這些方法在提取圖像信息和匹配輸入和輸出圖像的方式上有所不同。
LBPH 算法是一種簡單但非常有效的方法,仍在使用中,但與現(xiàn)代算法相比速度較慢。
人臉識別深度學習
有多種基于深度學習的面部識別算法可供使用。
DeepFaceDeepID series of systemsFaceNetVGGFace
一般來說,基于地標的人臉識別器對人臉圖像進行拍攝,并試圖找到眉毛、嘴角、眼睛、鼻子、嘴唇等基本特征點。有60多個地標。
人臉識別涉及的步驟
1.人臉檢測:定位人臉,記下每個人臉定位的坐標,并在每個人臉周圍繪制一個邊界框。
2.面部對齊。標準化人臉以獲得快速訓練。
3.特征提取。從面部圖片中提取局部特征進行訓練,這一步由不同的算法執(zhí)行不同的操作。
4.人臉識別。將輸入人臉與我們數(shù)據(jù)集中的一個或多個已知人臉進行匹配。
本文重點介紹使用庫 face_recognition 實現(xiàn)人臉識別,該庫基于深度學習技術,并承諾使用單個訓練圖像的準確率超過 96%。
執(zhí)行
使用python實現(xiàn)人臉識別系統(tǒng)。使用 face_recognition 庫實現(xiàn)基于深度學習的人臉識別系統(tǒng)。
1. 設置人臉識別庫:
為了安裝人臉識別庫,我們需要先安裝dlib
· dlib:它是一個現(xiàn)代 C++ 工具包,包含與機器學習相關的算法和工具。
# installing dlib
pip install dlib
· 安裝實際的人臉識別庫face recognition。
# installing face recognition
pip install face recognition
· Opencv用于一些圖像預處理
# 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. 加載圖片:
我們完成了庫的安裝和導入。是時候將一些示例圖像加載到face_recognition庫中了。
該face_recognition庫僅支持 BGR 格式的圖像。在打印輸出圖像時,我們應該使用 OpenCV 將其轉換為 RGB。
Face_recognition僅加載 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.檢測和定位人臉:
face_recognition庫可以自行快速定位人臉,我們不需要使用haar_cascade或其他技術。
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. 樣本圖像識別:
該face_recognition庫基于深度學習,它支持單次學習,這意味著它需要一張圖片來訓練自己檢測一個人。
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。
face_recognition.face_encodings(imgelon)[0]→返回傳遞圖像的編碼。
face_recognition.compare_faces([train_encode],test_encode) 獲取經(jīng)過訓練的編碼列表和未知圖像的測試編碼。如果兩個測試編碼在訓練編碼中匹配,則返回True ;否則,它會返回False.
了解人臉識別的工作原理
1.我們將人的照片和他們的名字傳遞給模型。
2.該模型拍攝每張照片,將它們轉換為某種數(shù)字編碼,并將它們存儲在一個列表中,并將所有標簽(人名)存儲在另一個列表中。
3.在預測階段,當我們傳遞未知人的圖片時,識別模型會將該人的圖像轉換為編碼。
4.在將未知人的圖像轉換為編碼后,它會嘗試根據(jù)距離參數(shù)找到最相似的編碼。與未知人的編碼距離最小的編碼將是最接近的匹配。
5.在獲得最接近的匹配編碼后,我們從該列表中獲取該編碼的索引并使用索引。我們找到檢測到的人的名字。
識別系統(tǒng)的挑戰(zhàn)
這些都是識別系統(tǒng)面臨的重大挑戰(zhàn),需要解決。
· 姿勢:識別系統(tǒng)容易受到人體姿勢的影響。面部識別系統(tǒng)將無法預測該人的面部是否不可見。
· 照明:照明會極大地改變面部輪廓。用于人臉識別的照片應在適當?shù)恼彰鳁l件下拍攝。
· 面部表情:不同的面部表情會導致對同一個人的圖像的不同預測。
· 低分辨率:低分辨率圖片包含的信息較少,因此不適合人臉識別訓練。
結論
本文討論了如何使用 python 和單次圖像訓練技術實現(xiàn)人臉識別系統(tǒng)。你可以進一步使用像 python Tkinter 這樣的 GUI 來設計基于 GUI 的考勤系統(tǒng)。我們看到了影響識別系統(tǒng)的各種挑戰(zhàn)以及如何解決這些挑戰(zhàn)。
原文標題 : 使用Python的人臉識別系統(tǒng)
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
-
10月31日立即下載>> 【限時免費下載】TE暖通空調系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報名>>> 【在線會議】多物理場仿真助跑新能源汽車
-
11月28日立即報名>>> 2024工程師系列—工業(yè)電子技術在線會議
-
12月19日立即報名>> 【線下會議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
-
即日-12.26火熱報名中>> OFweek2024中國智造CIO在線峰會
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍皮書》
推薦專題
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結構工程師 廣東省/深圳市