最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

教你如何用Python實(shí)現(xiàn)人臉識別(含源代碼)

 更新時(shí)間:2021年06月22日 17:14:25   作者:python588  
Python可以從圖像或視頻中檢測和識別你的臉.人臉檢測與識別是計(jì)算機(jī)視覺領(lǐng)域的研究熱點(diǎn)之一.人臉識別的應(yīng)用包括人臉解鎖、安全防護(hù)等,醫(yī)生和醫(yī)務(wù)人員利用人臉識別來獲取病歷和病史,更好地診斷疾病,需要的朋友可以參考下

工具與圖書館

  • Python-3.x
  • CV2-4.5.2
  • 矮胖-1.20.3
  • 人臉識別-1.3.0

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

pip install numpy opencv-python

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

pip install dlib

現(xiàn)在,使用以下命令安裝面部識別模塊

pip install face_recognition

下載人臉識別Python代碼

請下載python面部識別項(xiàng)目的源代碼: 人臉識別工程代碼

項(xiàng)目數(shù)據(jù)集

我們可以使用我們自己的數(shù)據(jù)集來完成這個(gè)人臉識別項(xiàng)目。對于這個(gè)項(xiàng)目,讓我們以受歡迎的美國網(wǎng)絡(luò)系列“老友記”為數(shù)據(jù)集。該數(shù)據(jù)集包含在面部識別項(xiàng)目代碼中,您在上一節(jié)中下載了該代碼。

建立人臉識別模型的步驟

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

人臉識別是從照片和視頻幀中識別或驗(yàn)證一個(gè)人的臉的過程。

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

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

OpenCV是一個(gè)用C++編寫的開源庫.它包含了用于計(jì)算機(jī)視覺任務(wù)的各種算法和深度神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)。

1.準(zhǔn)備數(shù)據(jù)集

創(chuàng)建2個(gè)目錄,訓(xùn)練和測試。從互聯(lián)網(wǎng)上為每個(gè)演員選擇一個(gè)圖片,并下載到我們的“火車”目錄中。確保您所選擇的圖像能夠很好地顯示人臉的特征,以便對分類器進(jìn)行分類。

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

為了您的舒適,我們增加了培訓(xùn)和測試數(shù)據(jù)與項(xiàng)目代碼。

2.模型的訓(xùn)練

首先導(dǎo)入必要的模塊。

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

人臉識別庫包含幫助人臉識別過程的各種實(shí)用程序的實(shí)現(xiàn)。

現(xiàn)在,創(chuàng)建2個(gè)列表來存儲(chǔ)圖像(人員)的名稱及其各自的臉編碼。

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

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

我們循環(huán)遍歷火車目錄中的每個(gè)圖像,提取圖像中的人的姓名,計(jì)算其臉編碼向量,并將信息存儲(chǔ)在相應(yīng)的列表中。

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.在測試數(shù)據(jù)集中測試模型

如前所述,我們的測試數(shù)據(jù)集只包含一個(gè)包含所有人員的圖像。

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

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

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

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

我們循環(huán)遍歷每個(gè)面部位置及其在圖像中的編碼。然后,我們將這種編碼與“列車”數(shù)據(jù)集中的人臉編碼進(jìn)行比較。

然后計(jì)算人臉距離,即計(jì)算測試圖像編碼和訓(xùn)練圖像編碼之間的相似性?,F(xiàn)在,我們從它選取最小值距離,表示測試圖像的這張臉是訓(xùn)練數(shù)據(jù)集中的人之一。

現(xiàn)在,使用CV2模塊中的方法繪制一個(gè)帶有面部位置坐標(biāo)的矩形。

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()方法將圖像保存到當(dāng)前工作目錄中。

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

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

cv2.waitKey(0)
cv2.destroyAllWindows()

Python人臉識別輸出

讓我們看看模型的輸出。

摘要

在這個(gè)機(jī)器學(xué)習(xí)項(xiàng)目中,我們使用我們自己的自定義數(shù)據(jù)集,在python和OpenCV中開發(fā)了一個(gè)人臉識別模型。

