Eigenface - Eigenface

Alguns eigenfaces da AT&T Laboratories Cambridge

Um eigenface ( / ɡ ə n ˌ f s / ) é o nome dado a um conjunto de vectores próprios quando usado na visão de computador problema do ser humano de reconhecimento facial . A abordagem de usar eigenfaces para reconhecimento foi desenvolvida por Sirovich e Kirby (1987) e usada por Matthew Turk e Alex Pentland na classificação de faces. Os autovetores são derivados da matriz de covariância da distribuição de probabilidade no espaço vetorial de alta dimensão das imagens faciais. As próprias faces próprias formam um conjunto básico de todas as imagens usadas para construir a matriz de covariância. Isso produz redução de dimensão, permitindo que o conjunto menor de imagens de base represente as imagens de treinamento originais. A classificação pode ser alcançada comparando como as faces são representadas pelo conjunto base.

História

A abordagem de eigenface começou com uma busca por uma representação de baixa dimensão de imagens faciais. Sirovich e Kirby (1987) mostraram que a análise de componentes principais pode ser usada em uma coleção de imagens faciais para formar um conjunto de características básicas . Essas imagens básicas, conhecidas como imagens próprias, podem ser combinadas linearmente para reconstruir imagens no conjunto de treinamento original. Se o conjunto de treinamento consiste em M imagens, a análise do componente principal pode formar um conjunto base de N imagens, onde N <M . O erro de reconstrução é reduzido com o aumento do número de imagens próprias; no entanto, o número necessário é sempre escolhido inferior a M . Por exemplo, se você precisa gerar um número de N eigenfaces para um conjunto de treinamento de M imagens de rosto, você pode dizer que cada imagem de rosto pode ser composta de "proporções" de todos os K "recursos" ou eigenfaces: Imagem de rosto 1 = (23% de E 1 ) + (2% de E 2 ) + (51% de E 3 ) + ... + (1% de E n ).

Em 1991, M. Turk e A. Pentland expandiram esses resultados e apresentaram o método eigenface de reconhecimento facial. Além de projetar um sistema para reconhecimento automático de faces usando eigenfaces, eles mostraram uma maneira de calcular os eigenvetores de uma matriz de covariância de forma que os computadores da época pudessem realizar a auto-decomposição em um grande número de imagens faciais. Imagens de rosto geralmente ocupam um espaço de alta dimensão e a análise convencional de componentes principais era intratável em tais conjuntos de dados. O artigo de Turk e Pentland demonstrou maneiras de extrair os autovetores com base em matrizes dimensionadas pelo número de imagens ao invés do número de pixels.

Uma vez estabelecido, o método de eigenface foi expandido para incluir métodos de pré-processamento para melhorar a precisão. Abordagens múltiplas e múltiplas também foram usadas para construir conjuntos de eigenfaces para diferentes assuntos e diferentes características, como os olhos.

Geração

Um conjunto de eigenfaces pode ser gerado executando um processo matemático denominado análise de componente principal (PCA) em um grande conjunto de imagens que representam diferentes faces humanas. Informalmente, eigenfaces podem ser considerados um conjunto de "ingredientes de rosto padronizados", derivados da análise estatística de muitas fotos de rostos. Qualquer rosto humano pode ser considerado uma combinação desses rostos padrão. Por exemplo, o rosto de uma pessoa pode ser composto da face média mais 10% da eigenface 1, 55% da eigenface 2 e até -3% da eigenface 3. Notavelmente, não são necessários muitos eigenfaces combinados para atingir uma aproximação justa de a maioria dos rostos. Além disso, como o rosto de uma pessoa não é registrado por uma fotografia digital , mas apenas como uma lista de valores (um valor para cada autoface no banco de dados usado), muito menos espaço é ocupado para o rosto de cada pessoa.

