The recognition process has three steps. First, we calculate the face subspace from the training samples; then the new face image to be identified is projected into k-dimensional subspace by using (PCA, LDA, LPP and TensorLPP); finally, the new face image is identified by a nearest neighbor classifier.

In both LPP and TensorLPP, we need to construct the affinity matrix, we use the following matlab codes to construct the affinity matrix. Please refer the help of 'constructW.m' for detail explanations for these parameters.
%====================================
options = [];
options.Metric = 'Cosine';
options.NeighborMode = 'Supervised';
options.WeightMode = 'Cosine';
options.bSelfConnected = 1;
options.gnd = gnd_Train;

W = constructW(fea_Train,options);
%=================================

The data is used without further pre-processing.

TensorLPP takes 2-order tensors as its inputs. The following matlab codes are used:

%============================================================
nTrain = size(fea_Train,1);
nTest = size(fea_Test,1);
X = reshape(fea_Train',32,32,nTrain);
options = [];
options.nRepeat = 10;
[U,V,eigU,eigV,posIdx,Y_Train] = TensorLPP(X, W, options);

X = reshape(fea_Test',32,32,nTest);
nRow = size(U,2);
nCol = size(V,2);
Y = zeros(nRow,nCol,nTest);
for i=1:nTest
  Y(:,:,i) = U'*X(:,:,i)*V;
end
Y_Test = reshape(Y_Test,nRow*nCol,nTest)';
Y_Test = Y_Test(:,posIdx);
%==============================================================

Thus, we get Y_Train and Y_Test and we can keep the firt k dimension of Y_Train and Y_Test.




The only difference of the experimental results shown on the right from previous one is that we pre-process the data by normalizing each face vector to the unit.

For more detailed explanations of these experiments, please refer our paper: Xiaofei He, Deng Cai and Partha Niyogi, "Tensor Subspace Analysis". Advances in Neural Information Processing Systems 18 (NIPS 2005), Vancouver, Canada, 2005.