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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

PCA人脸识别的python实现

發布時間:2024/10/12 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PCA人脸识别的python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?這幾天看了看PCA及其人臉識別的流程,并在網絡上搜相應的python代碼,有,但代碼質量不好,于是自己就重新寫了下,對于att_faces數據集的識別率能達到92.5%~98.0%(40種類型,每種隨機選5張訓練,5張識別),全部代碼如下,不到50行哦。

# -*- coding: utf-8 -*- import numpy as np import os, glob, random, cv2def pca(data,k):data = np.float32(np.mat(data)) rows,cols = data.shape #取大小data_mean = np.mean(data,0) #求均值Z = data - np.tile(data_mean,(rows,1))D,V = np.linalg.eig(Z*Z.T ) #特征值與特征向量V1 = V[:, :k] #取前k個特征向量V1 = Z.T*V1for i in xrange(k): #特征向量歸一化V1[:,i] /= np.linalg.norm(V1[:,i])return np.array(Z*V1),data_mean,V1def loadImageSet(folder=u'E:/迅雷下載/faceProcess/att_faces', sampleCount=5): #加載圖像集,隨機選擇sampleCount張圖片用于訓練trainData = []; testData = []; yTrain=[]; yTest = [];for k in range(40):folder2 = os.path.join(folder, 's%d' % (k+1))data = [cv2.imread(d.encode('gbk'),0) for d in glob.glob(os.path.join(folder2, '*.pgm'))]sample = random.sample(range(10), sampleCount)trainData.extend([data[i].ravel() for i in range(10) if i in sample])testData.extend([data[i].ravel() for i in range(10) if i not in sample])yTest.extend([k]* (10-sampleCount))yTrain.extend([k]* sampleCount)return np.array(trainData), np.array(yTrain), np.array(testData), np.array(yTest)def main(): xTrain_, yTrain, xTest_, yTest = loadImageSet()num_train, num_test = xTrain_.shape[0], xTest_.shape[0]xTrain,data_mean,V = pca(xTrain_, 50)xTest = np.array((xTest_-np.tile(data_mean,(num_test,1))) * V) #得到測試臉在特征向量下的數據yPredict =[yTrain[np.sum((xTrain-np.tile(d,(num_train,1)))**2, 1).argmin()] for d in xTest]print u'歐式距離法識別率: %.2f%%'% ((yPredict == yTest).mean()*100)svm = cv2.SVM() #支持向量機方法svm.train(np.float32(xTrain), np.float32(yTrain), params = {'kernel_type':cv2.SVM_LINEAR})yPredict = [svm.predict(d) for d in np.float32(xTest)]#yPredict = svm.predict_all(xTest.astype(np.float64)) print u'支持向量機識別率: %.2f%%' % ((yPredict == yTest).mean()*100)if __name__ =='__main__':main()

  

轉載于:https://www.cnblogs.com/zmshy2128/p/6150690.html

總結

以上是生活随笔為你收集整理的PCA人脸识别的python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。