到此這篇關(guān)于教你如何用Python實(shí)現(xiàn)人臉識別(含源代碼)的文章就介紹到這了,更多相關(guān)Python人臉識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 記一次django內(nèi)存異常排查及解決方法

    記一次django內(nèi)存異常排查及解決方法

    這篇文章主要給大家介紹了關(guān)于一次django內(nèi)存異常排查記解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python通過字典映射函數(shù)實(shí)現(xiàn)switch

    Python通過字典映射函數(shù)實(shí)現(xiàn)switch

    這篇文章主要介紹了Python通過字典映射函數(shù)實(shí)現(xiàn)switch,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python利用PyQt5設(shè)計(jì)鼠標(biāo)顯示形狀

    python利用PyQt5設(shè)計(jì)鼠標(biāo)顯示形狀

    不知道大家有沒有發(fā)現(xiàn),我們在網(wǎng)頁移動(dòng)鼠標(biāo)時(shí),不同的網(wǎng)頁會(huì)有不同的鼠標(biāo)移動(dòng)特效,通過移動(dòng)鼠標(biāo),會(huì)形成類似蜘蛛網(wǎng)等等的特效,本文將用PyQt5實(shí)現(xiàn)這一特效,需要的可以參考一下
    2024-07-07
  • Python中使用Selenium環(huán)境安裝的方法步驟

    Python中使用Selenium環(huán)境安裝的方法步驟

    這篇文章主要介紹了Python中使用Selenium環(huán)境安裝的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • python 彈窗提示警告框MessageBox的實(shí)例

    python 彈窗提示警告框MessageBox的實(shí)例

    今天小編就為大家分享一篇python 彈窗提示警告框MessageBox的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python學(xué)習(xí)教程之常用的內(nèi)置函數(shù)大全

    Python學(xué)習(xí)教程之常用的內(nèi)置函數(shù)大全

    python給我們提供了很多已經(jīng)定義好的函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)教程之一些常用的內(nèi)置函數(shù),文中分享了關(guān)于數(shù)學(xué)函數(shù)、功能函數(shù)、類型轉(zhuǎn)換函數(shù)、字符串處理和序列處理函數(shù)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • Linux安裝Pytorch1.8GPU(CUDA11.1)的實(shí)現(xiàn)

    Linux安裝Pytorch1.8GPU(CUDA11.1)的實(shí)現(xiàn)

    這篇文章主要介紹了Linux安裝Pytorch1.8GPU(CUDA11.1)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python常見反爬蟲機(jī)制解決方案

    Python常見反爬蟲機(jī)制解決方案

    這篇文章主要介紹了Python常見反爬蟲機(jī)制解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python Tkinter創(chuàng)建GUI應(yīng)用程序的示例

    Python Tkinter創(chuàng)建GUI應(yīng)用程序的示例

    Tkinter提供了豐富的功能和靈活的接口,讓開發(fā)者能夠輕松地構(gòu)建出各種各樣的圖形用戶界面,本文介紹了使用Python的Tkinter庫創(chuàng)建圖形用戶界面GUI應(yīng)用程序,感興趣的可以了解一下
    2024-12-12
  • Python實(shí)現(xiàn)圖像添加水印的方法

    Python實(shí)現(xiàn)圖像添加水印的方法

    在日常圖像處理中,為圖片添加水印是一項(xiàng)常見任務(wù),本文主要介紹了Python實(shí)現(xiàn)圖像添加水印的方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07

最新評論

邻水| 桃源县| 青阳县| 辽阳县| 龙南县| 安化县| 陆丰市| 安吉县| 青田县| 大洼县| 聂拉木县| 长宁区| 绥化市| 潜山县| 仪征市| 庆阳市| 南平市| 敦化市| 崇左市| 司法| 保靖县| 东乡族自治县| 二连浩特市| 松潘县| 万源市| 格尔木市| 白山市| 上杭县| 昌乐县| 文成县| 松阳县| 伊金霍洛旗| 平武县| 安远县| 额尔古纳市| 杭锦后旗| 泰来县| 西平县| 阿鲁科尔沁旗| 广德县| 吉木萨尔县|