日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

PHP opencv Dlib,Face_Recognition

發(fā)布時(shí)間:2023/12/10 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP opencv Dlib,Face_Recognition 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Face_Recognition

使用Opencv和Dlib實(shí)現(xiàn)基于視頻的人臉識(shí)別

文件夾介紹

1、Resources\pictures

此文件夾下存放人臉保存結(jié)果

2、Resources\video

此文件夾下存放帶標(biāo)注視頻保存結(jié)果

3、Resources\faceS

此文件夾下存放各個(gè)人物的圖片,用于人臉庫(kù)的建立

4、Resources\featureDB

此文件下為各個(gè)人物的128D描述符的數(shù)據(jù)存儲(chǔ)文件

5、Resources\featureMean\feature_all.csv

此文件為人臉特征庫(kù)文件

6、Resources\shape_predictor_68_face_landmarks.dat

人臉關(guān)鍵點(diǎn)標(biāo)記模型文件

7、Resources\dlib_face_recognition_resnet_model_v1.dat

面部識(shí)別模型文件

8、face_recognition.mp4

待檢測(cè)的視頻

9、face_recognition.py

人臉識(shí)別代碼文件

10、detection.py

人臉檢測(cè)代碼文件

11、face_recognition.py

建立本地人臉庫(kù)代碼文件

介紹

思路介紹

無(wú)論是基于視頻或者調(diào)用攝像頭來(lái)完成人臉識(shí)別,其實(shí)是一樣,通過(guò)使用opencv,來(lái)捕獲視頻或者攝像頭傳來(lái)的圖像,每隔若干幀取一幀做人臉識(shí)別,調(diào)用Dlib中的人臉檢測(cè)器來(lái)檢測(cè)人臉,并通過(guò)Dlib的人臉關(guān)鍵點(diǎn)預(yù)測(cè)器來(lái)獲得人臉的關(guān)鍵點(diǎn),接下來(lái)使用Dlib的面部識(shí)別模型將獲得的68個(gè)關(guān)鍵點(diǎn)轉(zhuǎn)換成128D面部描述符,我們通過(guò)計(jì)算人臉的128D面部描述符與本地人臉庫(kù)(需要自己建立人臉庫(kù))中的人臉128D面部描述符的歐氏距離,來(lái)判斷是否為同一人,當(dāng)距離小于特定閾值時(shí),認(rèn)定識(shí)別成功,打上標(biāo)簽。

運(yùn)行環(huán)境介紹

操作系統(tǒng)版本:Windows10

運(yùn)行環(huán)境:python3.6+opencv4.1.2+dlib19.8.1

軟件:PyCharm

(注:這里下載dlib包最好下載.whl文件,不需要安裝cmake以及boost這些麻煩的東西。因?yàn)閐ilib包的沒(méi)有python3.7版的whl文件,所以建議使用python3.6)

附上opencv和dlib包鏈接:https://pan.baidu.com/s/1Z33r7SoD5Z0faH96wr7Ecw

提取碼:a8gl

模型介紹

這里的人臉識(shí)別使用了Dlib已訓(xùn)練成功的兩個(gè)模型--人臉關(guān)鍵點(diǎn)預(yù)測(cè)器和面部識(shí)別模型。使用時(shí)需要加載模型,文件分別為shape_predictor_68_face_landmarks.dat和dlib_face_recognition_resnet_model_v1.dat

模型文件下載地址 http://dlib.net/files/

人臉關(guān)鍵點(diǎn)預(yù)測(cè)器

Dlib中標(biāo)記68個(gè)特征點(diǎn)采用的是ERT算法,是一種基于回歸樹(shù)的人臉對(duì)齊算法,這種方法通過(guò)建立一個(gè)級(jí)聯(lián)的殘差回歸樹(shù)來(lái)使人臉形狀從當(dāng)前形狀一步一步回歸到真實(shí)形狀。每一個(gè)GBDT的每一個(gè)葉子節(jié)點(diǎn)上都存儲(chǔ)著一個(gè)殘差回歸量,當(dāng)輸入落到一個(gè)節(jié)點(diǎn)上時(shí),就將殘差加到改輸入上,起到回歸的目的,最終將所有殘差疊加在一起,就完成了人臉對(duì)齊的目的。

用法:

predictor_path = resources_path + "shape_predictor_68_face_landmarks.dat"

#加載人臉關(guān)鍵點(diǎn)預(yù)測(cè)器

predictor= dlib.shape_predictor(predictor_path)

#獲取面部關(guān)鍵點(diǎn),gary為灰度化的圖片

shape = predictor(gray,value)

人臉識(shí)別模型

Dlib中使用的人臉識(shí)別模型是基于深度殘差網(wǎng)絡(luò),深度殘差網(wǎng)絡(luò)通過(guò)殘差塊來(lái)構(gòu)建,它有效的解決了梯度消失以及梯度爆炸問(wèn)題。當(dāng)網(wǎng)絡(luò)深度很大時(shí),普通網(wǎng)絡(luò)的誤差會(huì)增加,而深度殘差網(wǎng)絡(luò)卻有較小的誤差。這里的人臉識(shí)別通過(guò)訓(xùn)練深度殘差網(wǎng)絡(luò)將人臉的68個(gè)特征關(guān)鍵點(diǎn)轉(zhuǎn)換成128D面部描述符,用于人臉的識(shí)別。

model_path = resources_path + "dlib_face_recognition_resnet_model_v1.dat"

#生成面部識(shí)別器

facerec = dlib.face_recognition_model_v1(model_path)

# 提取特征-圖像中的68個(gè)關(guān)鍵點(diǎn)轉(zhuǎn)換為128D面部描述符,其中同一人的圖片被映射到彼此附近,并且不同人的圖片被遠(yuǎn)離地映射。

face_descriptor = facerec.compute_face_descriptor(frame, shape)

效果展示

識(shí)別過(guò)程

1、本地人臉庫(kù)建立

2 、視頻處理

通過(guò)opencv提供的VideoCapture()函數(shù)對(duì)視頻進(jìn)行加載,并計(jì)算視頻的fps,以方便人臉標(biāo)記之后的視頻的輸出。

3、加載模型

將已經(jīng)訓(xùn)練好的模型加載進(jìn)來(lái),將人臉關(guān)鍵點(diǎn)標(biāo)記模型和面部識(shí)別模型加載進(jìn)來(lái),以便后續(xù)使用。

4、人臉檢測(cè)

對(duì)視頻進(jìn)行讀取,每隔6幀,取一幀進(jìn)行人臉檢測(cè),先將取得的照片進(jìn)行灰度處理,然后進(jìn)行人臉檢測(cè),并繪畫(huà)人臉標(biāo)記框進(jìn)行展示,然后通過(guò)加載的人臉關(guān)鍵點(diǎn)標(biāo)記模型識(shí)別圖像中的人臉關(guān)鍵點(diǎn),并且標(biāo)記。

5、人臉識(shí)別

將獲取的人臉關(guān)鍵點(diǎn)轉(zhuǎn)換成128D人臉描述符,將其與人臉庫(kù)中的128D面部描述符進(jìn)行歐氏距離計(jì)算,當(dāng)距離值小于某個(gè)閾值時(shí),認(rèn)為人物匹配,識(shí)別成功,打上標(biāo)簽。當(dāng)無(wú)一小于該閾值,打上Unknown標(biāo)簽

6、 保存人臉標(biāo)記視頻

將整個(gè)處理過(guò)程進(jìn)行輸出,將人臉標(biāo)記過(guò)程保存下來(lái)。

總結(jié)

以上是生活随笔為你收集整理的PHP opencv Dlib,Face_Recognition的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。