机器学习之PCA算法的人脸图像识别-平均脸的计算(详细操作步骤)
前言
PCA算法介紹
PCA算法的步驟:
1:求出每一列的平均值,讓該列的元素減去求出的平均值
2:求該矩陣的協(xié)方差矩陣
3:求特征值、特征矩陣
4:保留主要的成分
這次講PCA算法的前期準(zhǔn)備工作,即收集朋友的照片,自拍照。以不同的角度拍攝十張照片。然后用PS等圖像處理軟件對照片進(jìn)行處理,照片分辨率為92X112像素,72分辨率,8位深度,并將圖像變?yōu)榛叶葓D像,如下圖所示。
將圖像保存為JPG格式和PGM格式,JPG格式方便查看,PGM格式讓程序進(jìn)行讀取,獲取數(shù)據(jù)。每個人收集十張照片,以0-9進(jìn)行命名。
因?yàn)樾は駟栴},就不給大家顯示人物的圖像了。做好這個之后,我們就可以使用jupyter notebook進(jìn)行編程了。
jupyter notebook編程程序
首先先引入
讀取第一張照片,并讓其顯示出灰色圖像。
img = mpimg.imread('./face_image/0/0.pgm') plt.imshow(img,cmap='gray')將像素的長和寬進(jìn)行定義
img_height, img_width = mpimg.imread('./face_image/0/0.pgm').shape #照片像素通過循環(huán)語句一次讀取照片的數(shù)據(jù),并將數(shù)據(jù)集保存到vectorized_images中。
#讀取train數(shù)據(jù) vectorized_images = [] for image_data in range(7):image_data > 7img_path ='./face_image/' + str(image_data) + '/'+'{0}.pgm'for image_no in range(0, 9):img = mpimg.imread(img_path.format(image_no))vectorized_images.append(img.ravel())# ravel函數(shù)是 numpy 的函數(shù): 將多維數(shù)組中的元素變成一個一維數(shù)組vectorized_images #這是一個list對象,里面每一個一維數(shù)組代表一張圖片顯示出數(shù)據(jù)集中的照片
vectorized_images[0].reshape((img_height, img_width)) plt.imshow(vectorized_images[-1].reshape((img_height,img_width)),cmap="gray")顯示出所有的數(shù)據(jù)集的照片,并將其加上相應(yīng)的label
#顯示所有的train data nrows = int((img_per_person)/9) ncols = 9 fig, axes = plt.subplots(nrows,ncols, figsize = (25, 13))title = 'face {0}'for i in range(nrows):for j in range(ncols):axes[i,j].imshow(vectorized_images[i*9+j].reshape((img_height,img_width)),cmap="gray")axes[i,j].set_title(title.format(j)) for ax in axes.ravel():ax.axis('off')讀取出后的結(jié)果為:
計(jì)算平均臉
average_face = np.mean(gamma, axis = 0) #axis = 0:壓縮行,對各列求均值,返回 1* n 矩陣 print(average_face)最終將平均臉顯示出來
plt.imshow(average_face.reshape((img_height,img_width)),cmap="gray")總結(jié)
以上是生活随笔為你收集整理的机器学习之PCA算法的人脸图像识别-平均脸的计算(详细操作步骤)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html chm 打不开,Win7系统中
- 下一篇: c++ ado连接mysql数据库_c+