De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


openCertiface - Biométrica Facial em nuvem baseada em software livre

Colaboração: Alessandro de Oliveira Faria

Data de Publicação: 14 de julho de 2016

Tudo começou em 2003 quando foquei minhas pesquisas na biometria facial depois de testar todas as formas de biometria. Após 6 anos surgiu o CERTIFACE, um serviço em nuvem criado para proteger as pessoas do bem, nasceu para que ninguém compre no seu nome com documentação falsa, resumidamente nasceu para erradicar a fraude no mercado presencial e on-line.

O Certiface opera em nuvem, conta com toda experiência da empresa adquirida no segmento de biometria desde 1997, além da experiência, no Certiface existe toda a dedicação, empenho e muito trabalho sério da equipe que funciona como um único organismo. Então em 2015 Surgiu o openCertiface lançado na Campus Party 2016.

O openCertiface é a versão em software livre do serviço de biometria facial em nuvem CERTIFACE. Esta iniciativa foi somente possível graças à visão diferenciada do Grupo Honda (sócios e investidores da empresa OITI TECHNOLOGIES). Pois além de apoiar todo trabalho, carregam o espírito colaborativo, com isto trazendo para a empresa o objetivo de utilizar a tecnologia a serviço da sociedade. Sendo assim, agradeço em nome de toda comunidade de software livre por permitir esta contribuição criada para proteger as pessoas do bem.

O openCertiface é um serviço WebService SOAP escrito em C cujo principal objetivo é receber duas imagens e compará-las com algoritmos biométricos de reconhecimento facial (openBR) e retornar uma taxa de similaridade. Ou seja esta taxa fornece o quanto estas imagens são parecidas. Para exercer esta tarefa, foram utilizadas as bibliotecas GSOAP e openBR. O algoritmo openBR foi incorporado ao projeto para evitar incompatibilidade referente à atualização de versões matemáticas do algoritmo. Sendo assim posteriores atualizações estáveis do projeto openBR serão incorporadas no git do projeto openCertiface.

A aplicabilidade do projeto é imensa. Mas focarei apenas na principal meta deste documento, compilá-lo a partir do código fonte presente no GIT. Como também explicar as principais funções com exemplos cliente em C, Java, Bash e PHP (para começar esta bom). Mas chega de explicação e vamos para a mão na massa.

Dependências a partir do binário

Biblioteca de visão computacional openCV

A biblioteca de visão computacional openCV é a dependência base do algoritmo matemático, não entrarei em detalhes para não criar um artigo dentro de outro artigo. Sendo assim, para obter mais detalhes sobre download, compilação e instalação sugiro a leitura deste artigo presente no VOL:

Visão Computacional - Reconhecendo objetos na plataforma Linux via Webcam

GSOAP

Esta biblioteca é a dependência do projeto openCertiface, esta lib tem a função de facilitar a construção de WebService SOAP com gerenciamento de thread, pool de conexão entre inúmeras funcionalidades. Mais informações sugiro visitar a página oficial do projeto:

http://www.cs.fsu.edu/~engelen/soap.html

Como estou sozinho nesta jornada, disponibilizei compilei, empacotei e publiquei no meu repositório openSUSE os pacotes rpm apenas para as distribuições:

  • CentOS 6
  • CentOS 7
  • Fedora 22
  • Fedora 23
  • RedHat 6
  • RedHat 7
  • SLES 12
  • SLES 12 SP1
  • openSUSE 13.1
  • openSUSE 13.2
  • openSUSE Leap 42.1
  • openSUSE Tumbleweed

A seguir os comandos de instalação nas respectivas distribuições (logado como root).

CentOS 6:

  # cd /etc/yum.repos.d/
  # wget http://download.opensuse.org/repositories/home:cabelo/CentOS_7/home:cabelo.repo
  # yum install libgsoap-devel

CentOS 7:

  # cd /etc/yum.repos.d/
  # wget http://download.opensuse.org/repositories/home:cabelo/CentOS_6/home:cabelo.repo
  # yum install libgsoap-devel

Fedora 22:

  # cd /etc/yum.repos.d/
  # wget http://download.opensuse.org/repositories/home:cabelo/Fedora_22/home:cabelo.repo
  # yum install libgsoap-devel

Fedora 23:

  # cd /etc/yum.repos.d/
  # wget http://download.opensuse.org/repositories/home:cabelo/Fedora_23/home:cabelo.repo
  # yum install libgsoap-devel

