 quais são os pacotes e como que a gente pode contribuir na área de direcência artificial para o DEB. Você sabe que o DEB funciona através de pacotes e tudo, então eu vou mostrar algumas técnicas que ainda não estão empacotadas no DEB e que dá a possibilidade para a gente pacotar e tal. A palestra, assim, geralmente não usa slide, que slide é chato, o pessoal dorme. Então eu não vou mostrar slide, eu vou mostrar mais na prática como que funciona ali. Vai ser bem rápido, é um light talk que vai acabar duas horas, então eu só vou mostrar algumas coisas, uns conceitos bem simples. Deixa eu ver que essa máquina aqui é do Paulo, porque a minha máquina não tem HDMI e aí, tipo, não teve como colocar aqui o VGA. Eu vou usar o do Paulo que é um DEB também. Beleza. Só deixa eu fazer uma pergunta interativa aqui rapidamente para vocês. Quem já mexe com algum tipo de técnica da área de inteligência artificial, sim, só para saber. Qual que é a... você trabalha com que, exatamente? Biospirada, tipo, agorismo genético, essas coisas. PSO, tipo enxame, né? Beleza. Legal. Alguém mais? Você trabalha com que? Ontologia. Ontologia para fazer a especificação de conceitos, né? Ontoló, proteger 2000, para fazer uma camada entre banco de dados e aplicação. Se tem muita gente, você estuda aqui na faculdade? Na Utef? Com o professor Tacla? Legal. Sim, é aquele trabalho com ontologia e a gente inteligente, argumentação, essas coisas. Legal. Alguém mais? O professor Tacla foi meu professor de... quando eu fui mestrado em 2009 aqui, ele deu uma aula de ontologias. Tipo, foi bem bacana. É, tipo, meu nome é Elton, atualmente eu sou professor na UtefPR, mais lá, na Campos de França de Beltrão. Eu ministro alguma disciplina de inteligência artificial, Web. E a minha pesquisa atualmente que eu estou fazendo, doutorada ali na Federal, é... Meisclando Web, inteligência artificial, reconhecimento de padrões, rede neural, essas coisas, né? É mais focado para tuto inteligente, que é como que a gente consegue simular um professor, um tuto ali, né? Então envolve psicologia e outras técnicas ali. Então beleza. Como ele é reduzido, eu vou focar só numa questão que é da reconhecimento de padrões utilizando rede neural. Tá legal? Então aqui no Debian, existe um pacotinho chamado... Isso aqui, ó. Tá pequeno aí, né? Só deixa eu dar uma mentada aqui. Pronto. Tá melhor, né? Se você for trabalhar com rede neural, se você fizer uma pesquisa assim, ó, NetNeural, Network, ele vai aparecer um pacote chamado LibFan. Tem outros aqui, mas eu vou me focar apenas no LibFan, que é para você fazer o que a gente chama de retroalimentação de erro, backpropagation, perceptron multicamada, que é um tipo de rede neural. A mais básica, na verdade, uma das mais básicas. Ele trabalha com modificação de pesos até chegar no ideal. É tipo você ter um menininho, o teu sobrinho, o teu filho, sei lá, o teu... Geralmente o filho dos outros. Você ensina, quanto é um mais um? Aí o menino fala três, aí você dá um murro na cara do moleque. Aí você, tipo... E você pergunta de novo. Quanto é que é um mais um? Ele fala cinco, aí você vai batendo nele até ele aprender que é dois, né? É bem que dá parte da pedagogia da porrada. E a rede neural funciona assim. Vai, vem, vai, vem até treinar o negócio. Então, bem aqui tem, ó, o LibFan. É que tá meio ruim porque não dá para espelhar esse computadorzinho aqui. Mas é isso daqui. LibFan 2. LibFan. Não dá um show logo aqui que é melhor. Show LibFan 2. Ó, é um grupo lá da Alemanha, aonde eles colocaram o código em C dessa biblioteca de rede neural. Deixa eu diminuir aqui só para... Aqui. Então, se você acessar esse site aqui, vai ter lá todo o código fonte em C, né? E aí alguém chegou, que foi esse Christian Kastner. Ele pegou esse pacote porque ele gostou lá, né? E aí ele empacotou. Ele pega um programa que é software livre, tem que ter licença bem especificada. Ele empacoda esse pacote, manda para um esponso, ou se ele for um DD mesmo, ele manda para lá, do DB Develop, né? Aí ele manda direto. Se estiver certinho, né? Então esse aqui é a biblioteca. E aqui tem uma especificação chamada Fast Neural Network, que ele explica mais ou menos que a biblioteca de rede neural. Tem essa daqui. Aí para instalar, é só fazer um LibFan 2 e o LibFan deve, se você for desenvolve-lo, né? Aí você dá um Ent e daí ele vai instalar. Ou seja, você não precisa mais baixar aquele pacote compilar para utilizar. Você dá um APT Instaure, e esse que é o legal do DB, é o APT feito lá pelo... pelo... Iamordoc, né? Que faleceu ano passado, não lembro. Então legal, a gente colocou. Aí para utilizar, deixa eu ver se eu consigo acessar a página web só para mostrar um exemplo de uma rede neural básica, que o Hello World para a rede neural é uma técnica, é um assunto chamado Portas Lógicas, especificamente a porta lógica SHORE. Então ele consegue fazer um treinamento de uma rede neural para aprender o SHORE. Porque todo mundo sabe que o SHORE, a separabilidade dos pontos ali é porque não dá só com uma reta separar os pontos. Nos anos passados, em outros eventos assim, a gente faz uma oficina sobre isso daqui, explicando detalhadamente na medida do possível do tempo, o rede neural, o SHORE e tal. Mas se a gente acessar esse site aqui, ali vai ter vários exemplos. Acho que tem na internet, aqui no Físil do ano retrasado eu me instalei a uma palestra lá chamada Rede Neural Fácil com... Rede Neural Fácil assim, usando o Libfunk, que basicamente eu fiz isso. Eu entrei nesse site, copiei, colei e executei, que é o Hello World, que é o problema do SHORE. É da eletrônica mais ali, e aqui que são os fontes que ele libera. Aí bem aqui você tem várias coisas, e aqui embaixo você vai ter exemplos aqui. Lembrando que essa página aqui não tem nada a ver com o Debian. Esse aqui é um projeto separado e o Debian pegou esse código e colocou o pacote pra dentro do sistema ali. Então esse aqui é o código. Primeiro você precisa de um treino, todo mundo sabe que pra trabalhar com inteligência artificial, principalmente com reconhecimento de padrões, a gente precisa ter e sem dados não rola. Colocar teste.c aqui, opa, teste.c não. Aqui seria teste SHORE. DATA de dados ali. Então esse aqui vai ser o dado de coisa. O SHORE funciona assim, né? São quatro treinos, duas entradas e uma saída. E aqui no caso que eu vou mudar, se for 0 e 0 vai ser 0. Isso aqui eu não vou explicar. Eu só vou colocar aqui só pra executar o programa porque o foco não é explicar como é que funciona a rede neural. Então isso aqui, 0 e 0 é 0, 0 e 1 é 1, 1 e 0 é 1 e 1 é 0. São quatro treinamentos, quatro treinamentos e duas entradas e uma saída. Isso aqui é o dado porque a rede neural é supervisonada. Então eu explico primeiro e peço pra ele treinar pra ele aprender isso aqui. Pronto. Então agora eu vou pegar um tipo, um treino, ponto C e aí eu copio e coloco aqui o código. É... Claro, tem uma teoria gigantesca por trás disso daqui. Isso aqui é só a parte prática. Tipo, se você quiser fazer um TCC ou fazer a tua dissertação lá do mestrado, ou a tua especialização. Principalmente a especialização, né? Tipo, você tem que ter uma coisa prática no final. Isso aqui é perfeito. Aqui é um neurônio de 2, 2 neurônios de entrada, um neurônio de saída, ou seja, 2 entradas, uma saída, 0 e 0 e uma saída, 0. Aqui são 3 camadas e aqui são um número de camadas escondidas. E aqui tem um número de vezes que você vai meter porrada no moleque, que são 500 mil vezes que você vai apanhar. Tipo, depois de 500 mil você fala assim, ah, não tem como, não, deixa quieto. Aí tu desiste do menino e vai atrás de outro. E aqui é um treinamento em si. Ele faz o back propagation lá. E olha só como é simples, ele só faz o training. Fun train. E aí ele vai através desse arquivo que eu criei. Aí ele vai gerar um .NET no final e ele vai salvar em arquivo. Isso, ó. Aí pra executar é só você fazer GCC. Será que tem? Será que tem aqui? Ah, tem. Então você faz GCC menos O. GCC é como é que é treino. .C menos O treino. E aí a dica é se no DEB aqui, quando você fizer isso, ele vai dar uma porrada de erro. Então você tem que colocar a varela de ambiente pra poder você conseguir compilar isso. Acho que é config, menos menos C flags, menos menos Libs, acho. E eu pensei, é, eu pensei ver ou tô confundido com não, isso aqui é mais simples. Isso aqui é pro OpenCV, nada a ver. É só você colocar L e F. Aí ele compila. Só. Aí eu vou executar treino.C. Pronto, treinou. Ele demorou 66 vezes até a regional aprender. Ou seja, eu fiz isso aqui com o DEB, sem precisar de ter face gráfica, sem precisar de nada. Tipo maneira muito simples, muito fácil porque você tem uma rede neural treinada básica aqui. O que que difere uma aplicação de outro? Só os dados. Eu na oficina que eu ministro lá é sobre short, né? Então a gente pega um monte de letrinha, a gente pega o pixelzinho de cada letrinha assim, coloca num arquivo gigante. Esse arquivo aqui foi pequenininho, né? No caso a gente trabalha com arquivos gigantes, tipo se for 50, 50 letras vão ser 50 aqui em cima quantas entradas? Geralmente uma imagem 25 por 25 se você pegar 25 por 25 e colocar só numa linha, ele vai ficar 625 entradas. Então eu coloco 625 entradas aqui. E tipo dependendo da letra do padrão que tem ali, você pode ser A, B, C, D sei lá, então você vai ter só uma saída. Se analisa aquele padrão se tiver, se for o padrão de A, então vai ser só uma saída que vai ser A. E aí tipo vai ser assim mais ou menos. E claro, aqui num 2, aqui no caso vai ser 225. Não, é só 0 e 1, que é só preto e branco, enfim. Aí geralmente assim, preto é 0 e branco é 1. Isso aqui é só pra explicar que esse troço dá pra fazer com débil de uma maneira muito simples. Como eu trabalho com web no trabalho lá que eu estava fazendo, isso aí foi em 2013 que eu comecei a olhar isso aqui. Lá no meu trabalho que eu tinha que fazer tinha que trabalhar com web, né? Que trabalho com web, inteligência artificial. Então como é que eu pego esse negócio de jogo pra internet? Simples. Primeiro eu tenho que ter o PHP, que eu trabalho com o PHP também, né? Inclusive tem uma palestra lá no PHPConf, esse dono retrasado lá, que eu explico, tem uns vídeos na internet sobre isso. E aí eu coloco o PHP dev, dom enter, e aí ele vai baixar aqui os códigos. E aí o que que eu fiz? Eu tenho que entrar aqui no, se eu colocar aqui, ó como é que é ddg.gg porque pra eu não acessar, putz, apareceu. Pronto. Se eu coloco GitHub não, GitHub não, se eu coloco fun e PHP. A primeira logo ali, ó parece aqui, ó, do PHP aí logo embaixo você vai ter um short, tal, não sei o que, e bem você vai ter o GitHub que ele explica como que faz aqui, ó, esse tal de buco aqui, que é o, é o wrapper. O wrapper é o seguinte, você tem um código feito em C e tem o PHP, que é uma linguagem de programação pra web, tá, bem famosa, a mais utilizada no mundo atualmente. Facebook é feito em PHP, uma modificação no PHP ali. É, daí você tem que fazer uma comunicação entre o PHP e o C. Como é que você faz? Você precisa colocar uma camada ali que vai fazer essa compilada no C e pega só o resultado. O nome de C é wrapper, o pessoal trabalha muito com isso. Facebook fez isso naquela época porque o PHP sozinho na época do 5, 4 lá, ele era muito lento em escala, né, ele não escalava. Só que daí a galera compilava em C e aí o PHP pegava bilhão lá o compilado em C. E é a mesma coisa que a gente vai fazer. E como é que você faz isso aqui no PHP, né, aqui no Debian? Então eu vou aqui, aqui tem o código fonte em C e tal, a licença, uma licença livre. Então aqui você vai ter códigos .c e código .php. E aqui você tem, ó, instale o Libfandave pra você fazer isso. E bem, aqui você tem o GitHub aqui, ó, recursivo. Então você copia. Essa é só um exemplo. Essa é só um exemplo aqui. Enquanto tá instalando, você tem uma parte que quer isso aqui, ó, identificação de face. Facebook, por exemplo, ele vai lá e tem identificação de face, certo? Como é que o Facebook faz identificação de face? Chega o web, ele identifica uma face. É uma técnica lá que eles utilizam pra identificar a face de uma maneira bem simples utilizando o OpenCV. E o OpenCV dá pra fazer, dá pra usar aqui também. O que é que fez? Que se chama FaceDetect. Acho que se você entrar lá no pacote, .deb, .org, .faceDetect. Já é essa biblioteca feita em C com OpenCV empacotada ali, né? Ó, ele tem a partir do DS, BackPort, a partir do Stretch, padrão. Então ele é uma biblioteca que consegue trabalhar com o que você consegue fazer. FaceDetect borre a cara das pessoas dessa foto. Aí você dá um enter e vai borrar. De uma maneira bem simples. Ó, pra instalar esse FaceDetect é só fazer isso aqui. FaceDetect já tá empacotado até. Aí ele vai instalar. E repara que ele vai instalar também as bibliotecas do OpenCV, porque ele vai utilizar usando o OpenCV, né? Ó, LibCV, Lib OpenCV e tal. Beleza, então já acabou aqui, né? Agora eu vou pegar aquele GitHub pra baixar o PHP Fun, o Rapper, né? Tô baixando o código fonte do Rapper. No momento que eu baixei, eu vou acessar aqui, ó. PHP Fun. Aí ele vai ter esse código em C e tal. Se você entrar aqui, você consegue ver o código fonte feito em C que o pessoal lá fez, que é aquele book que ela fez. Fun.C Ó, gigante. Enfim, e aí eu preciso fazer o quê? Eu preciso utilizar o PHP Easy aqui dentro. Aí ele vai gerar os os programas de pondo configure make, make, install lá lá do GNU e tal. E aí você faz o quê? Configure e aí ele vai verificar se o sistema suporte eu compilar esse programa, né? Só pra falar que o GCC é do GNU, né? O GCC, esses comandos que eu tô usando o LES, essas coisas do Core Utils. Enfim, make e make também é do GNU. E aí ele tá compilando, ó. Acabou. Agora eu vou dar uma instalada. Make, install. E pronto. Agora ele colocou uma extensãozinha no meu Apache. Aí eu vou lá numa Apache e vou colocar essa extensão aqui. Eu vou ativar essa extensão. GCC barra apt opa, etc. Acho que é PHP, PHP 7 Ah, eu tenho que instalar o PHP ainda. Apache 2 PHP. Ou seja, o que aconteceu naquela hora ali foi assim. Ele criou uma extensão do Apache que possibilita o PHP reconhecer fazer a conexão com o Face, com o FAN lá. Vocês estão vendo o problema que tá dando aqui pra fazer tudo isso daí, né? Tipo, é muito chato, tá? Ficar compilando e tudo. Seria legal. Eu tive que colocar ponto configure, make, make, install. Não pensei programar nada. Eu simplesmente só coloquei configure, make, make, install, compilheza, coteia e tal. Instalei e tudo. Qual que é a parada da palestra só pra encerrar aqui? Apesar esses códigos e não o usuário não quer, a pessoa que vai usar, não quer instalar. É compilar e usar, sei lá. Ele quer um negócio um pouco mais fácil. A PT install PHP FAN. Olha só, aí eu tenho que fazer isso aqui. Nano, barra etc. PHP 7 Apache 2 PHP IN. Embaixo, eu tenho que ir lá no é adicionar uma extensão aqui extensio, igual FAM.sio que é a extensão aqui. Agora eu só dou uma reiniciada na apache serve-se apache 2 restart Pronto. Tá, tá, tá. O módulo da rede neural foi ativado no PHP. Agora eu vou fazer recostimento de pressão facial usando web. Eu posso utilizar rede neural pra web de uma maneira bem simples assim. Só que isso aqui é muito complicado de fazer. Seria interessante se eu fizesse um pacote disso daqui e jogasse lá pro servidor do débio pra na próxima vez que fazer tudo isso daqui na mão, eu faria isso aqui. A PT install PHP FAN. Se eu der um enter aqui, isso não existe. E é isso que eu tô fazendo atualmente pra eu contribuir com o débio. Eu não sou DM nem em DD, mas eu quero ser no futuro um DM, pelo menos, pra fazer pacotes e tal. Agora, um doutorado, tipo a gente não foca muito nisso. Mas depois do doutorado eu quero pegar esse pacote que eu tô fazendo e tentar pedir um esponso pra enviar lá pro débio. Essa é a parte legal do débio. Só pra avisar que antigamente tem esse daqui, ó. Da mesma forma como fiz com a rede neural, tem com Face Detect. E ó, é a mesma coisa, é um wrapper do PHP com OpenCV pra identificar fácil. Que tá aqui, é a mesma coisa. Você baixa, configure, make, make style, abre o Apache, coloca lá. Só que alguém lá no passado já empacotou. Se eu colocar aqui no débio, PHP Face Detect, ele já tá ali, ele já existe a partir do stretch. E no caso quem fez isso foi o time de PHP, claro, né. Aqui, ó. O time de mantenedores do PHP, que é isso aqui que eu vou mandar pra essa galera, pra galera enviar lá pro débio. E agora se eu fizer isso aqui, ó, PHP Face Detect, por exemplo. Vê, eu de cima não tenho, eu tô fazendo de cima lá, espero que ninguém faça até antes deu enviar pra lá. Detect Face é horrível. Face Detect E ó, já tá no repositório, é só dar um entro. Isso é isso. Beleza, então essa que é a parada de inteligência artificial e débio. Tem muito pacote aqui, isso aqui eu só mostrei dois pacotes, que é o Face Detect e o LibFan. Só que tem muito pacote de inteligência artificial rodando. Tem pra fãs, tem pra ontologia, tem pra processamento de linguagem natural, que é utilizando Python, e tem um monte. Aqui eu só mostrei como que você pode contribuir na área de inteligência artificial empacotando uma coisa que tá jogada aí que você usa, mas que seria legal você enviar pro débio. Acho que é isso aí. A gente tem 4 minutinhos de fala ainda, né, que a próxima vai começar 2 horas, né? Sim, eu acho que sim. A gente vai fazer um pegar esse final aqui pra quem quiser tirar uma dúvida, alguma questão, assim, sobre o débio inteligência artificial de qualquer área aí, e se a gente puder responder, a gente responde. Alguém tem alguma dúvida, alguma pergunta? Aproveitando esses 4 minutos aí, o nome é ah, tem uma biblioteca que é feita em Java, que tem a maioria dos classificadores já implementados. O nome de ser bem famosa, ela se chama OECA, né? A PT Instal OECA. O OECA é lá da Nova Zelante OECA. Isso aqui é feita em Java. Quem tá fazendo o projeto de teria artificial de classificação utilizando o Java, ele libera um ponto jar que você pode utilizar lá em port, o EECA, ponto bias, enfim, e já tá tudo implementado. Então tá aqui. Então isso aqui é feita em Java da licença GPL. Então você baixa aqui, aí tem o código fonte e tudo. Então o que galera fez do débio? Galera foi lá e empacotou também. OECA. Já tá aqui. Então, tipo, o OECA também já tá empacotado. Alguém pegou, empacotou e julgou lá. Aí tu não precisa entrar no site do EECA, baixar e executar, enfim. E aqui tem muito, muito classificador. Só vamos dar uma iniciada aqui. A diferença de um pacote para um código fonte é que o pacote já tá o binário, já tá compilado certinho lá dentro. Essa aqui é a única diferença dos dois. E já tá tudo certinho pra funcionar aqui dentro do débio. Ó, esse aqui é o EECA. Explore. Isso que é feito em Java naquele padrão, né? E aqui. E aqui tem os classificadores. Aqui eu só preciso, tipo, tenho um... Eu carrego aqui os meus dados de... Os dados que eu vou utilizar para treinar ou alguma coisa assim. E aqui tem os classificadores. Tem clãs, tem associações e tudo. No classificação tem tudo que você imaginar de classificador aí, baes, é rede neural, é árvore de decisão, aquele Vecto machine lá, que o pessoal utiliza bastante, tá tudo aqui. Tem fã, é, tem rede neural e tem tem fãs e também tem e tem outras técnicas aqui. Tudo que tá imaginado tem aqui no EECA. Então você pode fazer em C, PHP, Java, tudo tem no débio, tudo. Beleza? Então é isso. Pessoal, muito obrigado pela participação de vocês e qualquer coisa. O meu contato é esse aqui. Muito obrigado. Boa tarde pra vocês.