Baixe o app para aproveitar ainda mais
Prévia do material em texto
Carlos Eduardo Baldoíno Lucas Martins Sabaidni ALGORÍTMO DE IDENTIFICAÇÃO DE IMAGENS ATRAVÉS DA IMPLEMENTAÇÃO DE RNA Trabalho apresentado à disciplina de Inteligência Artificial do curso de Engenharia de Computação, do Centro Universitário de Votuporanga – UNIFEV, ministrado pela Prof.ª Ms. Patricia Salles Maturana de Souza, como obtenção parcial de nota referente ao segundo bimestre. Votuporanga, 24 de novembro de 2016. LISTA DE TABELAS Tabela 1 - Imagens de Treinamento ......................................................................................... 13 LISTA DE FIGURAS Figura 1 - Sequência de dígitos manuscritos .............................................................................. 8 Figura 2 - Treinamento de dígitos manuscritos .......................................................................... 9 Figura 3 - Hiperplano entre dados de duas classes .................................................................. 11 Figura 4 - Fatkun Batch Download Image Plugin .................................................................... 12 SUMÁRIO 1. INTRODUÇÃO ...................................................................................................................... 5 2. OBJETIVOS ........................................................................................................................... 6 2.1 OBJETIVO GERAL ............................................................................................................. 6 2.2 OBJETIVOS ESPECÍFICOS ............................................................................................... 6 3. METODOLOGIA ................................................................................................................... 7 4. RECONHECIMENTO DE IMAGENS ................................................................................. 7 4.1 REDES NEURAIS ............................................................................................................... 7 5. ALGORÍTMO IMPLEMENTADO ....................................................................................... 9 5.1. LINGUAGEM DE PROGRAMAÇÃO............................................................................... 9 5.2. REDE NEURAL ARTIFICIAL (RNA) ............................................................................ 10 5.3. CLASSIFICADOR DE TREINAMENTO ....................................................................... 10 5.4. BANCO DE IMAGENS (DATASET) .............................................................................. 11 6. CONCLUSÃO ...................................................................................................................... 14 7. REFERÊNCIAS ................................................................................................................... 15 5 1. INTRODUÇÃO A espécie humana evoluiu, e continua evoluindo, agora somos Homo Sapiens (homem sábio), um punhado de poeira cósmica capaz de manipular, prever, perceber o mundo ao seu redor e principalmente aprender através de inúmeros estímulos físicos e emocionais. Já faz algum tempo que tentamos entender como somos capazes de pensar, cientistas afinco se aprofundam cada vez mais nos labirintos do intelecto, ainda em grande parte sem respostas para muitas dúvidas que nos cercam. A inteligência para nós, humanos, contiua protagonizando nossa ascensão, por isso é alvo de tantos estudos, e um desses é a inteligência artificial, ou apenas I.A., buscando não apenas interpretar como aprendemos, mas também a construí-la artificialmente ao nosso benefício. A I.A. é bastante recente nas áreas de ciências e engenharia, sendo que seus estudos foram principiados logo após o fim da Segunda Guerra Mundial, impulsionados pelo invento do matemático Alan Mathison Turing, que desenvolveu uma máquina (Máquina de Turing) capaz de realizar operações de leitura, escrita e exclusão de símbolods binários através de número finito de estados contidos em uma fita. Inicialmente esse termo foi proposto pelo cientista da computação John McCarthy em 1956, consistindo na ciência da engenharia capaz de fazer máquinas inteligentes, especialmente programas, baseando-se na inteligência humana, porém não necessitando se limitar nas fronteiras biológicas observáveis. I. A. é simplesmente uma espécie de inteligência, similar à humana, tenta simular as capacidades de raciocínio, aprendizagem, reconhecimento de padrões e inferência, porém ainda muito distante de reproduzir nossa capacidade por completo. É empregada em máquinas, que analisam dados disponíveis e, de acordo com sua programação, tomam determinadas atitudes ou exibem uma resposta que consideram próxima ou igual à solução ideal. Atualmente abrange enorme gama de subcampos, estendendo-se desde aprendizagem e percepção, até tarefas bem específicas, como por exemplo uma partida de xadrez, demonstrações de teoremas matemáticos, a condução de veículos automotores, diagnósticos de doenças, enfim, I.A. pode ser aplicada nas mais inusitadas tarefas. A área de processamento de imagens tem sido alvo crescente de interesse na utilização de I.A., por viabilizar grande número de aplicações que permitem análise automática de padrões em cenas capturadas. Através da implementação de algorítmos com redes neurais, 6 é possível “treinar um computador” para que reconheça um terrorista pelas câmeras de segurança do aeroporto, por exemplo. O presente trabalho apresenta o implemento de um algorítimo para reconhecimento de padrões, onde os processos de identificação e de classificação serão obtidos através de técnicas de processamento de imagens e do uso de redes neurais artificiais. Esses padrões serão obtidos através do treinamento da rede neural, por meio de um banco de imagens pré- selecionadas que contém as características dos padrões procurados. 2. OBJETIVOS 2.1 OBJETIVO GERAL Implementar um algorítmo de reconhecimento de imagens, utilizando RNA (Rede Neural Artificial), capaz de detectar qual personagem do desenho animado Pokemon está sendo mostrado. 2.2 OBJETIVOS ESPECÍFICOS Conceituar rede neural e buscar suas definições; Pesquisar as principais redes neurais existentes; Implentar algorítimo de reconhecimento de imagens; Realizar testes para verificar o funcionmenteo do algorítmo; Apresentar os resultados. 7 3. METODOLOGIA O presente trabalho será realizado após pesquisa bibliográfica, buscando compreender os temas vinculados com o assunto principal, sendo este a forma de implementação de redes neurais artificiais. Para tanto utilizará-se dos conceitos dos autores considerados autoridades na área, como os pesquisadores de inteligência artificial Stuart Russell e Peter Norving, e também o cientista da computação Michael Nielsen. Para auxílio complementar, alguns tópicos evolucionários citados pelos autores Tyson Neil de Grasse e Donald Goldsmith farão parte da construção textual, que sustentará algumas definições. Recursos de áudio-visual, como o excelente canal Peixe Babel, que aborda o tema reconhecimento de imagens, será utilizado como forma de referência. Após a pesquisa nos livros e contéudos digitais iniciará-se o desenvolvimento de um programa em linguagem Python, com lógica estruturada em rede neural artificial, objetivando detectar em imagens a presençade personagens do desenho animado “Pokemon”. Ao final da implementação, uma bateria de testes garantirá se o algorítmo conseguiu aprender os padrões dos personagens do desenho. 4. RECONHECIMENTO DE IMAGENS 4.1 REDES NEURAIS Todo ser humano carrega consigo um “supercomputador” que denominamos de cérebro, essa máquina biológica está sendo aprimorada conforme a evolução em milhões de anos, adaptando-se ao meio para compreender visualmente cada vez mais o que lhe cerca. Grande parte das pessoas é capaz de reconhecer de forma rápida uma sequência qualquer de dígitos, como por exemplo os contidos na Figura 1. 8 Figura 1 - Sequência de dígitos manuscritos Fonte: NIELSEN, Michael1 Aparentemente é uma tarefa simples, não há grande esforço, pois tudo é feito inconscientemente. Porém essa facilidade é superficial, o processo de identificar esses símbolos em padrões que façam algum sentido requer em nosso cérebro a utilização de uma área específica, conhecida como Córtex Visual Primário. Essa região contém aproximadamente 140 milhões de neurônios, com bilhões de conexões entre eles. Entretanto, a visão humana envolve não somente um córtex, mas uma série de córtices visuais, assemelhando-se a grosso modo aos núcleos de um processador, que trabalham em conjunto processando as imagens captadas. Dessa forma, a tecnologia de processamento de imagens, tenta da melhor forma possível, reproduzir o que nosso cérebro é capaz de fazer quase que instintivamente, analisar uma imagem captada, detectar algum padrão específico e produzir uma saída desejada. Tornar esse processo artificial de reconhecimento visual de padrões é extremamente complexo. Imagine, por exemplo, o número 9, sua representação gráfica sugere um círculo na parte superior, assemelhando-se à um loop, seguido de uma linha, que pode ser curva ou linear, iniciando na direita do círculo, estendendo-se na mesma proporção do diâmetro do círculo. Todos esses detalhes são captados pelo cérebro, identificando rapidamente um padrão conhecido, através dos bilhões de neurônios e suas conexões. Parar recriar esse mecanismo artificialmente, os detalhes do objeto que deseja-se analisar precisam ser convetidos em regras bem definidas, e implementado num algorítmo capaz de processar de forma lógica os dados captados. Esse algorítmo necessitará de um formalismo matemático, capaz de “aprender” com os chamados “exemplos de treinamento”, ou seja formar uma rede neural. 1 Disponível em: <http://neuralnetworksanddeeplearning.com/chap1.html>. Acesso em 07 de nov. 2016. 9 Figura 2 - Treinamento de dígitos manuscritos Fonte: NIELSEN, Michael2 Na Figura 2, temos 100 exemplos de números manuscritos, cada qual possui um determinado traço, porém todos seguem um mesmo padrão, dessa forma a rede neural utiliza esses exemplos para “aprender” a identificar o número 9, por exemplo. Aumentando o número de exemplos, pode-se melhorar cada vez mais a precisão dessa rede. 5. ALGORÍTMO IMPLEMENTADO 5.1. LINGUAGEM DE PROGRAMAÇÃO A linguagem de programação Python será utilizada para implementar o algorítmo de detecção de imagens. É uma linguagem de altíssimo nível, orientada a objeto, de tipagem dinâmica e forte, interpretada e interativa, também possui uma sintaxe clara e concisa, que favorece a legibilidade do código fonte, tornando a linguagem mais produtiva, afirma Borges (2010). 2 Disponível em: <http://neuralnetworksanddeeplearning.com/chap1.html>. Acesso em 07 de nov. 2016. 10 Essa linguagem é interpretada através de bytecode da máquina virtual Python (código intermediário entre as linguagens: natural, programção e máquina), transformando o código totalmente portável, dessa forma é possível compilar aplicações em alguma plataforma e executá-la em outros sistemas ou rodar diretamente do código fonte. Também é possível, se necessário, integrar o Python com outras linguagens, como por exemplo a Linguagem C ou Fortran. Em suma, a linguagem apresenta muitas semelhanças com outras linguagens dinâmicas, como Perl e Ruby. 5.2. REDE NEURAL ARTIFICIAL (RNA) Rede Neural Artificial (RNA) é basicamente um modelo computacional que se assemelha ao funcionamento do sistema nervoso central de um animal, mais especificamente ao cérebro humano. Essa rede é capaz de realizar aprendizado de pardrões, definidos através de características que se deseja abstrar de um objeto qualquer. Há inúmeras redes disponíveis para implementação, no presente trabalho será utilizada a rede VGG19, sendo esta muito eficaz na extração das características de aparência em imagens vetorizadas. 5.3. CLASSIFICADOR DE TREINAMENTO Para que o algoritmo seja capaz de identificar as imagens desejadas, é necessário primeiramente classificar suas características (cor, largura, comprimento, distorções). Para isso é fundamental fornecer um conjunto de imagens (Dataset) que contém o maior número de imagens distintas com essas características, para que o algorítmo “aprenda”, e possa identificar um padrão, utilizando-o para identificar a imagem desejada. Dessa forma será utilizado a Máquina de Vetores de Suporte, do inglês Support Vector Machines (SVM), que segundo Readhead (2014), consiste no método de aprendizagem de máquina que obtém dados de entrada e tenta classificá-los em categorias. Para exemplificar esse conceito, veja a Figura 3. 11 Figura 3 - Hiperplano entre dados de duas classes Fonte: Página Web Wikipedia3 Suponha que todas as estrelas são dados de entrada, após o treinamento utilizando a SVM, o algoritmo identificou que as estrelas de cor azul possuem um tipo de característica, e as de cor vermelha outra característica, dividindo-as em duas categorias. 5.4. BANCO DE IMAGENS (DATASET) Para o treinamento da rede neural será criado um banco de imagens, conhecido como Dataset, contendo ao todo 100 imagens que apresentam as características das imagens que queremos identificar. Para tanto será utilizado o plugin do navegador Google Chrome Fatkun Batch Download Image, possibilitando salvar várias imagens ao mesmo tempo, como mostra a Figura 4. 3 Disponível em: <https://pt.wikipedia.org/wiki/M%C3%A1quina_de_vetores_de_suporte>. Acesso em 07 de nov. 2016. 12 Figura 4 - Fatkun Batch Download Image Plugin Fonte: Página do Chrome Web Store 4 A rede neural será treinada para identificar os seguintes personagens do desenho animado Pokemon: Bulbasaur, Charmander, Pikachu, Squirtle. Acompanhe as ilustrações contidas na Tabela 1. Nessa etapa de treinamento, a rede neural identifica as principais características que cada figura contém, por exemplo, a personagem Pikachu possui cor amarela, um rabo semelhante à um raio, olhos pretos com interior branco, orelhas pontudas com detalhe preto, pés e braços pequenos juntos ao corpo, duas manchas vemelhas nas bochechas e dois detalhes na lateral direita. Dessa forma, com todas esses informações, é possível criar um padrão para essa personagem, e compará-lo com outras imagens para identificar outros Pikachus. 4 Disponível em:<https://chrome.google.com/webstore/detail/fatkun-batch-download- ima/nnjjahlikiabnchcpehcpkdeckfgnohf>. Acesso em 07 de nov. 2016. 13 Tabela 1 - Imagens de Treinamento Bulbasaur Charmander Pikachu Squirtle Fonte: Autores. 14 6. CONCLUSÃO Finda a implementação do trabalho, constatou-se que o algorítmo de rede neural artificial cumpriu com seu objetivo de identificar as personagens (Bulbasaur, Charmander, Pikachu, Squirtle) do desenho animado Pokemon. Para que essa tarefa fosse possível, foi codificado através da linguagem de progamação Python, a RNA vgg19, e para o treinamento da rede, ou seja, absorção das características desejadas, utilizou-se o classificador SVM, atuando no Dataset com 100 imagens de cada personagem, a fim de obter-se um padrão. Portanto, com o presente trabalho verificou-se a importância das redes neurais na identificação de imagens, que podem ter inúmeras aplicações, como por exemplo no campo medicinal, identificando padrões de doenças e propiciando diagnóstico rápido do profissional da saúde. 15 7. REFERÊNCIAS BORGES, Luiz Eduardo. Python para Desenvolvedores. Rio de Janeiro, Edição do Autor, 2010, p.360. FILHO, Ogê Marques; NETO, Hugo Vieira. Processamento Digital de Imagens. Rio de Janeiro: Brasport, 1999, p. 331. GRASSE, Tyson Neil de; GOLDSMITH, Donald. Origins: fourteen billion years of cosmic evolution. SãoPaulo: Planeta do Brasil, 2015. 384 p. LIMA; Edirlei Soares de. Inteligência Artificial. Disponível em: <http://edirlei.3dgb.com.br/aulas/ia_2011_2/IA_Aula_01_Introducao.pdf>. Acesso em: 04 nov. de 2016. LORENA, Ana Carolina; CARVALHO, André C. P. L F. de Carvalho. Introdução às Máquinas de Vetores Suporte (Support Vector Machines). Instituto de Ciências Matemáticas e de Computação: São Carlos, 2003, p. 66. MCCARTHY; John. What is Artificial Inteligence? Disponível em: <http://www- formal.stanford.edu/jmc/whatisai/>. Acesso em: 04 nov. de 2016. NIELSEN, Michael. Neural Networks and Deep Learning. Determination Press, 2015. PALMIERE; Sérgio Eduardo. Inteligência Artificial: Introdução. Disponível em: < http://www.embarcados.com.br/inteligencia-artificial-introducao/>. Acesso em: 04 nov. de 2016. PEIXE BABEL. “Quem é esse Pokemon?” - Reconhecimento de Imagens. Disponível em: <https://peixebabel.com.br/2016/09/14/quem-e-esse-pokemon-reconhecimento-de-imagens- peixe-babel-91/>. Acesso em 07 nov. de 2016. READHEAD, Josh. Aprendizagem de Máquina: Como as máquinas de vetores de suporte podem ser utilizadas nas negociações. Disponível em: <https://www.mql5.com/pt/articles/584>. Acesso em 07 nov. de 2016. 16 RUSSELL, Stuart.; NORVING, Peter. Artificial Intelligence. Rio de Janeiro: Elsevier, 2013; 1324 p. ZUBEN; Fernando J. Von. Introdução à Inteligência Artificial. Disponível em: <ftp://ftp.dca.fee.unicamp.br/pub/docs/vonzuben/ea072_2s13/introducao_EA072_2s2013.pdf >. Acesso em: 04 nov. de 2016.
Compartilhar