Вы находитесь на странице: 1из 38

BiometriaemnuvemeIoTfocadaparao

desenvolvedores
AlessandrodeOliveiraFaria(A.K.A.Cabelo)

AGRADECIMENTOS
OopenCertifacebaseadonanuvem,aversodeemSoftwareLivredo
serviodebiometriafacialemnuvemCERTIFACE.Estainiciativafoisomente
possvelgraasvisodiferenciadadoGrupoHonda(scioseinvestidores
daempresaOITITECHNOLOGIES).Poisalmdeapoiartodotrabalho,
carregamoespritocolaborativo,comistotrazendoparaaempresao
objetivodeutilizaratecnologiaaserviodasociedade.Sendoassim,
agradeoemnomedetodacomunidadedesoftwarelivreporpermitiresta
contribuiocriadaparaprotegeraspessoasdobem.

Com11anostornouseapaixonadopor

tecnologiae/ouinovao,sciofundadorda
NETI/OITITECHNOLOGIES,ingressousecomo
membrodacomunidadeVivaoLinuxnoanode
2003,em1997inicioupesquisacomLinuxe
BiometriaeinventordoCERTIFACE(tecnologia
paraprotegeraspessoasdobem).

Apresentao

Oquebiometria?

finaldosculoXIX

Custocomputacional

Oquebiometriafacial?

Compararumaou
maisfaces.

Nenhumatecnologiaperfeita...
NoiniciodoSculoXX(1903)casoWillWest.

Oquebiometriafacial?

SuperGmeosdaTVRecord

Existemalgunsobstculosemtecnologiasbiomtricasde
cdigoaberto.
(aprendizadoRNA,testepopulacional)

Biometrialivre

VisoComputacional

Demandatemporeal;

Rudo;

Ambiguidade;

Custocomputacional;

Evoluodevice.

Grande parte dos projetos de viso computacional


envolveoprojetoopenCV.
cmakeDCMAKE_BUILD_TYPE=Release\
DCMAKE_INSTALL_PREFIX='%{_prefix}'\
DCMAKE_SKIP_RPATH=ON\
DBUILD_TESTS=OFF\
DBUILD_PYTHON_SUPPORT=ON\
DINSTALL_C_EXAMPLES=ON\
DINSTALL_PYTHON_EXAMPLES=ON\
DLIB_SUFFIX=$(echo%{_lib}|cutb4)\
DENABLE_OMIT_FRAME_POINTER=OFF\
DWITH_QT=ON\
DWITH_OPENGL=ON\
DWITH_TBB=ON\
DWITH_UNICAP=ON\
DWITH_XINE=ON\
%ifnarchx86_64
DENABLE_SSE=0\
DENABLE_SSE2=0\
%endif

OpenCV

FaceTracker
Biblioteca para o rastreamento deformvel da face
escritoemC++usandoOpenCV.
https://github.com/kylemcdonald/FaceTracker
$gitclonehttps://github.com/kylemcdonald/FaceTracker
$cdFaceTracker/
$make
$cdbin
$./face_tracker

FaceTrackerComputaodistribuda

FaceTrackerComputaodistribuda

openbr

FaceRecognitionVendorTest(FRVT)2012;

13posioemacuracidade;

2posioemvelocidadedeenroll(100ms);

3posiotamanhoamostragem;

2posioemestimativadesexo;

4posioemestimativadeidade.

openbr

CompilaoeDependncias:

OpenCV2.4.xx

QT5

Openbr

Gsoap

openCertiface

Download:
$gitclonehttps://github.com/cabelo/opencertiface
Cloninginto'opencertiface'...
remote:Countingobjects:2577,done.
remote:Compressingobjects:100%(2104/2104),done.
remote:Total2577(delta405),reused2577(delta405),packreused0
Receivingobjects:100%(2577/2577),147.39MiB|3.91MiB/s,done.
Resolvingdeltas:100%(405/405),done.
Checkingconnectivity...done.

