国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

opencv 進(jìn)階13-Fisherfaces 人臉識(shí)別-函數(shù)cv2.face.FisherFaceRecognizer_create()

這篇具有很好參考價(jià)值的文章主要介紹了opencv 進(jìn)階13-Fisherfaces 人臉識(shí)別-函數(shù)cv2.face.FisherFaceRecognizer_create()。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Fisherfaces 人臉識(shí)別

PCA 方法是 EigenFaces 方法的核心,它找到了最大化數(shù)據(jù)總方差特征的線性組合。不可否認(rèn),EigenFaces
是一種非常有效的方法,但是它的缺點(diǎn)在于在操作過(guò)程中會(huì)損失許多特征信息。

因此,在一些情況下,如果損失的信息正好是用于分類(lèi)的關(guān)鍵信息,必然會(huì)導(dǎo)致無(wú)法完成分類(lèi)。Fisherfaces 采用 LDA(Linear Discriminant Analysis,線性判別分析)實(shí)現(xiàn)人臉識(shí)別。線性判別識(shí)別最早由 Fisher 在 1936 年提出,是一種經(jīng)典的線性學(xué)習(xí)方法,也被稱(chēng)為“Fisher 判別分析法”。

基本原理

線性判別分析在對(duì)特征降維的同時(shí)考慮類(lèi)別信息。其思路是:在低維表示下,相同的類(lèi)應(yīng)該緊密地聚集在一起;不同的類(lèi)別應(yīng)該盡可能地分散開(kāi),并且它們之間的距離盡可能地遠(yuǎn)。簡(jiǎn)單地說(shuō),線性判別分析就是要盡力滿(mǎn)足以下兩個(gè)要求:

  • 類(lèi)別間的差別盡可能地大。
  • 類(lèi)別內(nèi)的差別盡可能地小。

做線性判別分析時(shí),首先將訓(xùn)練樣本集投影到一條直線 A 上,讓投影后的點(diǎn)滿(mǎn)足:

  • 同類(lèi)間的點(diǎn)盡可能地靠近。
  • 異類(lèi)間的點(diǎn)盡可能地遠(yuǎn)離。

做完投影后,將待測(cè)樣本投影到直線 A 上,根據(jù)投影點(diǎn)的位置判定樣本的類(lèi)別,就完成了識(shí)別。

例如,圖 23-13 所示的是一組訓(xùn)練樣本集。現(xiàn)在需要找到一條直線,讓所有的訓(xùn)練樣本滿(mǎn)足:同類(lèi)間的距離最近,異類(lèi)間的距離最遠(yuǎn)。

opencv 進(jìn)階13-Fisherfaces 人臉識(shí)別-函數(shù)cv2.face.FisherFaceRecognizer_create(),opencv 進(jìn)階,計(jì)算機(jī)視覺(jué),人工智能,opencv,人工智能,計(jì)算機(jī)視覺(jué)

圖 23-14 的左圖和右圖中分別有兩條不同的投影線 L1 和 L2,將圖 23-13 中的樣本分別投影到這兩條線上,可以看到樣本集在 L2 上的投影效果要好于在 L1 上的投影效果。

opencv 進(jìn)階13-Fisherfaces 人臉識(shí)別-函數(shù)cv2.face.FisherFaceRecognizer_create(),opencv 進(jìn)階,計(jì)算機(jī)視覺(jué),人工智能,opencv,人工智能,計(jì)算機(jī)視覺(jué)
線性判別分析就是要找到一條最優(yōu)的投影線。以圖 23-14 中右圖投影為例,要滿(mǎn)足:

  • A、B 組內(nèi)的點(diǎn)之間盡可能地靠近
  • C 的兩個(gè)端點(diǎn)之間的距離(類(lèi)間距離)盡可能地遠(yuǎn)

