Tecnologia de reconhecimento facial
É o método mais comum entre os seres humanos se reconhecerem, além de identificar podemos perceber o estado emocional de uma pessoa apenas observando sua expressão facial.
Aplicações estáticas e assistidas (onde a imagem, a iluminação ambiente e a verificação é controlada) favorece a precisão do sistema. Quando a aplicação é desassistida ou a iluminação ambiente e a imagem não são controladas, devemos aumentar o coeficiente de similaridade tornando o sistema exigente, assim obtendo resultados precisos.
Embora o reconhecimento facial seja uma tarefa simples para o ser humano, é extremamente complexo implementar esse processo em uma máquina, pois não sabemos, ao certo, como o cérebro humano realiza essa tarefa. O cérebro humano pode identificar corretamente uma pessoa a partir de sua imagem facial mesmo sobre as mais diversas condições, como variações de iluminação, observando apenas uma de suas características ou partes, e até mesmo com distorções ou deformações.
O projeto pam-face-authentication
O pacote
pam-face-authentication inicialmente foi projetado para trabalhar com o algorítimo
eigenface para efetuar o reconhecimento facial baseada.
Algumas deficiências do eigenface alavancou a mudança para o algoritmo
DCTMOD2 e LBP.
O método LBP - Padrão de Binários Locais (
Local Binary Pattern) é utilizado para classificar a textura em escala de cinza da imagem. Seu valor é calculado com o valor binário de cada pixel, formando uma vizinhança linear de raio R em torno do pixel principal localizado na posição central. A seguir a ilustração mostra na prática o método:
Tabela:
Mais informações e detalhes em:
FaceRecognition at code.google.com
Download e instalação
Vamos direto ao assunto... Efetue o download com o comando wget no link especificado a seguir:
$ wget http://pam-face-authentication.googlecode.com/files/pam-face-authentication-0.2.tar.gz
Requisitos do projeto:
Descompacte o pacote com o comando "tar -zxvf" e entre na pasta recém-criada.
$ tar -zxvf ~/face/pam-face-authentication-0.2.tar.gz
$ cd pam-face-authentication-0.2/
Compile o pacote com o comando configure, make e make install:
$ ./configure
$ make
$ su
senha:
# make install
Agora, associar uma face ao usuário, utilize o aplicativo
gtk-facemanager como no exemplo abaixo:
# gtk-facemanager
O botão "ADD" adiciona usuário, já o botão "Remove" apaga a conta especificada. "Train Select" é o botão responsável por calcular e adicionar os dados biométricos na conta selecionada. Veja o vídeo logo abaixo:
Para incluir a autenticação através da biometria facial no comando su, basta adicionar a linha a seguir no arquivo
/etc/pam.d/su:
auth sufficient pam_face_authenticate.so
O arquivo terá um conteúdo similar ao exemplo abaixo:
#%PAM-1.0
auth sufficient pam_rootok.so
auth include common-auth
auth sufficient pam_face_authenticate.so
account include common-account
password include common-password
session include common-session
session optional pam_xauth.so
Pronto! Agora basta utilizar o comando su, após a digitação da senha será solicitado a autenticação facial como no vídeo demonstrativo.
Como sempre menciono: Colaborar atrai amigos, competir atrai inimigos...
Sobre o autor:
http://www.netitec.com.br/alessandro
1. Jogo rápido: Download e instalação a partir do código fonte
[1] Comentário enviado por
moska em 16/07/2009 - 19:47h:
Salve Cabelo meu conterraneo!
Kra, show de bola seu artigo parabens, mas tenho uma duvida:
É possivel usar a identificação em ambiente 100% texto? Num servidor que não tenha X por exemplo?
Valews kra, MoSka
[2] Comentário enviado por
renato.leite em 16/07/2009 - 21:22h:
Muito 10 o Artigo
ta de parabéns...
Abraços...
[3] Comentário enviado por
xsmokex em 16/07/2009 - 21:50h:
Ótimo artigo, parabéns
[4] Comentário enviado por
removido em 17/07/2009 - 08:27h:
ótimo artigo!
quando dou um configure está tudo ok até que:
configure: error: PAM library missing
alguem sabe?
[5] Comentário enviado por
cleberjsantos em 17/07/2009 - 09:48h:
Opa Cabelo, ótimo artigo... Pergunta, eu recentemente comprei um HP Pavilion dv5-1260br Entertainment PC, no qual tive problemas de instalação do Linux, inclusive até para manter um registro (Quem tiver problemas com este modelo deve atualizar a Bios), problemas a parte, estou com ele rodando legal a versão 9.04 do Ubuntu, mas não compilei para 64 Bits... Ainda hehehe
A dúvida é, ele tem um leitor biométrico, e não foi detectado pelo ubuntu, instalei o fprint-demo e também o thinkfinger mas nada rolou, vc já chegou a ver algo para este modelo de PC? Teria como me dar uma ajuda com isso? Desde já agradeço...
[6] Comentário enviado por
thieme.reis em 17/07/2009 - 12:17h:
Primeiramente, parabéns pelo artigo.
Segundamente ... rs .. você sabe sé é possível integrar o reconhecimento facial a interface grafica de login (gdm ou kdm)?
[7] Comentário enviado por
cabelo em 17/07/2009 - 12:43h:
Sim, testei com o GDM e funcionou...
[8] Comentário enviado por
sandromelo em 17/07/2009 - 13:47h:
Para quem tiver com erro PAM library missing só instalar o libpam0g-dev.
[9] Comentário enviado por
hugobcar em 17/07/2009 - 13:50h:
Assim como a questão que o usuário do "Br-Linux" levantou, até que ponto esse sistema é seguro ? Tipo, e se eu colocar uma foto do seu rosto em frente ao sistema, ele irá detectar que é você e dessa forma irá liberar o acesso root, não é mesmo ?
Obs.: Estou levantando essa questão apenas por motivos de segurança, volto a dizer que seus artigos são formidáveis.
Parabéns
[10] Comentário enviado por
magnuss em 17/07/2009 - 13:57h:
Primeiramente Parabéns ainda não vi a palestra, por estar tão ansioso para compilar este programa, gostaria de ajuda pois não consegui efetuar a instalação do mesmo!
segui os procedimentos baixei ./configure funciona mais quando efetuo o make, depois make install ele não roda!
agradeço qualquer informação!
de vista parabéns.
[11] Comentário enviado por
timtonys em 17/07/2009 - 14:10h:
Não consegui compilar o programa. Seguem detalhes do processo de instalação que fiz:
Distribuição: Ubuntu 9.04
Mensagem de erro dá durante o Configure:
checking for pam_start in -lpam... no
configure: error: PAM library missing
Alguma idéia do que seja?
[12] Comentário enviado por
Ironmaniaco em 17/07/2009 - 14:28h:
Cabelo, o tarado da biometria :P
>>>Tipo, e se eu colocar uma foto do seu rosto em frente ao sistema
Pensei no mesmo.
Cara, já to com o eViacam instalado aqui e funcional, vou testar também este sistema de autenticação facial.
Valeu cabelo, pelas suas matérias formidáveis na área de Biometria =)
[13] Comentário enviado por
sandromelo em 17/07/2009 - 14:41h:
Aqui está dando erro na hora de compilar erro é esse:
/usr/local/include/opencv/cxmisc.h:52:26: error: cvconfig.h: No such file or directory
make[1]: ** [libfacedetect.lo] Erro 1
Alguem está com mesmo problema ou sabe como resolver ?
[14] Comentário enviado por
Ironmaniaco em 17/07/2009 - 14:44h:
Opa
aqui tá funcionando redondinho
su
eu digito a senha
ele faz o reconhecimento da minha face =)
Bom demaaaaaaaaais!
[15] Comentário enviado por
sandromelo em 17/07/2009 - 15:14h:
Alguem está com esse erro:
libfaceauthenticate.c:298: error: too few arguments to function 'cvSaveImage'
make[1]: ** [libfaceauthenticate.lo] Erro 1
[16] Comentário enviado por
cbov em 17/07/2009 - 15:15h:
opa, tive alguns problemas aqui no meu ubuntu 9.04 com a webcam do meu notebook (hp dv5-1220br)...
ficava dando alguns erros de selector timeout ou coisa parecida ...
solução foi recompilar o opencv com a seguinte config
./configure --without-v4l --with-gstreamer --prefix=/usr
[17] Comentário enviado por
removido em 17/07/2009 - 15:59h:
quando ponho em train selected abre a janela... mas não abre a camera de forma alguma...
alguem sabe resolver?
[18] Comentário enviado por
rausth em 17/07/2009 - 16:51h:
e aeh, um pergunta, é possível implementar essa autenticação no logon do ubuntu 9.04 32bits?
[19] Comentário enviado por
removido em 17/07/2009 - 17:24h:
Também fiquei curioso. Nosso cérebro faz a distinção entre uma foto e uma pessoa com facilidade. Mas este software é capaz de fazer o mesmo?
[20] Comentário enviado por
Ironmaniaco em 17/07/2009 - 17:50h:
Estranho
Configurei como o passo a passo
Digito SU
eu coloco a senha
se eu clicar em CANCELAR, ele mesmo assim autentica(só ignora a autenticação feito pelo pam_face_authenticate.so)
[21] Comentário enviado por
joserribeirojuni em 18/07/2009 - 21:31h:
poxa, como fizeram pra instalar o GSL e o OpenCV não ta dando certo aqui, alguém conseguir instalar pelo apt-get ?
Abraço
[22] Comentário enviado por
Snock em 18/07/2009 - 22:05h:
Ow, e se eu colocar uma foto da pessoa
Teoricamente deve passar
Como se proteger contra isso?
[23] Comentário enviado por
wryel em 20/07/2009 - 23:07h:
se considere a referencia nacional em biometria ! HAAHAHHA :)
nice !
[24] Comentário enviado por
thiago_dias em 21/07/2009 - 01:16h:
instalei tudo certinho, mais na hora de clicar em train selected ,o video simplesmente não abre...
fica tudo em branco,nada acontece, assim como mencionou mais acima o xmarkinx.
Alguém saberia dizer oque seja isso?
Abraços
[25] Comentário enviado por
chmod000 em 03/09/2009 - 03:09h:
Bicho, muito bom o artigo.
Segui ele direitinho e, entre uns file missing aqui e outros ali, consegui instalar tudo.
Agora estou tendo o seguinte problema:
quando executo o gtk-facemanager abre a janelinha para cadastrar as faces, mas...
$ sudo gtk-facemanager
select timeout
Corrupt JPEG data: 300 extraneous bytes before marker 0xd9
$
e a janelinha fecha. Se eu fizer tudo bem rapidinho, até consigo cadastrar meu rosto, mas...
$ su -
(process:8742): Gtk-WARNING **: This process is currently running setuid or setgid.
This is not a supported use of GTK+. You must create a helper
program instead. For further details, see:
http://www.gtk.org/setuid.html
Refusing to initialize GTK+.
Corrupt JPEG data: 13754 extraneous bytes before marker 0x10
select timeout
^C
e nada acontece....
E aí, qual o caso?
[27] Comentário enviado por
edup_pt em 20/01/2010 - 18:19h:
Estou a tentar compilar a aplicação no entanto deparo-me com uns erros (os mesmo que o sandromelo):
1. cvconfig.h is missing (copiei o ficheiro para /usr/local/include/opencv/.
2. Dps, estou a debater-me com erros de "few arguments" no caso das funções cvRetrieveFrame, e cvSaveImage:
- No código desta aplicação estas funções são sempre chamadas com menos um argumento que o que está definido no /usr/local/include/highgui.h cujas funções são definidas da seguinte forma:
CVAPI(IplImage*) cvRetrieveFrame( CvCapture* capture, int streamIdx CV_DEFAULT(0) );
CVAPI(int) cvSaveImage( const char* filename, const CvArr* image,const int* params CV_DEFAULT(0) );
Já tentei adicionar um 0 em cada uma das chamadas à função mas o resulta em "segmentation fault".
Podem-me ajudar?
Obrigado