openCertiface

Compilao:
cdopencertiface/biometrics/
mkdirbuild
cdbuild
cmakeDCMAKE_BUILD_TYPE=Release..
TheCcompileridentificationisGNU4.8.1
TheCXXcompileridentificationisGNU4.8.1
CheckforworkingCcompiler:/usr/bin/ccworks
DetectingCcompilerABIinfodone
CheckforworkingCXXcompiler:/usr/bin/c++works
DetectingCXXcompilerABIinfo
DetectingCXXcompilerABIinfodone
Lookingforincludefilepthread.h
Lookingforincludefilepthread.hfound
Lookingforpthread_createinpthread
Lookingforpthread_createinpthreadfound
FoundThreads:TRUE
Configuringdone
Generatingdone
Buildfileshavebeenwrittento:

openCertiface

$makej4
#sudomakeinstall
$cd../../
$make
gccDLINUXcowebServerVerifyFace.owebServerVerifyFace.c
gccDLINUXDLINUXDWITH_NOEMPTYSTRUCTcsoapServer.cosoapServer.o
gccDLINUXDLINUXDWITH_NOEMPTYSTRUCTcsoapC.cosoapC.o
gccDLINUXDLINUXDWITH_NOEMPTYSTRUCTcfunctionSRV.cofunctionSRV.o
gccDLINUXDLINUXDWITH_NOEMPTYSTRUCTcping.coping.o
gccDLINUXpipeO2WD_REENTRANTfPIEDQT_NO_DEBUGDQT_GUI_LIBDQT_CORE_LIBI.I.
isystem/usr/include/qt5isystem/usr/include/qt5/QtGuiisystem/usr/include/qt5/QtCore
I.I/usr/lib64/qt5/mkspecs/linuxg++I/usr/include/opencvDLINUXDWITH_NOEMPTYSTRUCTc
I/usr/share/gsoap/I/usr/share/gsoap/pluginverifyAll.cppoverifyAll.o
gccDLINUXDLINUXgO2webServerVerifyFace.osoapServer.osoapC.ofunctionSRV.o
ping.overifyAll.olgsoaplstdc++lpthreadlopencv_corelopencv_highguilopenbr
lQt5CoreowebServerVerifyFace
gccDLINUXcowebServerVerifyFaceThread.owebServerVerifyFaceThread.c
gccDLINUXDLINUXgO2webServerVerifyFaceThread.osoapServer.osoapC.ofunctionSRV.o
ping.overifyAll.olgsoaplstdc++lpthreadlopencv_corelopencv_highguilopenbr
lQt5CoreowebServerVerifyFaceThread
gccDLINUXcoclientPING.oclientPING.c
gccDLINUXDLINUXDWITH_NOEMPTYSTRUCTcsoapClient.cosoapClient.o
gccDLINUXDLINUXgO2clientPING.osoapClient.osoapC.olgsoapoclientPING
gccDLINUXcoclientVerifyImg.oclientVerifyImg.c
gccDLINUXDLINUXgO2clientVerifyImg.osoapClient.osoapC.olgsoapo
clientVerifyImg

Epronto!

#makeinstall
redirectingtosystemctlstopopencertiface.service
installm755cwebServerVerifyFaceThread/usr/sbin/opencertiface
installm755cscript/opencertiface/etc/init.d/opencertiface
lnsf/etc/init.d/opencertiface/usr/sbin/rcopencertiface
/etc/init.d/opencertifacestart
redirectingtosystemctlstartopencertiface.service

BiometriaemC:Comparao
$./clientVerifyImghttp://azure.opencertiface.com.br:8081examples/images/cabelo1.jpg
examples/images/cabelo3.jpg1
numerodeargs5
Carregando:examples/images/cabelo1.jpg
Carregando:examples/images/cabelo3.jpg
Resultado:0.99999
N.loop=0

openCertiface

