99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用PCA和SVM建立一個(gè)人臉識(shí)別模型

牽手一起夢(mèng) ? 來(lái)源:磐創(chuàng)AI ? 作者:磐創(chuàng)AI ? 2020-12-31 14:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在本文中,我們將使用主成分分析和支持向量機(jī)來(lái)建立人臉識(shí)別模型。

首先,讓我們了解PCA和SVM是什么:

主成分分析:主成分分析(PCA)是一種機(jī)器學(xué)習(xí)算法,廣泛應(yīng)用于探索性數(shù)據(jù)分析和建立預(yù)測(cè)模型,它通常用于降維,通過(guò)將每個(gè)數(shù)據(jù)點(diǎn)投影到前幾個(gè)主成分上,以獲得低維數(shù)據(jù),同時(shí)盡可能保留數(shù)據(jù)的變化。

Matt Brems的文章全面深入地介紹了該算法?,F(xiàn)在,讓我們用更簡(jiǎn)單的術(shù)語(yǔ)來(lái)理解算法:假設(shè)我們現(xiàn)在正在收集數(shù)據(jù),我們的數(shù)據(jù)集產(chǎn)生了多個(gè)變量、多個(gè)特征,所有這些都會(huì)在不同方面影響結(jié)果。我們可能會(huì)選擇刪除某些特征,但這意味著會(huì)丟失信息。因此我們開源使用另一種減少特征數(shù)量(減少數(shù)據(jù)維數(shù))的方法,通過(guò)提取重要信息并刪除不重要的信息來(lái)創(chuàng)建新的特征,這樣,我們的信息就不會(huì)丟失,但起到減少特征的作用,而我們模型的過(guò)擬合幾率也會(huì)減少。支持向量機(jī)支持向量機(jī)(SVM)是一種用于兩組分類問(wèn)題的有監(jiān)督機(jī)器學(xué)習(xí)模型,在為每個(gè)類別提供一組帶標(biāo)簽的訓(xùn)練數(shù)據(jù)后,他們能夠?qū)π碌臏y(cè)試數(shù)據(jù)進(jìn)行分類。

支持向量機(jī)基于最大化間隔的平面對(duì)數(shù)據(jù)進(jìn)行分類,決策邊界是直的。支持向量機(jī)是一種很好的圖像分類算法,實(shí)驗(yàn)結(jié)果表明,支持向量機(jī)在經(jīng)過(guò)3-4輪相關(guān)優(yōu)化后,其搜索精度明顯高于傳統(tǒng)的查詢優(yōu)化方案,這對(duì)于圖像分割來(lái)說(shuō)也是如此,包括那些使用改進(jìn)的支持向量機(jī)。Marco Peixeiro的文章解釋了需要有一個(gè)最大間隔超平面來(lái)分類數(shù)據(jù),開源幫助你更好地理解SVM!人臉識(shí)別人臉是由許多像素組成的高維數(shù)據(jù)。高維數(shù)據(jù)很難處理,因?yàn)椴荒苡枚S數(shù)據(jù)的散點(diǎn)圖等簡(jiǎn)單技術(shù)進(jìn)行可視化。我們要做的是利用PCA對(duì)數(shù)據(jù)的高維進(jìn)行降維處理,然后將其輸入到SVM分類器中對(duì)圖像進(jìn)行分類。下面的代碼示例取自關(guān)于eigenfaces的sklearn文檔,我們將一步一步地實(shí)現(xiàn)代碼,以了解其復(fù)雜性和結(jié)果。導(dǎo)入相關(guān)庫(kù)和模塊首先,我們將導(dǎo)入所需的庫(kù)和模塊,我們將在后文深入討論我們?yōu)槭裁匆獙?dǎo)入它們。import pylab as pl

import numpy as np

from matplotlib import pyplot as plt

from sklearn.model_selection import train_test_split

from sklearn.datasets import fetch_lfw_people

from sklearn.model_selection import GridSearchCV

from sklearn.metrics import classification_report

from sklearn.metrics import confusion_matrix

from sklearn.decomposition import PCA as RandomizedPCA

