本文主要是介绍机器学习之基于Fisher线性分类器实现多类人脸的识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于 ORL 人脸库,基于 Fisher 线性分类器实现多类人脸的识别问题。
本次实验相比起之前的二分类人脸识别问题,复杂很多。而且程序的识别效果并不好,应该是程序本身的问题,各位路过的大佬仅当做参考,有不对的地方希望批评指正。
本次实验实现的是基于Fisher线性分类器的人脸四分类问题。
1.图像处理
def Get_img(file_path):train_set = np.zeros(shape=[1,32*32])# print(file_path)for filename in os.listdir(file_path):img = cv2.imread(file_path+'/'+filename,cv2.IMREAD_GRAYSCALE)img = cv2.resize(img,(32,32))#调整一下图片的大小,之前图片比较大,后面计算的时候不太方便n,m = img.shaperes = img.reshape(1,n*m).tolist()train_set = np.row_stack((train_set,res))return train_set
2.Fisher函数
四分类的Fisher函数大部分与二分类的Fisher函数相同,但是也有不一样的,具体的可以参考学长的一篇博客,只不过这是Matlab版本的。
def Fisher(w1,w2,w3,w4,W):w1 = w1.Tw2 = w2.Tw3 = w3.Tw4 = w4.TW = W.Tsz1 = np.size(w1,1)sz2 = np.size(w2,1)sz3 = np.size(w3,1)sz4 = np.size(w4,1)#第一步:计算样本均值向量avg1 = np.mean(w1, axis=
这篇关于机器学习之基于Fisher线性分类器实现多类人脸的识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!