RedHat 6:

  # cd /etc/yum.repos.d/
  # wget http://download.opensuse.org/repositories/home:cabelo/RHEL_6/home:cabelo.repo
  # yum install libgsoap-devel

RedHat 7:

  # cd /etc/yum.repos.d/
  # wget http://download.opensuse.org/repositories/home:cabelo/RHEL_7/home:cabelo.repo
  # yum install libgsoap-devel

SUSE Linux Enterprise 12:

  # zypper addrepo http://download.opensuse.org/repositories/home:cabelo/SLE_12/home:cabelo.repo
  # zypper refresh
  # zypper install gsoap

SUSE Linux Enterprise 12 SP1:

  # zypper addrepo http://download.opensuse.org/repositories/home:cabelo/SLE_12_SP1/home:cabelo.repo
  # zypper refresh
  # zypper install gsoap

openSUSE Tumbleweed:

  # zypper addrepo http://download.opensuse.org/repositories/home:cabelo/openSUSE_Tumbleweed/home:cabelo.repo
  # zypper refresh
  # zypper install gsoap

openSUSE Leap 42.1:

  # zypper addrepo http://download.opensuse.org/repositories/home:cabelo/openSUSE_Leap_42.1/home:cabelo.repo
  # zypper refresh
  # zypper install gsoap

openSUSE 13.2:

  # zypper addrepo http://download.opensuse.org/repositories/home:cabelo/openSUSE_13.2/home:cabelo.repo
  # zypper refresh
  # zypper install gsoap

openSUSE 13.1:

  # zypper addrepo http://download.opensuse.org/repositories/home:cabelo/openSUSE_13.1/home:cabelo.repo
  # zypper refresh
  # zypper install gsoap

Caso o seu sistema operacional seja diferente dos mencionados aqui, na próxima página a compilação a partir dos fontes...

Dependências a partir do código fonte

Para instalar a biblioteca GSOAP a partir do código fonte, primeiramente efetue o download do código fonte no sourceforge, conforme o exemplo abaixo:

  wget "downloads.sourceforge.net/project/gsoap2/gSOAP/gsoap_2.8.29.zip?r=&ts=1459146537&use_mirror=ufpr"

A seguir descompacte o pacote e entre na pasta recém criada:

  $ unzip gsoap_2.8.29.zip 
  $ cd gsoap-2.8/

Agora utilize o comando ./configure para criar o Makefile e todo o sistema de compilação.

  ./configure

A seguir, utilize o comando "make" seguido do "make install" para compilar e instalar em seu sistema operacional e pronto! Ambiente configurado e instalado com sucesso.

  # make
  # make install

E pronto, nesta etapa as dependências do Certiface estarão instaladas e configuradas com sucesso.

Download e compilação do algoritmo biométrico

Primeiramente efetue o download do código fonte do openCertiface no repositório GIT:

  git clone https://github.com/cabelo/opencertiface
  Cloning into 'opencertiface'...
  remote: Counting objects: 4292, done.
  remote: Compressing objects: 100% (1562/1562), done.
  remote: Total 4292 (delta 459), reused 0 (delta 0), pack-reused 2713
  Receiving objects: 100% (4292/4292), 365.93 MiB | 3.51 MiB/s, done.
  Resolving deltas: 100% (953/953), done.
  Checking connectivity... done.

Ao término, entre na pasta biometrics do projeto openCertiface, crie a pasta build e execute o cmake conforme o exemplo a seguir para compilar o algoritmo matemático.

  $ cd opencertiface/biometrics/
  $ mkdir build
  $ cd build/
  $ cmake -DCMAKE_BUILD_TYPE=Release -Wno-dev ..

Agora efetue o comando make e vá tomar um CAFÉ...

  $ make

Ao concluir a compilação efetue o comando make install para instalar o algoritmo biométrico.

  $ make install

Neste momento o algoritmo biométrico base foi instalado com sucesso no seu sistema.

Compilação e instalação do openCertiface

Primeiramente verificaremos se o motor biométrico esta funcionando corretamente. Então entre a pasta imagens e execute o comando br conforme o exemplo a seguir. Se tudo estiver funcionando corretamente, será exibido o numero 4.34175 ao final da execução que representa a similaridade entre as duas imagens comparadas.

  $ cd ../../images/ 
  $ br  -algorithm FaceRecognition -compare cabelo10.jpg cabelo11.jpg 
  Set algorithm to FaceRecognition
  Loading /usr/local/share/openbr/models/algorithms/FaceRecognition
  Comparing cabelo10.jpg and cabelo11.jpg
  Enrolling cabelo10.jpg to cabelo1075pr54.mem
  100.00%  ELAPSED=00:00:00  REMAINING=00:00:00  COUNT=1
  100.00%  ELAPSED=00:00:00  REMAINING=00:00:00  COUNT=1
  4.34175