找到一條這樣的直線后,如果要判斷某個(gè)待測(cè)樣本的分組,可以直接將該樣本點(diǎn)向投影線投影,然后根據(jù)投影點(diǎn)的位置來(lái)判斷其所屬類(lèi)別。

例如,在圖 23-15 中,三角形樣本點(diǎn) U 向投影線投影后,其投影點(diǎn)落在圓點(diǎn)的投影范圍內(nèi),則認(rèn)為待測(cè)樣本點(diǎn) U 屬于圓點(diǎn)所在的分類(lèi)。

opencv 進(jìn)階13-Fisherfaces 人臉識(shí)別-函數(shù)cv2.face.FisherFaceRecognizer_create(),opencv 進(jìn)階,計(jì)算機(jī)視覺(jué),人工智能,opencv,人工智能,計(jì)算機(jī)視覺(jué)

函數(shù)介紹

OpenCV 中,通過(guò)函數(shù) cv2.face.FisherFaceRecognizer_create()生成 Fisherfaces 識(shí)別器實(shí)例模型,然后應(yīng)用 cv2.face_FaceRecognizer.train()函數(shù)完成訓(xùn)練,用 cv2.face_FaceRecognizer.predict()函數(shù)完成人臉識(shí)別。

  1. 函數(shù)cv2.face.FisherFaceRecognizer_create()
    函數(shù) cv2.face.FisherFaceRecognizer_create()的語(yǔ)法格式為:

retval = cv2.face.FisherFaceRecognizer_create( [, num_components[,
threshold]] )

式中的兩個(gè)參數(shù)都是可選參數(shù),它們的含義為:

  • num_components:使用 Fisherfaces 準(zhǔn)則進(jìn)行線性判別分析時(shí)保留的成分?jǐn)?shù)量??梢圆捎媚J(rèn)值“0”,讓函數(shù)自動(dòng)設(shè)置合適的成分?jǐn)?shù)量。
  • threshold:進(jìn)行識(shí)別時(shí)所用的閾值。如果最近的距離比設(shè)定的閾值 threshold 還要大,函數(shù)會(huì)返回“-1”。
  1. 函數(shù)cv2.face_FaceRecognizer.train()

函數(shù) cv2.face_FaceRecognizer.train()對(duì)每個(gè)參考圖像進(jìn)行 Fisherfaces 計(jì)算,得到一個(gè)向量。
每個(gè)人臉都是整個(gè)向量集中的一個(gè)點(diǎn)。該函數(shù)的語(yǔ)法格式為:

None = cv2.face_FaceRecognizer.train( src, labels )

式中各個(gè)參數(shù)的含義為:

  • src:訓(xùn)練圖像,即用來(lái)學(xué)習(xí)的人臉圖像。
  • labels:人臉圖像所對(duì)應(yīng)的標(biāo)簽。
    該函數(shù)沒(méi)有返回值。
  1. 函數(shù)cv2.face_FaceRecognizer.predict()
    函數(shù) cv2.face_FaceRecognizer.predict()在對(duì)一個(gè)待測(cè)人臉圖像進(jìn)行判斷時(shí),尋找與其距離最近的人臉圖像。與哪個(gè)人臉圖像最接近,就將待測(cè)圖像識(shí)別為其對(duì)應(yīng)的標(biāo)簽。該函數(shù)的語(yǔ)法格式為:

label, confidence = cv2.face_FaceRecognizer.predict( src )

式中的參數(shù)與返回值的含義為:

  • src:需要識(shí)別的人臉圖像。
  • label:返回的識(shí)別結(jié)果的標(biāo)簽。
  • confidence:置信度評(píng)分。置信度評(píng)分用來(lái)衡量識(shí)別結(jié)果與原有模型之間的距離。0 表示完全匹配。該值通常在 0 到 20 000 之間,若低于 5000,就認(rèn)為是相當(dāng)可靠的識(shí)別結(jié)果。需要注意,該評(píng)分值的范圍與 EigenFaces 方法的評(píng)分值范圍一致,與 LBPH 方法的評(píng)分值范圍不一致。