from sklearn.svm import SVC

將數(shù)據(jù)加載到Numpy數(shù)組中接下來(lái),我們將數(shù)據(jù)下載到磁盤中,并使用fetch_lfw_people將其作為NumPy數(shù)組加載到sklearn.datasetslfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)

lfw數(shù)據(jù)集包括一個(gè)用于研究無(wú)約束人臉識(shí)別問(wèn)題的人臉圖像數(shù)據(jù)庫(kù),它從網(wǎng)絡(luò)收集的13000多張照片中包含了超過(guò)13000張照片,每個(gè)人臉都貼上了照片,1680個(gè)人臉在數(shù)據(jù)集中有兩張或兩張以上不同的照片。圖像采用灰度值(像素值=0-255)。

如何利用PCA和SVM建立一個(gè)人臉識(shí)別模型

圖像Numpy數(shù)組接下來(lái),我們將尋找圖像數(shù)組圖片的形狀。我們使用NumPy shape屬性,該屬性返回一個(gè)元組,每個(gè)索引都有對(duì)應(yīng)元素的數(shù)量。

n_samples, h, w = lfw_people.images.shape

np.random.seed(42)

從變量explorer可以看到,我們有1288個(gè)樣本(圖片),高度為50px,寬度為37px(50x37=1850個(gè)特征)Numpy數(shù)組我們使用lfw_people 的data數(shù)組,直接存儲(chǔ)在X中,我們將在以后的處理中使用這些數(shù)據(jù)。X = lfw_people.data

n_features = X.shape[1]

X中的數(shù)據(jù)有1288個(gè)樣本,每個(gè)樣本有1850個(gè)特征。label接下來(lái),我們將定義label,這些label是圖片所屬人的id。y = lfw_people.target

target_names = lfw_people.target_names

n_classes = target_names.shape[0]

這里,y代表目標(biāo),它是每個(gè)圖片的標(biāo)簽。標(biāo)簽由target_names變量進(jìn)一步定義,該變量由7個(gè)要識(shí)別的人的姓名組成。

如何利用PCA和SVM建立一個(gè)人臉識(shí)別模型

target是一個(gè)1288x1的NumPy數(shù)組,它包含1288張圖片對(duì)應(yīng)名稱的0–6值,因此,如果id=0的目標(biāo)值為5,則表示該人臉為“Hugo Chavez”,如target_names中所示:

因此,y是數(shù)字形式的目標(biāo),target_names是名稱中的任何目標(biāo)/標(biāo)簽,n_classes是存儲(chǔ)類數(shù)量的變量,在我們的例子中,我們有7個(gè):Ariel SharonColin PowellDonald RumsfeldGeorge W BushGerhard Schr?derHugo ChavezTony Blair

讓我們打印出變量:print("Total dataset size:")

print("n_samples: %d", n_samples)

print("n_features: %d", n_features)

print("n_classes: %d", n_classes)

所以,我們有1288個(gè)樣本(圖片),每個(gè)樣本總共有1850個(gè)特征(50px37px)和7個(gè)類(人)。劃分訓(xùn)練集和測(cè)試集接下來(lái),我們使用sklearn.model_selection將數(shù)據(jù)(X-特征和y-標(biāo)簽)分為訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù),其中25%用于測(cè)試,其余75%用于訓(xùn)練模型。X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)

以下是變量X-train、X_test、y_train和y_test:

基于PCA的降維方法現(xiàn)在,我們從 sklearn.decomposition中選擇PCA 以訓(xùn)練模型。我們已經(jīng)在第一段代碼中導(dǎo)入了PCA在我們的例子中,我們?cè)谟?xùn)練集X_train中總共有966個(gè)特征,我們使用PCA(維數(shù)縮減)將它們減少到50個(gè):n_components = 50

pca = RandomizedPCA(n_components=n_components, whiten=True).fit(X_train)