Volte para a pasta openCertiface e execute o comando make para efetuar a compilação.

  $ make

O próximo passo é instalar o openCertiface com o comando make install.

  $ sudo make install

Para iniciar o serviço, execute o comando abaixo conforme o exemplo com os argumentos stop/start/status.

  # /etc/init.d/opencertiface stop
  redirecting to systemctl stop opencertiface.service
  philco:/dados/Arquivos/Fontes/opensource/opencertiface # /etc/init.d/opencertiface start
  redirecting to systemctl start opencertiface.service
  
  # /etc/init.d/opencertiface status
  Checking for openCertiface daemon running
  opencertiface.service - LSB: People Profile
     Loaded: loaded (/etc/init.d/opencertiface)
     Active: active (running) since Seg 2016-03-28 22:34:59 BRT; 24s ago
    Process: 17470 ExecStop=/etc/init.d/opencertiface stop (code=exited, status=0/SUCCESS)
    Process: 17485 ExecStart=/etc/init.d/opencertiface start (code=exited, status=0/SUCCESS)
     CGroup: /system.slice/opencertiface.service
             17495 [opencertifaceGuardian] 8081
             17496 [opencertiface]         8081

Para comprovar que tudo esta funcionando corretamente, execute o comando clientVerify para com os argumentos contendo duas imagens para comparação e no final a quantidade de ciclos de execução.

  $ ./clientVerifyImg http://localhost:8081 images/cabelo10.jpg images/cabelo11.jpg 1
  numero de args 5
  Carregando:  images/cabelo10.jpg
  Carregando:  images/cabelo11.jpg
  Resultado: 4.34175
  N.loop=0

Existem também uma alternativa para verificar que o serviço esta no ar, o comando clientPING tem esta finalidade.

  $ ./clientPING http://localhost:8081 Viva.O.Linux 1
  result = Ok:Viva.O.Linux uptime: 0 days, 22:41:01 total RAM : 2981.3 MB free RAM : 347.2 MB
  N.loop=0

@Pronto! Parabéns, o openCertiface foi instalado com sucesso!

Exemplos de uso da API

O openCertiface apresenta exemplos em Bash, C, Java e PHP (a caminho Mono e Python). Estes exemplos estão na pasta examples do projeto. Então deixo aqui uma breve receita de bolo de como utilizar um exemplo em PHP, o principal objetivo deste exemplo é estar o openCertiface. Sendo assim estou aberto à críticas e sugestões para tal tarefa.

  # cd opencertiface/examples/php/
  # mkdir /srv/www/htdocs/opencertiface/
  # cp * /srv/www/htdocs/opencertiface/

P.S.: lembre-se de alterar no arquivo check.php a linha 24 que encontra-se a localização e/ou URL do opencertiface.wsdl. Esta chamada deve apontar para a localização no seu servidor. Veja o exemplo abaixo. Vale a pena mencionar também o conteúdo do arquivo opencertiface.wsdl.

  $ client = new SoapClient('http://localhost/certiface/opencertiface.wsdl', array('trace' => true, 'exceptions' => true));
  # rcapache2 start

Agora basta acessar a URL http://localhost/opencertiface/ e teremos a seguinte interface:

Mais informações envie email para <cabelo (a) opensuse org>, e lembre-se colaborar atrai amigos, competir atrai inimigos.

Alessandro de Oliveira Faria é Sócio-fundador da empresa OITI TECNOLOGIA fundada em Junho de 1996, empresa especializada em desenvolvimento de soluções com a tecnologia de Reconhecimento Facial, Consultor Biométrico, Experiência em Realidade Aumentada, Visão Computacional (opencv), Neuro-tecnologia, Redes Neurais e Programação multi-nuclear com CPU e GPU, atua na área de tecnologia desde 1986, leva o Linux a sério desde 1998, membro da comunidade Viva O Linux com mais de 50 palestras e 100 artigos publicados, mantenedor da biblioteca open-source de vídeo captura, Embaixador e openSUSE Member.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Alessandro de Oliveira Faria