示例:使用 FisherFaces 完成一個(gè)簡(jiǎn)單的人臉識(shí)別程序


import cv2
import numpy as np
images=[]
img1= cv2.imread("face\\face2.png",cv2.IMREAD_GRAYSCALE);
img1.resize((240,240))
images.append(img1)

img2= cv2.imread("face\\face3.png",cv2.IMREAD_GRAYSCALE);
img2.resize((240,240))
images.append(img2)

img3= cv2.imread("face\\face4.png",cv2.IMREAD_GRAYSCALE);
img3.resize((240,240))
images.append(img3)

img4= cv2.imread("face\\face5.png",cv2.IMREAD_GRAYSCALE);
img4.resize((240,240))
images.append(img4)

labels=[0,0,1,1]
#print(labels)
recognizer = cv2.face.FisherFaceRecognizer_create()
recognizer.train(images, np.array(labels)) # 識(shí)別器訓(xùn)練
predict_image=cv2.imread("face\\face6.png",cv2.IMREAD_GRAYSCALE)
predict_image.resize((240,240))
label,confidence= recognizer.predict(predict_image)
print("label=",label)
print("confidence=",confidence)

運(yùn)行結(jié)果:

label= 0
confidence= 1034.0276952694567

從結(jié)果中可以看出,他的準(zhǔn)確度又比EigenFaces 人臉識(shí)別對(duì)比的化準(zhǔn)確多了。

常見(jiàn)的OpenCV人臉?biāo)惴ㄒ约八鼈兊膶?duì)比

Haar Cascade人臉檢測(cè)(查找):
Haar Cascade是一種傳統(tǒng)的人臉檢測(cè)算法,它基于特征的級(jí)聯(lián)分類(lèi)器。盡管速度較快,但對(duì)于一些角度、光照和遮擋變化較大的情況,可能表現(xiàn)不夠穩(wěn)定和準(zhǔn)確。

Dlib人臉檢測(cè)和識(shí)別:
Dlib庫(kù)提供了基于HOG特征的人臉檢測(cè)和深度學(xué)習(xí)的人臉識(shí)別。Dlib在不同角度和輕微遮擋下有良好的檢測(cè)性能。它還可以進(jìn)行人臉特征點(diǎn)檢測(cè),如眼睛、嘴巴等。

深度學(xué)習(xí)模型:(后續(xù)講解)
OpenCV也集成了一些深度學(xué)習(xí)模型用于人臉檢測(cè)和識(shí)別,如基于CNN的人臉檢測(cè)器和基于深度學(xué)習(xí)的人臉識(shí)別算法。這些模型通常在大規(guī)模數(shù)據(jù)集上進(jìn)行了訓(xùn)練,具有更高的準(zhǔn)確性,但可能需要更多的計(jì)算資源。

LBPH人臉識(shí)別:(應(yīng)用少)
局部二值模式直方圖(LBPH)是一種基于紋理的人臉識(shí)別算法,適用于小規(guī)模數(shù)據(jù)庫(kù)。它不需要大量的訓(xùn)練數(shù)據(jù),但在復(fù)雜場(chǎng)景下可能性能較差。

Eigenfaces和Fisherfaces:
Eigenfaces和Fisherfaces是基于PCA和LDA的經(jīng)典人臉識(shí)別算法。它們?cè)谀承┣闆r下可能表現(xiàn)出色,但在復(fù)雜環(huán)境中可能不如深度學(xué)習(xí)模型。

在選擇OpenCV人臉?biāo)惴〞r(shí),需要考慮以下因素:

準(zhǔn)確性: 算法的準(zhǔn)確性是否滿(mǎn)足你的應(yīng)用需求?
速度: 算法的執(zhí)行速度是否足夠快?
復(fù)雜度: 算法的實(shí)現(xiàn)和使用是否容易?
數(shù)據(jù)規(guī)模: 你的數(shù)據(jù)集是大還是???
場(chǎng)景: 你的應(yīng)用場(chǎng)景中是否有遮擋、光照變化等因素?