BiometriaemC:Comparao
$./clientVerifyImghttp://azure.opencertiface.com.br:8081examples/images/cabelo1.jpg
examples/images/cabelo4.jpg1
numerodeargs5
Carregando:examples/images/cabelo1.jpg
Carregando:examples/images/cabelo4.jpg
Resultado:0.81439
N.loop=0

openCertiface

Java
Stringurl=args[0];
Stringid=args[3];
OpencertifaceLocatorservice=newOpencertifaceLocator();
service.setopencertifaceEndpointAddress(url);
OpencertifacePortTypeport=service.getopencertiface();
byte[]imageBytes1=null;
byte[]imageBytes2=null;
System.out.println("Loadimage["+args[1]+"]");
FileInputStreamimg1=newFileInputStream(args[1]);
imageBytes1=newbyte[img1.available()];
img1.read(imageBytes1);
img1.close();
System.out.println("Loadimage["+args[2]+"]");
FileInputStreamimg2=newFileInputStream(args[2]);
imageBytes2=newbyte[img2.available()];
img2.read(imageBytes2);
img2.close();
Stringresult=port.verifyImg(imageBytes1,imageBytes2,id);
System.out.println("Resultado:"+result);

C
FILE*pFile;
pFile=fopen(argv[2],"r");
if(pFile!=NULL)
{
printf("Carregando:%s\n",argv[2]);
fseek(pFile,0,SEEK_END);
template1.__size=ftell(pFile);
rewind(pFile);
template1.__ptr=(unsignedchar*)malloc(template1.__size);
fread(template1.__ptr,1,template1.__size,pFile);
fclose(pFile);
save(template1.__ptr,"/tmp/fir1",template1.__size);
}

soap_call_ns__verifyImg(&soap,argv[1],"",&template1,&template2,"0",&result);

PHP
$uploaddir='./tmp/';
$uploadfile1=$uploaddir.$_FILES['ufile1']['name'];
$uploadfile2=$uploaddir.$_FILES['ufile2']['name'];
$client=newSoapClient('http://azure.opencertiface.com.br/opencertiface.wsdl',
array('trace'=>true,'exceptions'=>true));
$params1=file_get_contents($uploadfile1);
$params2=file_get_contents($uploadfile2);
$result=$client>verifyImg($params1,$params2,"00001");
echo"Similaridade:".$result;

Shell
$curlXPOSTH'Contenttype:text/xml'd@$1http://azure.opencertiface.com.br:8081
<?xmlversion="1.0"encoding="UTF8"?>
<SOAPENV:Envelope
xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAPENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns="urn:opencertiface">
<SOAPENV:BodySOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<ns:verifyImg>
<template1></template1>
<template2></template2>
<id></id>
</ns:verifyImg>
</SOAPENV:Body>
</SOAPENV:Envelope

IoTcomIntelEdison:

http://opencertiface.com.br
htps://github.com/cabelo/opencertiface

IoTcomIntelEdison:

http://opencertiface.com.br
htps://github.com/cabelo/opencertiface

FormatodeumsimplecartoSD,naverdade
umchipIntelQuarkde2nucleos22nmcom400MHZ
cominstruoesx86.

WifieBluetooth;
512Mbderamearmazenamentode2G;
MduloeinterfaceArduino;
Minsculo!

http://opencertiface.com.br
htps://github.com/cabelo/opencertiface

IoTcomIntelEdison(Compilaocruzada):
https://software.intel.com/enus/iot/hardware/edison/downloads
$unzip/dados/programas.install/Hardware/IntelEdison/edisonsdklinux64ww25.515.zip
Archive:/dados/programas.install/Hardware/IntelEdison/edisonsdklinux64ww25.515.zip
inflating:pokyedisonglibcx86_64edisonimagecore232toolchain1.7.2.manifest
inflating:pokyedisonglibcx86_64edisonimagecore232toolchain1.7.2.sh

