Biblioteca de reconhecimento de rosto [fechada]

169

Estou procurando uma biblioteca de reconhecimento facial gratuita para um projeto universitário. Não estou procurando detecção de rosto . Eu estou procurando por reconhecimento real. Isso significa encontrar imagens que contenham faces especificadas ou bibliotecas que calculam distâncias entre faces específicas.

Atualmente estou usando OpenCV para detectar as faces e um algoritmo Eigenface para o reconhecimento. Mas achei que deveria haver algo com melhor desempenho do que um algoritmo Eigenface auto-escrito. Não estou falando de velocidade como desempenho, estou procurando uma biblioteca com melhores resultados do que uma abordagem simples do Eigenface.

Dei uma olhada no Faint , mas parece que a biblioteca não é muito reutilizável para meus próprios aplicativos.

Estou feliz com uma biblioteca em Python, Java, C ++, C ou algo assim. A melhor coisa seria se ele pudesse ser executado em uma máquina Windows, porque neste momento estou usando algum código externo somente para Windows.

Janusz
fonte
1
Precisa ser livre por razões políticas ou práticas? Se for um projeto de pesquisa puro, você poderá obter uma licença acadêmica gratuita de um dos fornecedores comerciais.
Christoffer
2
Eu tenho resultados relativamente bons, com apenas os eigenfaces aproximar, mas parece que uma API de detecção de cara boa, que é livre para usar é algo que está faltando no momento
Janusz
4
Embora perfeitamente aceitável em 2009, essa pergunta não é mais considerada no tópico: as perguntas que nos pedem para recomendar ou encontrar uma ferramenta, biblioteca ou recurso favorito externo são off-topic para Stack Overflow. Consulte Quais devem ser os motivos fora do tópico predefinidos para o estouro de pilha?
JDB ainda se lembra de Monica

Respostas:

85

Aqui está uma lista de fornecedores comerciais que fornecem pacotes prontos para reconhecimento facial que são executados no Windows:

  1. Cybula - Informações sobre o SDK de reconhecimento facial . Esta é uma empresa fundada por um professor universitário e, como tal, o site deles parece pouco profissional. Não há informações de preço ou demonstração que você possa baixar. Você precisará entrar em contato com eles para obter informações sobre preços.

  2. NeuroTechnology - Informações sobre o SDK de reconhecimento facial . Esta empresa possui informações de preços iniciais , bem como uma avaliação real de 30 dias de seu SDK .

  3. Pittsburgh Pattern Recognition - ( Adquirido pelo Google ) Informações sobre o SDK de rastreamento e reconhecimento facial . As demonstrações que eles fornecem ajudam a avaliar a tecnologia, mas não o SDSK. Você precisará entrar em contato com eles para obter informações sobre preços.

  4. Visão sensível - Informações sobre o SDK . Seu site permite que você obtenha facilmente uma cotação de preço e também pode solicitar um kit de avaliação que o ajudará a avaliar a tecnologia deles.

Praveen Angyan
fonte
5
Agradecimentos para as ligações, mas no momento eu preciso encontrar uma biblioteca livre
Janusz
1
Pode não ser para o reconhecimento facial , por si só , mas numenta.com pode ser interessante para você.
RCIX
7
você pode adicionar face.com livre API REST a essa lista
Omry Yadan
@Omry, você deve adicionar como uma resposta, ou editar esta para adicionar face.com
Scott
face-rec.org/vendors e em geral face-rec.org
2vision2 23/01
54

Atualizar

O OpenCV 2.4.2 agora vem com o muito novo cv :: FaceRecognizer . Consulte a documentação muito detalhada em:

Correio Original

Eu liberei libfacerec , uma biblioteca de reconhecimento de face moderna para (licença BSD) API do OpenCV C ++. A libfacerec não possui dependências adicionais e implementa o método Eigenfaces, o método Fisherfaces e os histogramas de padrões binários locais. Partes da biblioteca serão incluídas no OpenCV 2.4.

A revisão mais recente do libfacerec está disponível em:

A biblioteca foi escrita para o OpenCV 2.3.1 com o futuro OpenCV 2.4 em mente, portanto, não suporte versões do OpenCV anteriores à 2.3.1. Este projeto é um projeto do CMake com uma API bem documentada; também há um tutorial sobre classificação de gênero. Você pode ver uma versão HTML da documentação em:

Se você quiser entender como esses algoritmos funcionam, leia meu Guide To Face Recognition (inclui exemplos de Python e GNU Octave / MATLAB):

Há também uma implementação Python e GNU Octave / MATLAB dos algoritmos no meu repositório github . Ambos os projetos no facerec também incluem vários métodos de validação cruzada para avaliar algoritmos:

As publicações relevantes são:

  • Turk, M. e Pentland, A. Eigenfaces para reconhecimento. . Journal of Cognitive Neuroscience 3 (1991), pp. 71–86.
  • Belhumeur, PN, Hespanha, J. e Kriegman, D. Eigenfaces vs. Fisherfaces: Reconhecimento usando projeção linear específica de classe. . Transações IEEE sobre Análise de Padrões e Inteligência de Máquina 19, 7 (1997), 711–720.
  • Ahonen, T., Hadid, A. e Pietikainen, M. Reconhecimento de Face com Padrões Binários Locais. . Computer Vision - ECCV 2004 (2004), 469-481.
bytefish
fonte
19

pam-face-authentication um módulo PAM para autenticação de rosto: mas seria necessário algum trabalho para obter o que você deseja. Um teste rápido mostrou que a taxa de reconhecimento não é tão boa quanto a do VeriLook da NeuroTechnology.

O Malic é outro software de reconhecimento de rosto de código aberto, que usa descritores Gabor Wavelet. Mas a última atualização da fonte é de 3 anos.

Do site: " Malic é um software de reconhecimento facial de código-fonte aberto que usa gabor wavelet. É um sistema de reconhecimento facial em tempo real que baseia o Malib e o CSU Face Identification Evaluation System (csuFaceIdEval). Usa a biblioteca Malib para processamento de imagens em tempo real e alguns dos csuFaceIdEval para rosto reconhecimento " .

Além disso, isso pode ser interessante:

gaborboosting : Programa científico aplicado ao reconhecimento de faces com o algoritmo Gabor Wavelet e AdaBoost

Biblioteca de extração de recursos - FELib refere-se a "Anotação de rosto por discriminador transdutor de Fisher de kernel"

jk.
fonte
13

Eu acho que o Eigenface , que você já está fazendo, é o caminho a percorrer se quiser calcular a distância entre os rostos. Você pode experimentar diferentes abordagens, como Support Vector Machine ou Hidden Markov Model . Encontrei uma página que lista os principais algoritmos que poderiam ser usados ​​para o reconhecimento facial: Página inicial de reconhecimento de rosto .

Além disso, quando você diz "melhor desempenho", quer dizer velocidade ou precisão? Que tipo de problema você está tendo? Quão variados são os dados? Eles são principalmente face frontal ou incluem perfis?

Eugene Yokota
fonte
5
Com o desempenho, medi a precisão da detecção. Eigenfaces é bom, mas o que eu estou procurando é um pronto fora do pacote de prateleira para reconhecer rostos, porque eu não quero reinventar a roda e eu não tenho o tempo
Janusz
7

Você deveria olhar http://libccv.org/

É relativamente novo, mas fornece uma API de alto nível de código aberto para detecção de rosto.

(... e, ouso dizer, é incrível)

Edit: Vale a pena notar também, que esta é uma das poucas bibliotecas que NÃO depende do opencv, e apenas para chutes, aqui está uma cópia do código para detecção de rosto na página de documentação, para lhe dar uma idéia do que está envolvido:

#include <ccv.h>
int main(int argc, char** argv)
{
    ccv_dense_matrix_t* image = 0;
    ccv_read(argv[1], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE);
    ccv_bbf_classifier_cascade_t* cascade = ccv_load_bbf_classifier_cascade(argv[2]);         ccv_bbf_params_t params = { .interval = 8, .min_neighbors = 2, .accurate = 1, .flags = 0, .size = ccv_size(24, 24) };
    ccv_array_t* faces = ccv_bbf_detect_objects(image, &cascade, 1, params);
    int i;
    for (i = 0; i < faces->rnum; i++)
    {
        ccv_comp_t* face = (ccv_comp_t*)ccv_array_get(faces, i);
        printf("%d %d %d %d\n", face->rect.x, face->rect.y, face->rect.width, face->rect.y);
    }
    ccv_array_free(faces);
    ccv_bbf_classifier_cascade_free(cascade);
    ccv_matrix_free(image);
    return 0;
} 
Doug
fonte
5

Sei que já faz um tempo, mas para qualquer pessoa interessada, existe o projeto Faint , que agrupou muitos desses recursos (detecção, reconhecimento etc.) em um bom pacote de software.

Marcus PS
fonte
4

Estamos usando o OpenCV . Também há muitas coisas que não reconhecem o rosto, mas, com certeza, ele faz o reconhecimento do rosto.

Paul J. Lucas
fonte
2
Eu acho que não há algoritmo direto no OpenCV para reconhecimento de face. Face Detection da Biblioteca OpenCV funciona bem
Janusz
3
Sim, você está certo. Confundi reconhecimento de rosto e detecção de rosto.
Paul J. Lucas
Apenas como uma observação, agora existe o cv :: FaceRecognizer, que pode ser usado para reconhecimento.
Hueforalice
1

Você pode tentar abrir a biblioteca MVG, também pode ser usada para várias interfaces.


fonte
0

O próximo passo seria o FisherFaces. Experimente e verifique se eles funcionam para você. Aqui está uma boa comparação.

Łukasz Lew
fonte