一般來(lái)說(shuō),對(duì)于復(fù)雜的人臉檢測(cè)和識(shí)別問(wèn)題,深度學(xué)習(xí)模型可能會(huì)更加準(zhǔn)確,但也需要更多的計(jì)算資源。對(duì)于一些簡(jiǎn)單的應(yīng)用,傳統(tǒng)的方法如Haar Cascade或Dlib可能已經(jīng)足夠。選擇適合自己應(yīng)用的算法需要根據(jù)具體情況進(jìn)行權(quán)衡和評(píng)估。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-665270.html

到了這里,關(guān)于opencv 進(jìn)階13-Fisherfaces 人臉識(shí)別-函數(shù)cv2.face.FisherFaceRecognizer_create()的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • opencv進(jìn)階14-Harris角點(diǎn)檢測(cè)-cv2.cornerHarris

    opencv進(jìn)階14-Harris角點(diǎn)檢測(cè)-cv2.cornerHarris

    類(lèi)似于人的眼睛和大腦,OpenCV可以檢測(cè)圖像的主要特征并將這 些特征提取到所謂的圖像描述符中。然后,可以將這些特征作為數(shù)據(jù) 庫(kù),支持基于圖像的搜索。此外,我們可以使用關(guān)鍵點(diǎn)將圖像拼接起 來(lái),組成更大的圖像。(想象一下把很多圖片放到一起組成一幅360°的全景

    2024年02月11日
    瀏覽(293)
  • Opencv cv2.putText 函數(shù)詳解

    Opencv cv2.putText 函數(shù)詳解

    具體函數(shù)如下: 函數(shù)源碼如下: 對(duì)應(yīng)的參數(shù)如下: 參數(shù) 具體表述 image 繪制的圖像 text 繪制的文本 org 文本在圖像中顯示的坐標(biāo),用元組表示格式為(X坐標(biāo),Y坐標(biāo)) font 文本字體類(lèi)型,值可以為 FONT_HERSHEY_SIMPLEX 、 FONT_HERSHEY_PLAIN fontScale 字體比例因子乘以font-specific基本大小 c

    2024年02月09日
    瀏覽(89)
  • 【OpenCV常用函數(shù):顏色空間轉(zhuǎn)換、閾值化】cv2.cvtColor()+cv2.threshold()

    對(duì)圖像進(jìn)行顏色空間的轉(zhuǎn)換 對(duì)圖像進(jìn)行閾值化/二值化

    2024年02月13日
    瀏覽(92)
  • 【OpenCV常用函數(shù):視頻捕獲函數(shù)】cv2.VideoCapture

    輸入視頻路徑,創(chuàng)建VideoCapture的對(duì)象 該類(lèi)的函數(shù)有: 1)video.isOpened: 檢查視頻捕獲是否成功 2)video.read(): 讀取視頻幀,返回ret, frame,ret為bool類(lèi)型,表示是否成功 3)video.release(): 關(guān)閉視頻 4)video.get(prop): 獲取video的屬性 如果要讀取視頻的每一幀,然后進(jìn)行相關(guān)的處理時(shí),可

    2024年02月13日
    瀏覽(100)
  • opencv進(jìn)階01-直方圖的應(yīng)用及示例cv2.calcHist()

    opencv進(jìn)階01-直方圖的應(yīng)用及示例cv2.calcHist()

    直方圖是一種圖形表示方法,用于顯示數(shù)據(jù)中各個(gè)數(shù)值或數(shù)值范圍的分布情況。它將數(shù)據(jù)劃分為一系列的區(qū)間(也稱(chēng)為“箱子”或“bin”),然后統(tǒng)計(jì)每個(gè)區(qū)間中數(shù)據(jù)出現(xiàn)的頻次(或頻率)。直方圖可以幫助我們更好地理解數(shù)據(jù)的分布特征,包括集中趨勢(shì)、離散程度等。 直方

    2024年02月13日
    瀏覽(89)
  • 【OpenCV常用函數(shù):輪廓檢測(cè)+外接矩形檢測(cè)】cv2.findContours()+cv2.boundingRect()

    【OpenCV常用函數(shù):輪廓檢測(cè)+外接矩形檢測(cè)】cv2.findContours()+cv2.boundingRect()

    對(duì)具有黑色背景的二值圖像尋找白色區(qū)域的輪廓,因此一般都會(huì)先經(jīng)過(guò)cvtColor()灰度化和threshold()二值化后的圖像作為輸入。 例如,如下的輪廓檢測(cè)出的結(jié)果contours和hierarchy。 根據(jù)輪廓點(diǎn)檢測(cè)對(duì)應(yīng)輪廓的外接矩形

    2024年02月13日
    瀏覽(90)
  • OpenCV腐蝕函數(shù):cv2.erode()使用

    OpenCV腐蝕函數(shù):cv2.erode()使用

    void cv::erode ( InputArray src , OutputArray dst , InputArray kernel , Point anchor ?=? Point(-1,-1) , int? iterations ?=? 1 , int? borderType ?=? BORDER_CONSTANT , const?Scalar?? borderValue ?=? morphologyDefaultBorderValue() ? ) Python: dst = cv.erode( src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]] ) 通過(guò)使用特定

    2024年02月14日
    瀏覽(19)
  • opencv進(jìn)階08-K 均值聚類(lèi)cv2.kmeans()介紹及示例

    opencv進(jìn)階08-K 均值聚類(lèi)cv2.kmeans()介紹及示例

    K均值聚類(lèi)是一種常用的無(wú)監(jiān)督學(xué)習(xí)算法,用于將一組數(shù)據(jù)點(diǎn)分成不同的簇(clusters),以便數(shù)據(jù)點(diǎn)在同一簇內(nèi)更相似,而不同簇之間差異較大。K均值聚類(lèi)的目標(biāo)是通過(guò)最小化數(shù)據(jù)點(diǎn)與所屬簇中心之間的距離來(lái)形成簇。 當(dāng)我們要預(yù)測(cè)的是一個(gè)離散值時(shí),做的工作就是“分類(lèi)”

    2024年02月12日
    瀏覽(91)
  • 深入解析OpenCV中的cv2.waitKey()函數(shù)

    OpenCV 是一個(gè)開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù),廣泛用于圖像處理和計(jì)算機(jī)視覺(jué)任務(wù)。在圖像處理中,有時(shí)候我們需要在圖像顯示時(shí)等待用戶(hù)的交互,例如等待用戶(hù)按下一個(gè)鍵來(lái)關(guān)閉圖像窗口或執(zhí)行其他操作。這時(shí)就可以使用 waitKey() 函數(shù)。 waitKey() 函數(shù)通常與OpenCV的圖像顯示功能一起使用

    2024年02月04日
    瀏覽(26)
  • opencv進(jìn)階09-視頻處理cv2.VideoCapture示例(打開(kāi)本機(jī)電腦攝像頭)

    opencv進(jìn)階09-視頻處理cv2.VideoCapture示例(打開(kāi)本機(jī)電腦攝像頭)

    視頻信號(hào)(以下簡(jiǎn)稱(chēng)為視頻)是非常重要的視覺(jué)信息來(lái)源,它是視覺(jué)處理過(guò)程中經(jīng)常要處理的一類(lèi)信號(hào)。實(shí)際上,視頻是由一系列圖像構(gòu)成的,這一系列圖像被稱(chēng)為幀,幀是以固定的時(shí)間間隔從視頻中獲取的。獲?。úシ牛乃俣确Q(chēng)為幀速率,其單位通常使用“幀/秒”表示

    2024年02月12日
    瀏覽(95)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包