Os eigenfaces criados aparecerão como áreas claras e escuras organizadas em um padrão específico. Este padrão é como diferentes características de um rosto são escolhidas para serem avaliadas e pontuadas. Haverá um padrão para avaliar a simetria , se existe algum tipo de cabelo facial, onde está a linha do cabelo, ou uma avaliação do tamanho do nariz ou da boca. Outras faces próprias têm padrões menos simples de identificar, e a imagem da face própria pode se parecer muito pouco com uma face.

A técnica usada para criar eigenfaces e usá-los para reconhecimento também é usada fora do reconhecimento facial: reconhecimento de caligrafia , leitura labial , reconhecimento de voz , linguagem de sinais / interpretação de gestos de mão e análise de imagens médicas . Portanto, alguns não usam o termo eigenface, mas preferem usar 'eigenimage'.

Implementação prática

Para criar um conjunto de eigenfaces, é necessário:

  1. Prepare um conjunto de treinamento de imagens de rosto. As fotos que constituem o conjunto de treinamento devem ter sido tiradas nas mesmas condições de iluminação e devem ser normalizadas para que os olhos e a boca estejam alinhados em todas as imagens. Eles também devem ser todos reamostrados para uma resolução de pixel comum ( r × c ). Cada imagem é tratada como um vetor, simplesmente pela concatenação das linhas de pixels da imagem original, resultando em uma única coluna com elementos r × c . Para esta implementação, assume-se que todas as imagens do conjunto de treinamento são armazenadas em uma única matriz T , onde cada coluna da matriz é uma imagem.
  2. Subtraia a média . A média imagem um tem de ser calculada e depois subtraída de cada imagem original em T .
  3. Calculam-se os vectores eigen e valores próprios da matriz de covariância S . Cada autovetor tem a mesma dimensionalidade (número de componentes) das imagens originais e, portanto, pode ser visto como uma imagem. Os autovetores dessa matriz de covariância são, portanto, chamados de autofaces. São as direções nas quais as imagens diferem da imagem média. Normalmente, esta será uma etapa computacionalmente cara (se possível), mas a aplicabilidade prática das autofaces decorre da possibilidade de calcular os autovetores de S de forma eficiente, sem nunca computar S explicitamente, conforme detalhado abaixo.
  4. Escolha os componentes principais. Classifique os autovalores em ordem decrescente e organize os autovetores de acordo. O número de componentes principais k é determinado arbitrariamente pelo estabelecimento de um limite ε na variância total. Variância total , n = número de componentes.
  5. k é o menor número que satisfaz

Essas faces próprias podem agora ser usadas para representar faces novas e existentes: podemos projetar uma nova imagem (subtraída da média) nas faces próprias e, assim, registrar como essa nova face difere da face média. Os valores próprios associados a cada face própria representam o quanto as imagens no conjunto de treinamento variam da imagem média naquela direção. A informação é perdida ao se projetar a imagem em um subconjunto dos autovetores, mas as perdas são minimizadas mantendo-se os autofaces com os maiores autovalores. Por exemplo, trabalhar com uma imagem de 100 × 100 produzirá 10.000 vetores próprios. Em aplicações práticas, a maioria das faces pode ser tipicamente identificada usando uma projeção entre 100 e 150 eigenfaces, de forma que a maioria dos 10.000 eigenvetores podem ser descartados.

Código de exemplo Matlab

Aqui está um exemplo de cálculo de eigenfaces com Extended Yale Face Database B. Para evitar o gargalo computacional e de armazenamento, as imagens de rosto são amostradas por um fator 4 × 4 = 16.

