olivettifaces是纽约大学的一个比较小的人脸库,由40个人的400张图片构成,即每个人的人脸图片为10张。每张图片的灰度级为8位,每个像素的灰度大小位于0-255之间,每张图片大小为64×64。图片大小是1190*942,一共有20*20张人脸,故每张人脸大小是(1190/20)*(942/20)即57*47=2679本文所用的训练数据就是这张图片,400个样本,40个类别。
input_faces.py读取图片数据集
#coding:utf-8
"""
read_data_sets
"""
from PIL import Image
import numpy as np
def read_data_sets(dataset_path):
img = Image.open(dataset_path)
#np.asarray()将图片转为灰度
img_ndarray = np.asarray(img,dtype='float64')/256
#共有400张图片,每张图片大小57*47=2679
faces = np.empty((400,2679))
#将图片存入faces中
for row in range(20):
for column in range(20):
#第一行的第一张脸存入face0,每张脸的大小为57*47
faces[row*20+column] = np.ndarray.flatten(img_ndarray[row*57:(row+1)*57,column*47:(column+1<