基于OpenCV的實(shí)時(shí)面部識別
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
人臉識別
“面部識別”名稱本身就是一個(gè)非常全面的定義,面部識別是通過數(shù)字媒體作為輸入來識別或檢測人臉的技術(shù)執(zhí)行過程。
人臉識別的準(zhǔn)確性可以提供高質(zhì)量的輸出,而不是忽略影響其的問題因素。在這里,要確保運(yùn)行我們的模型,必須確保在本地系統(tǒng)中安裝了庫。
pip install face_recognition
如果在 face_recognition庫的安裝過程中遇到一些問題或錯(cuò)誤,可以點(diǎn)擊以下鏈接:https://www.youtube.com/watch?v=xaDJ5xnc8dc
人臉識別本身無法提供清晰的輸出,因此出現(xiàn)了OpenCV實(shí)現(xiàn)的概念。

預(yù)先錄制的視頻中的人臉識別輸出示例。
OpenCV
OpenCV是python中一個(gè)著名的庫,用于實(shí)時(shí)應(yīng)用程序。OpenCV在計(jì)算機(jī)世界中就像樹的根一樣非常重要。
face_recognition中的OpenCV對我們訓(xùn)練為輸入的面部圖像進(jìn)行聚類和特征提取。它以圖像中的地標(biāo)為目標(biāo),以迭代方式在計(jì)算機(jī)視覺的深度學(xué)習(xí)方法中訓(xùn)練它們。
在本地系統(tǒng)中安裝OpenCV
pip install opencv-python
使用深度學(xué)習(xí)算法,OpenCV檢測可作為聚類,相似性檢測和圖像分類的表示。
為什么我們使用OpenCV作為實(shí)時(shí)Face_Recognition中的關(guān)鍵工具?
人類可以輕松檢測到面部,但是我們?nèi)绾斡?xùn)練機(jī)器識別面部?OpenCV在這里填補(bǔ)了人與計(jì)算機(jī)之間的空白,并充當(dāng)了計(jì)算機(jī)的愿景。
以一個(gè)實(shí)時(shí)的例子為例,當(dāng)一個(gè)人遇到新朋友時(shí),他會記住這些人的臉,以備將來識別。一個(gè)人的大腦反復(fù)訓(xùn)練后端的人臉。因此,當(dāng)他看到那個(gè)人的臉時(shí),他說:“嗨,約翰!你好嗎?”。
對面部的識別和可以為計(jì)算機(jī)提供與人類相同的思維方式。
OpenCV是計(jì)算機(jī)視覺中的重要工具。如果我們使用OpenCV,則遵循以下步驟:
? 通過輸入提取數(shù)據(jù)。
? 識別圖像中的面部。
? 提取獨(dú)特的特征,以建立預(yù)測思想。
? 該特定人的性格特征,如鼻子,嘴巴,耳朵,眼睛和面部主要特征。
? 實(shí)時(shí)人臉識別中人臉的比較。
? 識別出的人臉的最終輸出。
使用OpenCV python的Face_Recognition:
代碼下載:https://github.com/eazyciphers/deep-machine-learning-tutors/tree/master/Real-Time Face RecognitionGitHub
導(dǎo)入所有軟件包:
import face_recognitionimport cv2import numpy as np
加載并訓(xùn)練圖像:
# Load a sample picture and learn how to recognize it.Jithendra_image = face_recognition.load_image_file("jithendra.jpg")Jithendra_face_encoding = face_recognition.face_encodings(Jithendra_image)[0]# Load a sample picture and learn how to recognize it.Modi_image = face_recognition.load_image_file("Modi.jpg")Modi_face_encoding = face_recognition.face_encodings(Modi_image)[0]
人臉編碼:
# Create arrays of known face encodings and their namesknown_face_encodings = [Jithendra_face_encoding,Modi_face_encoding,]known_face_names = ["Jithendra","Modi"]
主要方法:
當(dāng)實(shí)時(shí)人臉識別為true時(shí),它將檢測到人臉并按照代碼中的以下步驟操作:
? 抓取實(shí)時(shí)視頻中的一幀。
? 將圖像從BGR顏色(OpenCV使用的顏色)轉(zhuǎn)換為RGB顏色(face_recognition使用的顏色)
? 在實(shí)時(shí)視頻的幀中找到所有面部和面部編碼。
? 循環(huán)瀏覽此視頻幀中的每個(gè)面孔,并檢查該面孔是否與現(xiàn)有面孔匹配。
? 如果一個(gè)人臉無法識別現(xiàn)有人臉,則將輸出視為未知或未知。
? 識別后,否則在識別出的臉部周圍畫一個(gè)方框。
? 用其名稱標(biāo)記識別的面部。
? 識別后顯示結(jié)果圖像。
退出:
# Hit 'q' on the keyboard to quit!
if cv2.waitKey(1) & 0xFF == ord('q'):
break
釋放攝像頭的手柄:
# Release handle to the webcam
video_capture.release()
cv2.destroyAllWindows()
輸入和輸出
在訓(xùn)練過程中提供給模型的樣本輸入…。
輸入

用于訓(xùn)練代碼的樣本圖像

樣本輸入圖像進(jìn)行訓(xùn)練
輸出:

記錄輸出
代碼參考:https?:?//github.com/eazyciphers/deep-machine-learning-tutors
參考文獻(xiàn):
https://www.pyimagesearch.com/2018/09/24/opencv-face-recognition/
https://www.superdatascience.com/blogs/opencv-face-recognition
https://zh.wikipedia.org/wiki/Facial_recognition_system
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~