clear all;
close all;
load yalefaces
[h, w, n] = size(yalefaces);
d = h * w;
% vectorize images
x = reshape(yalefaces, [d n]);
x = double(x);
% subtract mean
mean_matrix = mean(x, 2);
x = bsxfun(@minus, x, mean_matrix);
% calculate covariance
s = cov(x');
% obtain eigenvalue & eigenvector
[V, D] = eig(s);
eigval = diag(D);
% sort eigenvalues in descending order
eigval = eigval(end: - 1:1);
V = fliplr(V);
% show mean and 1st through 15th principal eigenvectors
figure, subplot(4, 4, 1)
imagesc(reshape(mean_matrix, [h, w]))
colormap gray
for i = 1:15
    subplot(4, 4, i + 1)
    imagesc(reshape(V(:, i), h, w))
end

Observe que, embora a matriz de covariância S gere muitas autofaces, apenas uma fração delas é necessária para representar a maioria das faces. Por exemplo, para representar 95% da variação total de todas as imagens de rosto, apenas os primeiros 43 eigenfaces são necessários. Para calcular esse resultado, implemente o seguinte código:

% evaluate the number of principal components needed to represent 95% Total variance.
eigsum = sum(eigval);
csum = 0;
for i = 1:d
    csum = csum + eigval(i);
    tv = csum / eigsum;
    if tv > 0.95
        k95 = i;
        break
    end;
end;

Computando os vetores próprios

A execução de PCA diretamente na matriz de covariância das imagens costuma ser computacionalmente inviável. Se imagens pequenas forem usadas, digamos 100 × 100 pixels, cada imagem é um ponto em um espaço de 10.000 dimensões e a matriz de covariância S é uma matriz de 10.000 × 10.000 = 10 8 elementos. No entanto, a classificação da matriz de covariância é limitada pelo número de exemplos de treinamento: se houver N exemplos de treinamento, haverá no máximo N  - 1 autovetores com autovalores diferentes de zero. Se o número de exemplos de treinamento for menor que a dimensionalidade das imagens, os componentes principais podem ser calculados mais facilmente como segue.

Seja T a matriz de exemplos de treinamento pré-processados, onde cada coluna contém uma imagem subtraída da média. A matriz de covariância pode então ser calculada como S = TT T e a decomposição de autovetores de S é dada por

No entanto TT T é uma grande matriz, e se em vez disso tomarmos a decomposição de autovalor de

então notamos que pela pré-multiplicação de ambos os lados da equação com T , obtemos

O que significa que, se u i é um vector próprio de T T T , em seguida, v i  =  Tu i é um vector próprio de S . Se tivermos um conjunto de treinamento de 300 imagens de 100 × 100 pixels, a matriz T T T é uma matriz 300 × 300, que é muito mais gerenciável do que a matriz de covariância de 10.000 × 10.000. Observe, entretanto, que os vetores resultantes v i não são normalizados; se a normalização for necessária, ela deve ser aplicada como uma etapa extra.

Conexão com SVD

Deixe X denotar a matriz de dados com coluna como o vetor de imagem com a média subtraída. Então,

Deixe a decomposição de valor singular (SVD) de X ser:

Então, a decomposição de autovalor para é:

, onde Λ = diag (autovalores de )

Assim, podemos ver facilmente que:

As eigenfaces = as primeiras ( ) colunas de associadas aos valores singulares diferentes de zero.
O iº valor próprio do iº valor singular de

Usando SVD na matriz de dados X , é desnecessário calcular a matriz de covariância real para obter eigenfaces.

Use no reconhecimento facial

O reconhecimento facial foi a motivação para a criação de eigenfaces. Para esse uso, os eigenfaces apresentam vantagens sobre outras técnicas disponíveis, como a velocidade e a eficiência do sistema. Como a eigenface é principalmente um método de redução de dimensão, um sistema pode representar muitos assuntos com um conjunto relativamente pequeno de dados. Como um sistema de reconhecimento de rosto, ele também é bastante invariável para grandes reduções no tamanho da imagem; no entanto, começa a falhar consideravelmente quando a variação entre as imagens vistas e a imagem da sonda é grande.

Para reconhecer faces, as imagens da galeria - aquelas vistas pelo sistema - são salvas como coleções de pesos que descrevem a contribuição de cada autoface para aquela imagem. Quando uma nova face é apresentada ao sistema para classificação, seus próprios pesos são encontrados projetando-se a imagem na coleção de eigenfaces. Isso fornece um conjunto de pesos que descreve a face da sonda. Esses pesos são então classificados em relação a todos os pesos no conjunto da galeria para encontrar a correspondência mais próxima. Um método do vizinho mais próximo é uma abordagem simples para encontrar a distância euclidiana entre dois vetores, onde o mínimo pode ser classificado como o sujeito mais próximo. ( Turk & Pentland 1991 , p. 590)

Intuitivamente, o processo de reconhecimento com o método de eigenface consiste em projetar imagens de consulta no espaço facial abrangido por eigenfaces calculadas e encontrar a correspondência mais próxima a uma classe de rosto nesse espaço facial.

Pseudo-código
  • Dado o vetor de imagem de entrada , o vetor de imagem médio do banco de dados , calcule o peso da k-ésima face própria como:
    Em seguida, forme um vetor de peso
  • Compare W com vetores de peso de imagens no banco de dados. Encontre a distância euclidiana.
  • Se , então, a m-ésima entrada no banco de dados é uma candidata a reconhecimento.
  • Se , então, U pode ser um rosto desconhecido e pode ser adicionado ao banco de dados.
  • Se não for uma imagem de rosto.

Os pesos de cada imagem da galeria apenas transmitem informações que descrevem aquela imagem, não aquele assunto. Uma imagem de um assunto sob iluminação frontal pode ter pesos muito diferentes das do mesmo assunto sob forte iluminação esquerda. Isso limita a aplicação de tal sistema. Os experimentos no papel Eigenface original apresentaram os seguintes resultados: uma média de 96% com variação de luz, 85% com variação de orientação e 64% com variação de tamanho. ( Turk & Pentland 1991 , p. 590)

Várias extensões foram feitas para o método de face própria, tais como características próprias . Este método combina métricas faciais (medindo a distância entre as características faciais) com a representação de eigenface. Outro método semelhante à técnica de eigenface é ' Fisherfaces ', que usa análise discriminante linear . Este método de reconhecimento facial é menos sensível à variação na iluminação e na postura do rosto do que usar faces próprias. Fisherface usa dados rotulados para reter mais informações específicas da classe durante o estágio de redução de dimensão.

Uma outra alternativa para eigenfaces e fisherfaces é o modelo de aparência ativa . Esta abordagem usa um modelo de forma ativa para descrever o contorno de um rosto. Ao coletar muitos contornos de faces, a análise de componentes principais pode ser usada para formar um conjunto básico de modelos que encapsulam a variação de diferentes faces.

Muitas abordagens modernas ainda usam a análise de componentes principais como um meio de redução de dimensão ou para formar imagens de base para diferentes modos de variação.

Reveja

O Eigenface fornece uma maneira fácil e barata de realizar o reconhecimento facial, pois:

  • Seu processo de treinamento é totalmente automático e fácil de codificar.
  • Eigenface reduz adequadamente a complexidade estatística na representação da imagem facial.
  • Depois que as eigenfaces de um banco de dados são calculadas, o reconhecimento facial pode ser obtido em tempo real.
  • Eigenface pode lidar com grandes bancos de dados.

No entanto, as deficiências do método de face própria também são óbvias:

  • É muito sensível à iluminação, escala e translação e requer um ambiente altamente controlado.
  • Eigenface tem dificuldade em capturar mudanças de expressão.
  • Os eigenfaces mais significativos são principalmente sobre a codificação de iluminação e não fornecem informações úteis sobre o rosto real.

Para lidar com a distração da iluminação na prática, o método de eigenface geralmente descarta os três primeiros eigenfaces do conjunto de dados. Uma vez que a iluminação é geralmente a causa por trás das maiores variações nas imagens de rosto, os três primeiros eigenfaces capturarão principalmente as informações de mudanças de iluminação tridimensionais, o que tem pouca contribuição para o reconhecimento de rosto. Ao descartar esses três eigenfaces, haverá um aumento decente na precisão do reconhecimento de rosto, mas outros métodos, como Fisherface e espaço linear ainda têm a vantagem.

Veja também

Notas

Referências

links externos