這個(gè)過(guò)程需要不到一秒鐘的時(shí)間,這可以通過(guò)使用時(shí)間函數(shù)進(jìn)行驗(yàn)證(讓我們暫時(shí)跳過(guò)它)?,F(xiàn)在我們將重塑PCA組件并定義特征臉,這是在人臉識(shí)別的計(jì)算機(jī)視覺(jué)問(wèn)題中使用的一組特征向量的名稱:eigenfaces = pca.components_.reshape((n_components, h, w))

如何利用PCA和SVM建立一個(gè)人臉識(shí)別模型

如截圖所示,特征臉是一個(gè)50×50×37的Numpy數(shù)組,50對(duì)應(yīng)于特征的數(shù)量。接下來(lái),我們使用PCA在X_train 和X_test 上的transform 函數(shù)來(lái)降低維數(shù)。X_train_pca = pca.transform(X_train)

X_test_pca = pca.transform(X_test)

從上面的截圖可以看出,通過(guò)PCA算法,X_train和X_test的維數(shù)都被降低了,每一個(gè)都將特征從1850個(gè)減少到50個(gè)(正如我們?cè)谒惴ㄖ卸x的那樣)。訓(xùn)練SVM分類器一旦我們完成了降維,就開始分類了。首先,我們將訓(xùn)練SVM分類模型。我們使用GridSearchCV,這是一個(gè)庫(kù)函數(shù),它是一種調(diào)整超參數(shù)的方法,它將系統(tǒng)地為網(wǎng)格中指定的算法參數(shù)的每個(gè)組合建立和評(píng)估模型,并在最佳估計(jì)量,參數(shù)在參數(shù)網(wǎng)格中給出:print("Fitting the classifier to the training set")

param_grid = {

'C': [1e3, 5e3, 1e4, 5e4, 1e5],

'gamma': [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.1],

clf = GridSearchCV(SVC(kernel='rbf', class_weight='balanced'), param_grid)

clf = clf.fit(X_train_pca, y_train)

print("Best estimator found by grid search:")

print(clf.best_estimator_)

我們數(shù)據(jù)的最佳分類器是SVC,參數(shù)如下:SVC(C=1000, class_weight = ‘balanced’, gamma=0.01)預(yù)測(cè)現(xiàn)在讓我們?cè)跍y(cè)試數(shù)據(jù)上預(yù)測(cè)這些人的名字,我們使用從GridSearchCV中找到的分類器,它已經(jīng)在訓(xùn)練數(shù)據(jù)擬合。print("Predicting the people names on the testing set")

y_pred = clf.predict(X_test_pca)

分類報(bào)告和混淆矩陣一旦預(yù)測(cè)完成,讓我們打印分類報(bào)告,它顯示了模型的精度、召回率、F1分?jǐn)?shù)和支持分?jǐn)?shù),這使我們對(duì)分類器的行為有了更深入的直覺(jué)。print(classification_report(y_test, y_pred, target_names=target_names))

讓我們打印混淆矩陣:print(confusion_matrix(y_test, y_pred, labels=range(n_classes)))

混淆矩陣打印真正例、假正例和假反例的值,并提供分類器的概述。繪圖最后,我們將繪制人物肖像和特征臉!我們將定義兩個(gè)函數(shù):title在測(cè)試集的一部分繪制預(yù)測(cè)結(jié)果,plot_gallery通過(guò)繪制它們來(lái)評(píng)估預(yù)測(cè):def title(y_pred, y_test, target_names, i):

pred_name = target_names[y_pred[i]].rsplit(' ', 1)[-1]

true_name = target_names[y_test[i]].rsplit(' ', 1)[-1]

return 'predicted: %strue: %s' % (pred_name, true_name)

def plot_gallery(images, titles, h, w, n_row=3, n_col=4):

"""繪制肖像庫(kù)的幫助函數(shù)"""

plt.figure(figsize=(1.8 * n_col, 2.4 * n_row))

plt.subplots_adjust(bottom=0, left=.01, right=.99, top=.90, hspace=.35)

for i in range(n_row * n_col):

plt.subplot(n_row, n_col, i + 1)

plt.imshow(images[i].reshape((h, w)), cmap=plt.cm.gray)

plt.title(titles[i], size=12)