$shpokyedisonglibcx86_64edisonimagecore232toolchain1.7.2.sh
EntertargetdirectoryforSDK(default:/opt/pokyedison/1.7.2):
YouareabouttoinstalltheSDKto/opt/pokyedison/1.7.2
Proceed[Y/n]?
ExtractingSDK...done
Settingitup...done
SDKhasbeensuccessfullysetupandisreadytobeused.

http://opencertiface.com.br
htps://github.com/cabelo/opencertiface

IoTcomIntelEdison(Compilaocruzada):
https://software.intel.com/enus/iot/hardware/edison/downloads
#include<iostream>
intmain()
{
std::cout<<";AssuntoNerd!"\n;
return0;
}

$source/opt/pokyedison/1.7.2/environmentsetupcore232pokylinux

$$CXXhello.cohello

$scphelloroot@192.168.2.15:/home/root

$./hello
AssuntoNerd!

http://opencertiface.com.br
htps://github.com/cabelo/opencertiface

IoTcomIntelEdison(Compilaocruzada):
https://software.intel.com/enus/iot/hardware/edison/downloads
#include<iostream>
intmain()
{
std::cout<<";AssuntoNerd!"\n;
return0;
}

$source/opt/pokyedison/1.7.2/environmentsetupcore232pokylinux

$$CXXhello.cohello

$scphelloroot@192.168.2.15:/home/root

$./hello
AssuntoNerd!

$source/opt/pokyedison/1.7.2/environmentsetupcore232pokylinux
$cdgsoap2.8/
$./configure
$make
$cdopencertiface/src
$patchMakefile../../Makefile.patch
patchingfileMakefile
$cd..

http://opencertiface.com.br
htps://github.com/cabelo/opencertiface

../gsoap2.8/gsoap/src/soapcpp2ebcTI/usr/share/gsoap/import:/usr/share/gsoap
functions.h
$makesoapC.o
$makesoapClient.o
$makeclientVerifyImg
$makeclientPING
i586pokylinuxgccm32march=core2mtune=core2msse3mfpmath=sse\
mstackrealignfnoomitframepointer\
sysroot=/opt/pokyedison/1.7.2/sysroots/core232pokylinuxDLINUX\
O2pipegfeliminateunuseddebugtypes\
coclientPING.oclientPING.c
i586pokylinuxgccm32march=core2mtune=core2msse3mfpmath=sse\
mstackrealignfnoomitframepointer\
sysroot=/opt/pokyedison/1.7.2/sysroots/core232pokylinuxDLINUX\
I../gsoap2.8/gsoap/DLINUXgO2clientPING.osoapClient.o\
soapC.o../gsoap2.8/gsoap/libgsoap.aoclientPING

http://opencertiface.com.br
htps://github.com/cabelo/opencertiface

PrximosPassos:

http://opencertiface.com.br
htps://github.com/cabelo/opencertiface

ImplementarAPIparaclculodeestimativadeidade
ImplementarAPIparaclculodeestimativadesexo
CdigoexemploemC#,perlepython
Tutorialdeinstalaoeutilizaodoopencertiface
Criarbibliotecadinamicaparaabstrairalgoritmoutilizado
Melhorarodesignerdapagina
CriarimagemLinux
CriarpacotesrpmparaFedora,RedHat,SUSEeopenSUSE
WebserviceRestFull
Modulodoapache

Ajuda:

http://opencertiface.com.br
htps://github.com/cabelo/opencertiface

IdentidadeVisual
PaginasWeb
Segurana
Melhorianocdigo
Divulgao

Oprximograndesaltoevolutivodahumanidadeser
adescobertadequecooperarmelhorquecompetir,
poiscolaboraratraiamigoscompetiratraiinimigos...

Obrigado
Duvidas,criticasesugestesemcabelo@opensuse.org
Novidadesnobloghttp://assuntonerd.com.br

Вам также может понравиться