Закъсал на Eigenfaces, PCA

Изпълнявам мини-проект за разпознаване на лица, използвайки собствени лица.

Имам компютър успешно и записах собствени лица в папка. Използвайки:

  Matrix<-readInImagesAndLinearize()
  avg_face<-as.vector(colMeans(Matrix, na.rm = FALSE, dims = 1))
  A <- t(Matrix) - matrix(avg_face, ncol=dim(Matrix)[1], nrow=dim(Matrix)[2])
  L <- t(A) %*% A
  V <- eigen(L)

  eigenValues <<- V[['values']]
  eigenFaces <<- apply((A %*% V[['vectors']]), 2, function(x) {
  # normalize and scale to 1
  y <- x/sqrt(sum(x^2))
  y <- x - min(x)
  (1/max(y)) * y
  })  

И по-късно да ги запишете във файлове.

Каква трябва да е следващата ми стъпка? Как точно да намаля размерността и по-късно да я използвам, за да разпозная дали дадено лице е подобно на друго?


person user2827159    schedule 06.11.2013    source източник


Отговори (2)


Вие намалявате размерността, като премахвате собствените вектори, които съответстват на най-малките собствени стойности. Колко собствени вектора ще запазите е решение, което трябва да вземете (напр. можете да решите да запазите достатъчно собствени вектори/собствени стойности, така че сумата от запазените собствени стойности да е поне 99% от сумата на всички собствени стойности). Когато получите ново изображение, вие намалявате неговата размерност, като го проектирате върху запазените собствени вектори (т.е. вземете точковия продукт на вектора на изображението с всеки от запазените собствени вектори).

Съвсем друг проблем е разпознаването дали две лица си приличат. PCA се занимава само с намаляването на размерността - не е класификатор. Все пак ще трябва да изберете алгоритъм за класификация, който трябва да се основава на редица съображения (размер и характеристики на изображенията, има ли няколко изображения на едни и същи хора, има ли различни ъгли/разстояния на гледане и т.н.)

person bogatron    schedule 06.11.2013
comment
Благодаря ви, наистина имах нужда от такова прозрение :). - person user2827159; 08.11.2013

При дадено ново изображение на лице, трябва да го представите като линейна комбинация от собствените лица. Коефициентите на линейната комбинация са вашите дескриптори. Така намалявате размерността.

person GilLevi    schedule 06.11.2013