plt.xticks(())

plt.yticks(())

現(xiàn)在讓我們?cè)跍y(cè)試集的一部分繪制預(yù)測(cè)結(jié)果:prediction_titles = [title(y_pred, y_test, target_names, i)

for i in range(y_pred.shape[0])]

plot_gallery(X_test, prediction_titles, h, w)

現(xiàn)在讓我們繪制特征面。我們使用在上面代碼塊中定義的eigenfaces變量。eigenface_titles = ["eigenface %d" % i for i in range(eigenfaces.shape[0])]

plot_gallery(eigenfaces, eigenface_titles, h, w)

plt.show()

最后,我們來(lái)繪制PCA+SVM模型用于人臉識(shí)別的精度:from sklearn.metrics import accuracy_score

score = accuracy_score(y_test, y_pred)

print(score)

我們的準(zhǔn)確分?jǐn)?shù)是0.81!雖然這并不是一個(gè)完美的分?jǐn)?shù),還有很大的改進(jìn)空間,但PCA和SVM的人臉識(shí)別為我們提供了進(jìn)一步強(qiáng)大算法的起點(diǎn)!結(jié)論本文利用PCA和SVM建立了一個(gè)人臉識(shí)別模型。主成分分析算法被用來(lái)減少數(shù)據(jù)的維數(shù),然后利用支持向量機(jī)進(jìn)行分類,通過(guò)超參數(shù)調(diào)整尋找最佳估計(jì)量。我們對(duì)這些肖像進(jìn)行了分類,準(zhǔn)確度得分為0.81。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于LockAI視覺(jué)識(shí)別模塊:C++人臉識(shí)別

    的BaseDataset和CropDataset需要提前創(chuàng)建。BaseDataset用于存儲(chǔ)已有的人臉圖像,同一個(gè)人人臉圖像保存在BaseDataset的
    發(fā)表于 07-01 12:01

    基于LockAI視覺(jué)識(shí)別模塊:C++人臉識(shí)別

    本文基于RV1106做成的LockAI視覺(jué)識(shí)別模塊,采用LZ-Picodet模型訓(xùn)練的人臉檢測(cè)模型LZ-Face,以及ArcFace人臉
    的頭像 發(fā)表于 07-01 10:09 ?153次閱讀
    基于LockAI視覺(jué)<b class='flag-5'>識(shí)別</b>模塊:C++<b class='flag-5'>人臉</b><b class='flag-5'>識(shí)別</b>

    【EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】人臉識(shí)別體驗(yàn)

    對(duì)圖1、圖2進(jìn)行對(duì)比,similarity值大于0.4認(rèn)為是同一個(gè)人,值越大可能性越高,similarity值范圍在-1~1之間: 從上面的結(jié)果看,認(rèn)為兩張圖為同一個(gè)人。 再對(duì)比圖1跟圖3: 結(jié)果為0.07說(shuō)明不是同一個(gè)人。
    發(fā)表于 06-26 06:54

    人臉識(shí)別身份核驗(yàn)終端使用鴻蒙系統(tǒng),有什么好處?

    隨著人臉識(shí)別技術(shù)越來(lái)越得到廣泛應(yīng)用,不少人對(duì)人臉識(shí)別核驗(yàn)終端所涉及的個(gè)人信息安全十分關(guān)注。而且人臉
    的頭像 發(fā)表于 05-20 09:57 ?284次閱讀
    <b class='flag-5'>人臉</b><b class='flag-5'>識(shí)別</b>身份核驗(yàn)終端使用鴻蒙系統(tǒng),有什么好處?

    無(wú)需接線!1個(gè)底板可測(cè)試海凌科5款人臉識(shí)別模塊

    一個(gè)人臉識(shí)別模塊就要買不同的測(cè)試底板?試用款新的人臉識(shí)別模塊,每次都要重新接線?海凌科通用型測(cè)試底板FO101解決這
    的頭像 發(fā)表于 05-12 12:06 ?319次閱讀
    無(wú)需接線!1<b class='flag-5'>個(gè)</b>底板可測(cè)試海凌科5款<b class='flag-5'>人臉</b><b class='flag-5'>識(shí)別</b>模塊

    人臉識(shí)別門禁終端的般故障排查方法

    天波作為資深的智能硬件廠商,每年出廠落地應(yīng)用的產(chǎn)品數(shù)以萬(wàn)計(jì)。其中,各種人臉識(shí)別門禁考勤體機(jī)、刷臉核驗(yàn)體機(jī)、人臉
    的頭像 發(fā)表于 04-27 10:45 ?598次閱讀
    <b class='flag-5'>人臉</b><b class='flag-5'>識(shí)別</b>門禁終端的<b class='flag-5'>一</b>般故障排查方法

    【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】人臉識(shí)別

    RetinaFace 模型實(shí)現(xiàn)單張和多張人臉識(shí)別的效果展示。 單張人臉識(shí)別 這里選取了些影視
    發(fā)表于 04-01 21:46

    人臉識(shí)別技術(shù)的優(yōu)勢(shì)與劣勢(shì)

    與其他生物識(shí)別技術(shù)(如指紋識(shí)別)相比,人臉識(shí)別是非接觸式的,這意味著用戶不需要與設(shè)備直接接觸,這在衛(wèi)生和便捷性方面是
    的頭像 發(fā)表于 02-06 18:23 ?1692次閱讀

    人臉識(shí)別技術(shù)的算法原理解析

    基于人的面部特征,通過(guò)計(jì)算機(jī)算法來(lái)識(shí)別或驗(yàn)證個(gè)人身份。這項(xiàng)技術(shù)通常包括以下幾個(gè)步驟:人臉檢測(cè)、特征提取、特征比對(duì)和身份確認(rèn)。 2. 人臉檢測(cè) 人臉
    的頭像 發(fā)表于 02-06 17:50 ?1737次閱讀

    人臉識(shí)別技術(shù)在安全監(jiān)控中的應(yīng)用

    的潛力和價(jià)值。 人臉識(shí)別技術(shù)原理 人臉識(shí)別技術(shù)主要依賴于計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)算法。它首先通過(guò)攝像頭捕捉人臉圖像,然后
    的頭像 發(fā)表于 02-06 17:25 ?1000次閱讀

    如何提升人臉門禁體機(jī)的識(shí)別準(zhǔn)確率?

    準(zhǔn)確率,可以從以下幾個(gè)方面進(jìn)行改進(jìn)。、優(yōu)化算法與模型人臉識(shí)別的核心在于算法的優(yōu)化和模型的調(diào)整,目前深度學(xué)習(xí)技術(shù)在圖像
    的頭像 發(fā)表于 12-10 15:05 ?985次閱讀
    如何提升<b class='flag-5'>人臉</b>門禁<b class='flag-5'>一</b>體機(jī)的<b class='flag-5'>識(shí)別</b>準(zhǔn)確率?

    FacenetPytorch人臉識(shí)別方案--基于米爾全志T527開發(fā)板

    。FaceNet通過(guò)將人臉圖像映射到個(gè)高維空間,使得同一個(gè)人的不同圖像在這個(gè)空間中的距離盡可能小,而不同人的圖像距離盡可能大。這種嵌入表示可以直接用于
    發(fā)表于 11-28 15:57

    深度識(shí)別人臉識(shí)別有什么重要作用嗎

    深度學(xué)習(xí)人臉識(shí)別技術(shù)是人工智能領(lǐng)域的個(gè)重要分支,它利用深度學(xué)習(xí)算法來(lái)識(shí)別和驗(yàn)證
    的頭像 發(fā)表于 09-10 14:55 ?1133次閱讀

    深度識(shí)別人臉識(shí)別在任務(wù)中為什么有很強(qiáng)大的建模能力

    深度學(xué)習(xí)人臉識(shí)別技術(shù)是人工智能領(lǐng)域中的個(gè)重要分支,它利用深度學(xué)習(xí)算法來(lái)識(shí)別和驗(yàn)證
    的頭像 發(fā)表于 09-10 14:53 ?835次閱讀