日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
基于face_recognition實(shí)現(xiàn)人臉識(shí)別

上一篇中我們實(shí)現(xiàn)了檢測(cè)照片中的人臉并標(biāo)出人臉特征點(diǎn)(鼻子,眼睛,眉毛等),這一篇我們將在上一篇的基礎(chǔ)上,進(jìn)一步實(shí)現(xiàn)人臉識(shí)別,告訴你照片里的人是誰(shuí)。

為羅田等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及羅田網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、羅田網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

準(zhǔn)備工作

我們的人臉識(shí)別基于face_recognition庫(kù)。face_recognition基于dlib實(shí)現(xiàn),用深度學(xué)習(xí)訓(xùn)練數(shù)據(jù),模型準(zhǔn)確率高達(dá)99.38%。在開(kāi)始我們的工作前,我們先安裝face_recognition

 
 
 
  1. pip install face_recognition 

人臉數(shù)字化

人臉識(shí)別的***步是檢測(cè)照片中的人臉區(qū)域,然后將人臉的圖像數(shù)據(jù)轉(zhuǎn)換成一個(gè)長(zhǎng)度為128的向量,這128個(gè)數(shù)據(jù)代表了人臉的128個(gè)特征指標(biāo),如下所示

對(duì)于每一張已知人臉,生成這樣的一個(gè)128位的向量。對(duì)于一張未知人臉,將它的128位向量和所有已知人臉的128位向量一一比對(duì),找到相似度***的那一個(gè),即找出了未知人臉對(duì)應(yīng)的人。

圖片數(shù)據(jù)

我們準(zhǔn)備了兩張照片,分別是凱特王妃和威廉王子的單人照,分別存成catherine.jpg和william.jpg,這兩張照片中的人臉作為我們的已知人臉

我們的目標(biāo)是在下面的合影中識(shí)別出兩人的臉并在圖中標(biāo)出各自的名字。下圖存成unknown.jpg

代碼實(shí)現(xiàn)

接下來(lái)開(kāi)始我們的編程工作

 
 
 
  1. import cv2 
  2.  
  3. import face_recognitionnames = [     
  4.  
  5.     "catherine", 
  6.  
  7.     "william", 
  8.  

首先我們定義了標(biāo)簽集,存在names數(shù)組中。

標(biāo)簽名字也是我們圖片的文件名。

 
 
 
  1. images = [] 
  2.  
  3. for name in names: 
  4.  
  5.     filename = name + ".jpg" 
  6.  
  7.     image = face_recognition.load_image_file(filename)  
  8.  
  9.     images.append(image) 
  10.  
  11. unknown_image = face_recognition.load_image_file("unknown.jpg") 

調(diào)用face_recognition.load_image_file從圖片中讀取數(shù)據(jù)。

這里讀取了包含已知人臉和未知人臉的圖片的數(shù)據(jù),未知人臉的圖片就是上面的合影圖片unknown.jpg。

 
 
 
  1. face_encodings = [] 
  2.  
  3. for image in images: 
  4.  
  5.     encoding = face_recognition.face_encodings(image)[0]  
  6.  
  7.     face_encodings.append(encoding) 
  8.  
  9. unknown_face_encodings = face_recognition.face_encodings(unknown_image) 

face_recognition.face_encodings會(huì)返回圖片中的所有的人臉的128位向量。單人照片只有一張人臉,所以face_recognition.face_encodings(image)[0]只取***個(gè)元素。合影圖片中包含了2張人臉,所以u(píng)nknown_face_encodings包含2個(gè)128位向量。

 
 
 
  1. face_locations = face_recognition.face_locations(unknown_image) 
  2.  
  3. for i in range(len(unknown_face_encodings)):     
  4.  
  5.     unknown_encoding = unknown_face_encodings[i]      
  6.  
  7.     face_location = face_locations[i]      
  8.  
  9.     top, right, bottom, left = face_location      
  10.  
  11.     cv2.rectangle(unknown_image, (left, top), (right, bottom), (0, 255, 0), 2)      
  12.  
  13.     results = face_recognition.compare_faces(face_encodings, unknown_encoding)      
  14.  
  15.     for j in range(len(results)):          
  16.  
  17.         if results[j]:              
  18.  
  19.             name = names[j]              
  20.  
  21.             cv2.putText(unknown_image, name, (left-10, top-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) 
  22.  
  23.  
  24.  
  25. unknown_image_rgb = cv2.cvtColor(unknown_image, cv2.COLOR_BGR2RGB) 
  26.  
  27. cv2.imshow("Output", unknown_image_rgb) 
  28.  
  29. cv2.waitKey(0) 

face_locations存了每張臉的位置信息。

在循環(huán)中我們調(diào)用cv2.rectangle框出了檢測(cè)到的每張臉。

face_recognition.compare_faces將已知人臉的128位向量和每張未知人臉的128位向量做比較,結(jié)果存入results數(shù)組中。results數(shù)組中的每一個(gè)元素都是True或者False,長(zhǎng)度和人臉個(gè)數(shù)相等。results中的每個(gè)元素都和已知人臉一一對(duì)應(yīng),在某一個(gè)位置處的元素為True,表示未知人臉被識(shí)別成這張已知人臉。

對(duì)識(shí)別出來(lái)的每張人臉,我們調(diào)用cv2.putText在圖上標(biāo)注標(biāo)簽。

以上是代碼的全部。

測(cè)試

令人興奮的時(shí)刻又來(lái)到了! 我們來(lái)檢驗(yàn)一下我們的成果。

運(yùn)行上面的程序,可以看到下面的結(jié)果

威廉王子和凱特王妃的人臉都被準(zhǔn)確地識(shí)別出來(lái)。綠色的框框出了人臉區(qū)域,框的上方標(biāo)注了識(shí)別到的人的名字。

至此,我們成功地實(shí)現(xiàn)了人臉識(shí)別。

后續(xù)不定期的更新一些圖像處理方面其他有趣的應(yīng)用,例如摳圖、實(shí)現(xiàn)手繪效果、二維碼識(shí)別、驗(yàn)證碼識(shí)別,等等。


分享標(biāo)題:基于face_recognition實(shí)現(xiàn)人臉識(shí)別
分享URL:http://m.5511xx.com/article/coieehs.html