中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python實現人臉識別

發布時間:2021-06-23 09:03:37 來源:億速云 閱讀:289 作者:chen 欄目:開發技術

這篇文章主要介紹“如何用Python實現人臉識別”,在日常操作中,相信很多人在如何用Python實現人臉識別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何用Python實現人臉識別”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

工具與圖書館

  • Python-3.x

  • CV2-4.5.2

  • 矮胖-1.20.3

  • 人臉識別-1.3.0

若要安裝上述軟件包,請使用以下命令。

pip install numpy opencv-python

要安裝FaceRecognition,首先安裝dlib包。

pip install dlib

現在,使用以下命令安裝面部識別模塊

pip install face_recognition

下載人臉識別Python代碼

請下載python面部識別項目的源代碼: 人臉識別工程代碼

項目數據集

我們可以使用我們自己的數據集來完成這個人臉識別項目。對于這個項目,讓我們以受歡迎的美國網絡系列“老友記”為數據集。該數據集包含在面部識別項目代碼中,您在上一節中下載了該代碼。

建立人臉識別模型的步驟

在繼續之前,讓我們知道什么是人臉識別和檢測。

人臉識別是從照片和視頻幀中識別或驗證一個人的臉的過程。

人臉檢測是指在圖像中定位和提取人臉(位置和大小)以供人臉檢測算法使用的過程。

人臉識別方法用于定位圖像中唯一指定的特征。在大多數情況下,面部圖片已經被移除、裁剪、縮放和轉換為灰度。人臉識別包括三個步驟:人臉檢測、特征提取、人臉識別。

OpenCV是一個用C++編寫的開源庫.它包含了用于計算機視覺任務的各種算法和深度神經網絡的實現。

1.準備數據集

創建2個目錄,訓練和測試。從互聯網上為每個演員選擇一個圖片,并下載到我們的“火車”目錄中。確保您所選擇的圖像能夠很好地顯示人臉的特征,以便對分類器進行分類。

為了測試模型,讓我們拍攝一張包含所有強制轉換的圖片,并將其放到我們的“test”目錄中。

為了您的舒適,我們增加了培訓和測試數據與項目代碼。

2.模型的訓練

首先導入必要的模塊。

import face_recognition as fr
import cv2
 
import numpy as np
import os

人臉識別庫包含幫助人臉識別過程的各種實用程序的實現。

現在,創建2個列表來存儲圖像(人員)的名稱及其各自的臉編碼。

path = "./train/"
 
known_names = []
known_name_encodings = []
 
images = os.listdir(path)

人臉編碼是一種值的矢量,它代表著臉部特征之間的重要度量,如眼睛之間的距離、額頭的寬度等。

我們循環遍歷火車目錄中的每個圖像,提取圖像中的人的姓名,計算其臉編碼向量,并將信息存儲在相應的列表中。

for _ in images:
image = fr.load_image_file(path + _)
image_path = path + _
encoding = fr.face_encodings(image)[0]
 
known_name_encodings.append(encoding)
known_names.append(os.path.splitext(os.path.basename(image_path))[0].capitalize())

3.在測試數據集中測試模型

如前所述,我們的測試數據集只包含一個包含所有人員的圖像。

使用CV2 imread()方法讀取測試映像。

test_image = "./test/test.jpg"
 
image = cv2.imread(test_image)

人臉識別庫提供了一種名為Face_Locations()的有用方法,它定位圖像中檢測到的每個人臉的坐標(左、下、右、上)。使用這些位置值,我們可以很容易地找到臉編碼。

face_locations = fr.face_locations(image)
 
face_encodings = fr.face_encodings(image, face_locations)

我們循環遍歷每個面部位置及其在圖像中的編碼。然后,我們將這種編碼與“列車”數據集中的人臉編碼進行比較。

然后計算人臉距離,即計算測試圖像編碼和訓練圖像編碼之間的相似性。現在,我們從它選取最小值距離,表示測試圖像的這張臉是訓練數據集中的人之一。

現在,使用CV2模塊中的方法繪制一個帶有面部位置坐標的矩形。

for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
   matches = fr.compare_faces(known_name_encodings, face_encoding)
   name = ""
 
   face_distances = fr.face_distance(known_name_encodings, face_encoding)
   best_match = np.argmin(face_distances)
 
   if matches[best_match]:
       name = known_names[best_match]
 
   cv2.rectangle(image, (left, top), (right, bottom), (0, 0, 255), 2)
   cv2.rectangle(image, (left, bottom - 15), (right, bottom), (0, 0, 255), cv2.FILLED)
 
   font = cv2.FONT_HERSHEY_DUPLEX
   cv2.putText(image, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)

使用CV2模塊的imShow()方法顯示圖像。

cv2.imshow("Result", image)

使用imwrite()方法將圖像保存到當前工作目錄中。

cv2.imwrite("./output.jpg", image)

釋放未被釋放的資源(如果有的話)。

cv2.waitKey(0)
cv2.destroyAllWindows()

Python人臉識別輸出

讓我們看看模型的輸出。

如何用Python實現人臉識別

到此,關于“如何用Python實現人臉識別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

共和县| 双峰县| 卓资县| 扬中市| 临安市| 洛川县| 襄汾县| 阿坝县| 任丘市| 西乌珠穆沁旗| 阳东县| 静海县| 葫芦岛市| 余干县| 孟津县| 长岛县| 南召县| 苍山县| 博爱县| 武义县| 闽侯县| 泊头市| 呈贡县| 北海市| 江山市| 哈密市| 衡南县| 东辽县| 马尔康县| 襄樊市| 藁城市| 修文县| 陈巴尔虎旗| 乌什县| 虞城县| 铜川市| 望江县| 枝江市| 甘孜县| 怀来县| 甘南县|