Upload
daniel-vecchiato
View
1.157
Download
1
Embed Size (px)
DESCRIPTION
RedesNeurais Artificiais para reconhecimento de padrões em imagens de satélite..
Citation preview
ANHANGUERA EDUCACIONAL SA. Faculdade Anhanguera de Valinhos Curso de Ciência da Computação
André Luiz Pitante, Daniel Vecchiato e
Felipe Kaufmann Corrêa
Redes Neurais para a Identificação de Padrões em Imagens de Mapas
Valinhos 2008
André Luiz Pitante, Daniel Vecchiato e
Felipe Kaufmann Corrêa
Redes Neurais para a Identificação de Padrões em Imagens de Mapas
Monografia apresentada, como exigência parcial para a obtenção do grau de Bacharel em Ciência da Computação, à Faculdade Anhanguera de Valinhos, sob a orientação do prof. Esp. Maurício Rodrigues de Morais.
Valinhos 2008
André Luiz Pitante, Daniel Vecchiato e
Felipe Kaufmann Corrêa
Redes Neurais para a Identificação de Padrões em Imagens de Mapas
Trabalho de conclusão de curso aprovado em 18 de dezembro de 2008 como exigência parcial para a obtenção do grau de Bacharel em Ciência da Computação da Faculdade Anhanguera de Valinhos, pela banca examinadora constituída pelos professores:
________________________________ Prof. Esp. Maurício Rodrigues de Morais
Orientador
________________________________ Prof. Dra. Jaqueline Brigladori Pugliesi
________________________________ Prof. Ms. Eduardo Nicola Ferraz Zagari
________________________________ Prof. Ms. Janaine Cristiane de Souza Arantes
Valinhos 2008
AGRADECIMENTOS
A todos os familiares, amigos, professores e colegas que ajudaram a realizar o
trabalho.
“Por pensar ser o trabalho mais difícil que
existe, só poucos se dedicam a isso.”
Henry Ford, 30.07.1863 - 07.04.1947
RESUMO
PITANTE, André Luiz; VECCHIATO, Daniel; CORRÊA, Felipe Kaufmann. Redes Neurais para a Identificação de Padrões em Imagens de Mapas. Valinhos 2008, 65 f. Monografia de trabalho de conclusão de curso (Ciência da Computação) FAV, 2008
O objetivo deste trabalho é o reconhecimento de padrões em imagens de
satélite, utilizando redes neurais artificiais. Como caso de estudo, optou-se por
identificar áreas verdes nas imagens de mapas tiradas por satélite. Tais imagens
podem ser escolhidas pelo usuário. As imagens utilizadas foram obtidas a partir
de ferramentas como o Google Earth e Maps. Um programa escrito em
linguagem Java foi usado para fazer a segmentação da imagem e o seu
tratamento, transformando a imagem em código binário gravado em um arquivo. A
importância deste processo de segmentação consiste em permitir que o programa
seguinte entenda a imagem, pois os arquivos de entrada só serão arquivos texto
com códigos em binário. Uma rede neural artificial criada para o trabalho, com o
uso do JavaNNS (Java Neural Network Simulator), foi treinada para que a área
verde pudesse ser identificada no mapa. A partir deste experimento conseguiu-se
obter resultados que demonstram que a rede foi treinada para identificar o padrão
de forma eficiente.
Palavras-chave:
áreas verdes, segmentação de imagem, Redes neurais artificiais
ABSTRACT
PITANTE, André Luiz; VECCHIATO, Daniel; CORRÊA, Felipe Kaufmann. Neural
Networks for Identification of Patterns in Images of Maps. Valinhos 2008, 65 p.
Monograph of completion of course work (Computer Science) ACF, 2008
The goal is to recognize patterns in satellite images, using artificial neural
networks. As a case study, we decided to identify green areas in the images of
maps drawn by satellite. Such images can be chosen by the user. The used
images were obtained from tools like Google Earth and Maps. A program written in
Java language was used to make the segmentation of the image and its treatment,
transforming the image into binary code stored in a file. The importance of this
process of segmentation is to allow the program to understand the image as the
input files only with text files in binary codes. An artificial neural network designed
to work with the use of JavaNNS (Java Neural Network Simulator) was trained for
the green area that could be identified on the map. From this experiment we were
able to achieve results that demonstrate that the network was trained to identify
the pattern efficiently.
Keywords:
green areas, image segmentation, artificial neural networks
LISTA DE FIGURAS
Figura 1 – Histórico do desmatamento...............................................................15
Figura 2 – Representação do Neurônio Biológico..............................................20
Figura 3 – Modelo de Neurônio Artificial.............................................................21
Figura 4 – Função de saída................................................................................22
Figura 5 – Função de Ativação...........................................................................22
Figura 6 – Função logística.................................................................................22
Figura 7 – Rede Neural Monocamada................................................................24
Figura 8 – Modelo de Rede Neural Múltiplas Camadas......................................24
Figura 9 - Diagrama de treinamento de algoritmo Backpropagation...................26
Figura 10 – Rede Neural não treinada................................................................28
Figura 11 – Interface de ferramentas para o treinamento...................................28
Figura 12- Rede Neural em processo de treinamento........................................29
Figura 13 – Saída de neurônios não ativada......................................................29
Figura 14 – Saída de neurônios ativada.............................................................30
Figura 15 – Exemplo de imagem não segmentada.............................................40
Figura 16 – Exemplo de imagem fragmentada...................................................40
Figura 17 – Imagem escolhida para gerar as amostras......................................41
Figura 18 – Fragmento da imagem colorida e preto e branca............................41
Figura 19 – Imagem preto e branca e código binário ao lado............................42
Figura 20 – Gráfico dos resultados.....................................................................44
Figura 21 - Gráfico de erro da rede neural durante o treinamento.....................46
Figura 22 – Rede Neural não treinada................................................................53
Figura 23 – Interface de ferramentas para o treinamento...................................53
Figura 24 - Rede Neural em processo de treinamento ......................................54
Figura 25 – Saída de neurônios não ativada .....................................................54
Figura 26 – Saída de neurônios ativada ............................................................55
LISTA DE TABELAS
Tabela 1 – Médias Obtidas pela técnica 10 fold Cross Validation, 300 ciclos......42
Tabela 2 – Médias Obtidas pela técnica 10 fold Cross Validation, 100 ciclos......43
Tabela 3 - Resultados pela técnica de 10 fold Cross-validation, 100 ciclos..........56
LISTA DE SIGLAS
INPE – Instituto Nacional de Pesquisas Espaciais
JavaNNS – Java Neural Network Simulator
RNA – Redes Neurais Artificiais
SUMÁRIO
1. Introdução ............................................................................................................. 11
1.1. Objetivo ........................................................................................................... 12
1.2 Proposta .......................................................................................................... 12
2. Pesquisa Bibliográfica ........................................................................................... 14
2.1. Diminuição das Áreas Verdes ......................................................................... 14
2.2. Análise da situação atual ................................................................................ 15
2.3 Ferramentas para Captura das Imagens ......................................................... 16
2.4. Segmentação de Imagens Digitais ................................................................. 17
2.5. Arquitetura de Redes Neurais Artificiais (RNAs) ............................................ 18
2.6 Treinamento ..................................................................................................... 25
2.7. Aprendizado de Máquina ................................................................................ 27
3. Trabalhos Correlatos ............................................................................................. 31
3.1. Integração entre redes neurais e correlação para a identificação de pontos de apoio pré-sinalizados. ............................................................................................ 31
3.2. Detecção de volume de tráfego de veículos proporcionada por visão computacional via redes neurais ........................................................................... 32
4. Metodologias ......................................................................................................... 34
4.1. Metodologia de Pesquisa ................................................................................ 34
4.2. Metodologia de Desenvolvimento de Software ............................................... 35
5. Desenvolvimento ................................................................................................... 36
5.1. Programa de Segmentação ............................................................................ 36
5.2. Projeto da Rede Neural .................................................................................. 38
6. Avaliações e Testes ............................................................................................... 39
6.1. Treinamento da Rede ..................................................................................... 39
6.2. Coleta dos Resultados .................................................................................... 42
7. Análise dos Resultados ......................................................................................... 44
8. Conclusão ............................................................................................................. 47
8.1 Limitações ........................................................................................................ 48
8.2 Trabalhos futuros ............................................................................................. 48
Referências Bibliográficas ......................................................................................... 50
Anexos ...................................................................................................................... 53
Anexo 1 – Visões do JNNS .................................................................................... 53
Anexo 2 – Dados brutos dos testes ....................................................................... 56
11
1. Introdução
Atualmente a questão do meio ambiente tornou-se um assunto importante,
tanto por parte das empresas quanto das pessoas. Grande parte da vegetação no
mundo foi devastada devido ao interesse pela madeira e pela utilização do espaço
para a produção agrícola. O acompanhamento dessa devastação é hoje facilitado
por meio de satélites que monitoram a superfície da terra, permitindo que se faça
o controle das áreas desmatadas de um país. Porém, são poucos os softwares
que fazem a análise das imagens de satélite e normalmente não são acessíveis
ao público. Esse tipo de aplicação pode gerar um custo bem elevado para ser
obtido e até existem empresas que fazem esse trabalho, mas é necessário pagar
uma taxa mensal para a realização deste estudo que tragam os resultados
atualizados.
Ao longo deste trabalho procurar-se-á apresentar como é realizada a
identificação de áreas verdes em imagens de satélite. Para isso a escolha do
grupo foi pela utilização de uma Rede Neural Artificial (RNA) que faça o trabalho
de reconhecimento do padrão, embora existam outras formas de realizar esta
tarefa. Outros métodos de identificação podem ser usados neste processo,
entretanto, com o estudo feito aqui, o mais adequado envolve um programa de
segmentação e outro para a criação da rede neural.
Além da rede neural artificial, são necessárias ferramentas para fazer a
captura da imagem, seu tratamento e sua segmentação. O Google Maps e o
Google Earth são as ferramentas gratuitas disponíveis na Internet, que fornecem
as imagens dos mapas a serem utilizados para os treinamentos e os testes. A
função da RNA é realizar o reconhecimento do padrão escolhido, no caso as
áreas verdes. Esta rede se assemelha com a rede neural biológica, a qual
identifica, por exemplo, uma pessoa e seu nome correspondente, sendo apta a
reconhecê-la novamente no dia seguinte.
O procedimento da segmentação da imagem é um processo que divide a
imagem em pedaços menores para depois tratá-los e simplificar o processo de
reconhecimento. Foram estudados códigos para a implementação de um
12
programa na linguagem Java que pudesse fazer o tratamento e transformar a
imagem em um código binário dentro de um arquivo. Este processo foi
necessário, pois o programa JavaNNS, usado para criar a rede neural, só aceita
arquivos em código binário como entrada. Os treinamentos e testes realizados
permitiram identificar a eficiência da RNA criada.
1.1. Objetivo
Hoje em dia existem várias aplicações de reconhecimento de padrões
implementadas para identificar objetos em imagens. Existem softwares que fazem
a identificação de rostos humanos com a ajuda de algoritmos baseados em redes
neurais artificiais. Esses sistemas são tanto usados em alguns aeroportos, quanto
em notebooks como identificação visual ao invés de usar uma senha para abri-lo.
A principal idéia é fazer a identificação da área verde em um mapa. Para
isso, o trabalho foi dividido em etapas, com um programa que captura a imagem
original tirada da Internet, com tamanhos definidos, converte em preto e branco e
depois a transforma em um arquivo binário que alimentará a rede neural. Além
disso, foi escolha uma ferramenta para criar uma RNA, que se mostrou um auxílio
valioso para este trabalho. No meio de várias opções de aplicativos que fariam
este processo, o JavaNNS foi a melhor opção, pois, além de ser um software
livre1, também traz uma gama de opções para criar e configurar uma rede. A rede
criada passa por uma fase de treinamento, para depois obter os resultados por
meio dos testes e, assim, identificar as áreas verdes.
1.2 Proposta
Este trabalho propõe uma solução para a questão da identificação de áreas
verdes em mapas por meio de softwares que utilizam recursos facilmente
encontrados no mercado. As ferramentas que disponibilizam gratuitamente as
imagens de satélite, como o Google Maps, foram usadas neste trabalho.
1 Software Livre, um programa de computador, que pode ser usado, estudado por programadores.
13
Qualquer outra ferramenta do gênero poderia ser utilizada, mas neste projeto foi
considerada a mais apropriada por possuir uma maior quantidade de imagens
atualizadas com boa qualidade.
A idéia principal para o trabalho, uma vez definida, precisa ser colocada em
prática. A região de Campinas foi escolhida para fazer a busca de áreas verdes.
Com isso definido, neste caso era necessário fazer a segmentação de imagem,
para depois passar a usar a rede neural para fazer a identificação do padrão.
Poucos recursos precisariam ser usados tanto financeiramente, quanto em
relação à configuração física no caso um hardware, um notebook facilmente
encontrado em lojas online a um preço acessível.
Em relação ao software, a ferramenta gratuita Google Maps, usada para
fazer a captura das imagens utilizadas no trabalho. O Gimp, um programa de
edição de imagens também gratuito, usado para fazer o corte das imagens no
tamanho compatível que será usado para o trabalho. O código aberto em
linguagem Java ajudou a criar o código que faz a parte de segmentação da
imagem, transforma primeiro em uma imagem preta e branca, separa em pedaços
e depois em um código binário. O último programa que também não tem custo é o
JavaNNS, que é responsável pela criação, treinamento e testes das redes neurais
artificiais.
Ao final deste trabalho será apresentado o resultado dos testes e análises
realizados, comprovando que as RNAs podem e devem ser utilizadas na tarefa de
reconhecimento de áreas verdes, bem como o fato de ser possível obter tais
resultados a um custo realmente baixo.
14
2. Pesquisa Bibliográfica
2.1. Diminuição das Áreas Verdes
As áreas arborizadas nem sempre são devidamente valorizadas nas
cidades, e, por causa disso, são escassas, apesar de existirem estudos que
apontem a importância das árvores para a redução das emissões dos gases
CO22, que são emitidos em grande parte pelos automóveis que contribuem com o
efeito estufa [O Estado de São Paulo, 08.12. 2007]. Nos parques de cidades são
encontradas mais áreas com vegetação, sendo lugares com uma temperatura
mais baixa.
A Amazônia está sendo seriamente devastada devido ao desmatamento
ilegal e também à falta de controle do mesmo. As plantações em grande
ascensão, como a cana-de-açúcar ou a soja, por exemplo, também são um
problema que pouco discutido. São poucos os produtores que buscam formas
alternativas para aumentar a produção sem ter que aumentar a quantidade de
área plantada. Outro problema também é a pecuária, que cresce conforme a
procura pela carne, tanto para o mercado interno como para a exportação.
Estudos do Instituto Nacional de Pesquisas Espaciais (INPE) [Estado de
São Paulo, 2008] mostram que o desmatamento aumenta a cada ano que passa e
áreas desmatadas em maior número estão concentradas na região do Mato
Grosso, Pará e Maranhão. As queimadas contribuem com três quartos das
emissões de CO2 do país devido às carvoarias na região, além de destruírem a
mata. Empresas que precisam de madeira para construir móveis, casas, podem
estar ligadas ao desmatamento ilegal que extraem madeira sem a permissão. O
governo também se mostra ineficiente na realização de algum tipo de controle na
região da Amazônia, mesmo havendo várias leis contra o desmatamento. Isso
tudo contribui com o aquecimento global, que é muito discutido fora do país,
apesar de ser um dos países que possui uma das maiores áreas de cobertura
2 Dióxido de Carbono
15
vegetal. A Figura 1 mostra um gráfico com o histórico do desmatamento.
Figura 1 – Histórico do desmatamento. (O Estado de São Paulo, dez 2008)
Este trabalho, que faz a identificação de áreas verdes, pode contribuir com
a reflexão em torno da questão do desmatamento, bastante presente no Brasil,
podendo auxiliar nas propostas de preservação e reflorestamento. Mesmo
havendo outros sistemas de maior porte, que fazem o controle como, por
exemplo, o Sistema de Detecção do Desmatamento em Tempo Real (Deter) [O
Estado de São Paulo, 2008], que avalia mensalmente a situação do
desmatamento brasileiro, este estudo pode fornecer uma proposta mais acessível
em termos financeiros. O Deter se mostra um recurso de custo muito elevado, no
que se refere ao acesso a esse tipo de dado.
2.2. Análise da situação atual
Hoje já existem várias empresas que possuem satélites ou mesmo
conseguem fontes de terceiros por meio de acordos, permitindo a realização de
mapeamentos de uma determinada região ou de um país. Algumas dessas
empresas fornecem essas fontes de dados, que são mapas, de forma gratuita. É
o caso da Google, que consegue fornecer gratuitamente mapas com fotos via
satélite com qualidade de serviços pagos ao público. Tanto o Maps quanto o Earth
possuem a mesma base de dados, sendo o segundo com alguns recursos a mais,
pois o primeiro é uma ferramenta que roda dentro do navegador de Internet.
Existem muitas ferramentas semelhantes a essas com a mesma proposta que
16
consistem na localização de endereços de interesse do usuário, ou na busca de
lugares que a pessoa gostaria de conhecer. Identificar áreas com mata atlântica
na região sudeste, por exemplo, para fazer uma análise de quanto uma área foi
devastada, criando assim, estatísticas conforme a área estudada.
Grandes empresas ou mesmo corporações fazem o uso desses recursos
para identificar áreas de interesse. Há empresas que utilizam a ferramenta para
localização, como é o caso da USS, que dá assistência às seguradoras de carros,
e faz a busca do guincho mais próximo ao local onde haja um carro que precise
ser retirado. A empresa constatou que houve uma redução do tempo de espera do
cliente e o retorno do guincho a sua central, havendo assim, uma economia em
termos de custo.
2.3 Ferramentas para Captura das Imagens
Para conseguir as imagens dos mapas, precisou-se fazer uso das
ferramentas de mapas como Google Maps e Earth. Ambas são gratuitas e com
isso é possível conseguir imagens de satélite de boa qualidade para a pesquisa
sem qualquer custo. As fontes destes aplicativos são satélites que tiram as fotos
de maior distância, enquanto as fotos mais próximas são tiradas de aviões. São
vários satélites que cobrem o mundo, com isso as fotos adquiridas são mescladas
para se obter um grande mapa. Ambos os programas utilizam a mesma base de
fotos, que é atualizada. O número de recursos de cada um varia em torno de cada
aplicação. Por exemplo, no Google Maps há um número reduzido de recursos por
ser um programa que roda no navegador de Internet. A escala de cada um
também se diferencia, sendo o Google Earth um pouco mais preciso que o
anterior, pois existem recursos como um medidor de distâncias, por exemplo, que
calcula conforme os pontos escolhidos no mapa. Além de outros recursos visuais
que tanto servem para embelezar a forma de como são explorados os mapas,
quanto para indicar um detalhe importante que pode ser mostrado por meio de
setas, por exemplo.
17
Além dos recursos supracitados foi utilizado o programa Gimp para recortar
um pedaço de uma imagem maior e colocar no tamanho de uma imagem
manipulável pelo programa de segmentação. O mesmo também foi necessário
para salvar as imagens capturadas, utilizando-se da tecla “Print Screen” que é
encontrada em qualquer teclado. Para fazer o tratamento da imagem antes de
poder passar ao programa que segmenta a imagem e depois a transforma em um
arquivo em binário, é necessário ter a imagem com um tamanho compatível. A
imagem adquirida da Internet é maior do que a necessária para o projeto. O
programa permitiu realizar o recorte de um pedaço da imagem. Depois a imagem
está pronta para ser passada para o programa que fará a sua segmentação.
2.4. Segmentação de Imagens Digitais
A segmentação de imagens é um dos principais processos da Visão
Artificial. O que ocorre nesse processo é uma análise, o uso de computador para
separar as regiões que compõem uma imagem, para que seja possível a extração
de suas características, como recortes ao redor de objetos ou espaços de
interesse.
A segmentação subdivide uma imagem em suas partes ou objetos de
interesse. Tal subdivisão é realizada levando-se em conta o problema abordado.
Algoritmos de segmentação permitem achar diferenças entre duas ou mais
regiões, e distingui-los uns dos outros, como um avião de um céu azul no fundo.
Outra característica da segmentação é atribuir um rótulo a cada pixel da
imagem, identificando-o a qual grupo ele pertence, de acordo com suas
características em interesse. Esses algoritmos são geralmente baseados em
valores de níveis de cinza, ou seja, as propriedades básicas descontinuidade e
similaridade que o compõem.
Existem diversas técnicas de segmentação de imagens, dentre as quais
existe a técnica por detecção de descontinuidades, por região ou limiar (threshold)
como descrito no conteúdo de João L. Sobral (Universidade do Minho – Portugal,
2002).
18
A técnica baseadas em limiarização (thresholding) é uma das mais
importantes do processo de segmentação de imagens por ser
computacionalmente mais utilizadas em comparação a outras técnicas. Tendo
como exemplo uma imagem f(x, y), composta por apenas dois objetos distintos,
sendo que, cada objeto possui uma média do nível de cinza bem diferenciada em
seu histograma.
Tais imagens podem ser facilmente segmentadas pela utilização de um
simples valor de limiar. Este limiar teria um valor intermediário entre as
concentrações de nível de cinza de cada objeto.
Esta é a técnica mais comum de limiarização, conhecida como limiarização
bimodal. Este processo também é denominado binarização. Se uma imagem f(x,
y) possuir um histograma multimodal, será necessário a determinação de valores
para mais de um limiar. Esta é a técnica é conhecida como limiarização
multimodal. É menos confiável que a bimodal, devido à dificuldade em estabelecer
múltiplos limiares que efetivamente isolem as regiões de interesse.
Para obter integridade na segmentação, as técnicas de limiarização devem
garantir a menor taxa de erro possível, ou seja, assegurar uma alta probabilidade
de que o pixel tenha sido corretamente classificado e que os dados segmentados
contenham a maior quantidade possível de informação útil.
A escolha de um valor pode ser difícil para casos em que as propriedades
espectrais dos dados não revelem informações suficientes. Sendo que em alguns
casos pode ser necessário determinar o número de limiares para a segmentação
de um volume de dados, quando sua natureza não é bem conhecida.
2.5. Arquitetura de Redes Neurais Artificiais (RNAs)
Redes Neurais Artificiais [UNISANTA, 2006] são modelos matemáticos que
simulam o funcionamento de redes de neurônio biológico. No entanto, para
entender o funcionamento das redes neurais artificiais, o funcionamento do
neurônio biológico precisa ser esclarecido.
Trata-se de uma técnica inspirada no funcionamento do cérebro [UFLA,
19
2006], onde neurônios artificiais conectados em rede são capazes de aprender e
generalizar. Técnica de aproximação de funções por regressão não linear isso
significa que se a rede aprende a lidar com certo problema, e lhe é apresentado
um similar, mas não exatamente o mesmo, ela tende a reconhecer esse novo
problema, oferecendo a mesma solução.
A característica mais significativa das redes neurais está em sua habilidade
de aproximar qualquer função contínua ou não contínua com um grau de
correção desejado. Esta habilidade das redes neurais as tem tornado úteis
para modelar sistemas não lineares.
Os principais componentes dos neurônios são:
Os dendritos, que têm por função, receber os estímulos transmitidos pelos
outros neurônios;
O corpo de neurônio, também chamado de soma, que é responsável por
coletar e combinar informações vindas de outros neurônios;
E finalmente o axônio, que é constituído de uma fibra tubular que pode
alcançar até alguns metros, e é responsável por transmitir os estímulos
para outras células.
Um neurônio biológico é uma estrutura celular formada por dendritos,
axônio e soma, compondo diferentes tipos de redes ou sistemas especializados,
assim como diferentes configurações celulares moldadas pela natureza, a fim de
atender certos critérios de especialização.
Segundo a definição encontrada em Stuart Russel e Peter Norvig, em sua
obra Inteligência Artificial Tradução da Segunda Edição, “Um neurônio é uma
célula no cérebro cuja principal função é coletar, processar e disseminar sinais
elétricos” (Inteligência Artificial, 2004, pág. 713).
20
Na Figura 2 é ilustrado um neurônio biológico.
Figura 2 - Representação do neurônio biológico. [UNISANTA, 2006]
Dendritos têm por função receber os estímulos transmitidos por outros
neurônios. Soma ou chamado corpo celular é responsável por coletar e combinar
as informações vindas de outros neurônios e o Axônio é responsável por
transmitir estímulos para outras células.
As sinapses são as interligações entre os neurônios, possuindo cada
neurônio em média de mil a dez mil sinapses. O cérebro humano possui cerca de
10¹¹ neurônios, e um número de sinapses que pode chegar a mais de 10¹4, o que
possibilita a formação de redes muito complexas. O neurofisiologista McCulloch e
o matemático Water Pitts (1943) [UFLA, 2006] realizaram um trabalho que fazia a
analogia entre as células vivas e o processo eletrônico, simulando o
comportamento do neurônio natural, sendo que o neurônio possuía apenas uma
saída, em função do valor de suas entradas.
O Neurônio de McColloch e Pitts consiste basicamente em um neurônio
que executa funções lógicas. Os neurônios produzem somente resultados binários
e as conexões transmitem exclusivamente zeros e uns. As suas redes são
compostas de conexões com peso, de tipos excitatórios e inibitórios. Cada
unidade é caracterizada por certo limiar.
O psicólogo Donald Hebb (1949) [UFLA, 2006] demonstrou que a
21
capacidade de aprendizagem em redes neurais biológicas vem da alteração da
eficiência sináptica, ou seja, a conexão somente é reforçada se tanto as células
pré-sinápticas quanto as pós-sinápticas estiverem excitadas; Hebb foi o primeiro a
propor uma lei de aprendizagem específica para as sinapses dos neurônios.
Em 1951 foi construído o primeiro neuro-computador denominado “Snark”,
criado por Marvin Minsky. O Snark operava ajustando automaticamente seus
pesos sinápticos.
Em 1958, Rosemblatt [UFLA, 2006] mostrou em seu livro Principles of
Neurodynamics o modelo dos “Perceptrons”. Nele os neurônios eram organizados
em camada de entrada e saída, na qual os pesos das conexões eram adaptados
a fim de atingir a eficiência sináptica usada no reconhecimento de caracteres.
Sinapses (entrada) com seus pesos associados. Junção somadora,
responsável pelo processamento. Função de ativação, ativa ou não a saída do
neurônio.
wk1
wk2
wkm
f(uk)
x1
x2
xm
uk
wk0
=bk
yk
sinais
de
entrada
pesos
sinápticos
junção
aditiva
(bias)
função
de ativação
saída
wk0
x0=+1
entrada fixa
Função
degrau
Figura 3 – Modelo de Neurônio Artificial [UFLA, 2006]
22
A operação de um neurônio artificial se resume ao modo como os sinais
são apresentados à entrada (x1 à xm). Cada sinal é multiplicado por um peso que
indica sua influência na saída da unidade (wk), na qual é feita a soma ponderada
dos sinais que produz um nível de atividade (uk), a função de ativação f(uk) tem a
função de limitar a saída e introduzir a não-linearidade ao modelo. O bias bk tem o
papel de aumentar ou diminuir a influência do valor das entradas, podendo-se
considerar o bias como uma entrada de valor constante 1, multiplicado por um
peso igual a bk.
Na Figura 4, é mostra matematicamente a saída que pode ser expressa por:
Figura 4-Função de saída
Considerando o bias como entrada de valor x0=1 e peso wk0=bk também pode ser
expressa por:
Funções de ativação, mostrado na Figura 5
Figura 5- Função de ativação
A Função logística é mostrada na Figura 6
Figura 6 – Função logística
m
j
kjkjkk bxwfufy1
)(
m
j
jkjkk xwfufy0
)(
23
A Função Logística determina o tipo de operação realizada entre os neurônios, de
modo a propagar valores que variam entre 0 e 1 de um neurônio a outro ou de
uma camada a outra.
As RNAs, em suas características gerais, consistem em modelos
adaptativos treináveis, podendo representar domínios complexos (não lineares),
capazes de generalização diante de informação incompleta, além de realizar o
armazenamento associativo de informações. Elas processam informações
Espaço/Temporais e possuem grande paralelismo, o que lhes confere rapidez no
processamento.
Usualmente as camadas são classificadas em três grupos: Camada de
Entrada, Camadas Intermediárias ou Ocultas e Camada de Saída. Na Camada de
Entrada os padrões são apresentados à rede, enquanto nas Camadas
Intermediárias ou Ocultas são realizadas a maior parte do processamento, por
meio das conexões ponderadas, que podem ser consideradas como extratoras de
características. Por fim, na Camada de Saída o resultado final é concluído e
apresentado.
2.5.1 Tipos de Redes Neurais Artificiais
Existem basicamente 3 tipos básicos de arquitetura de RNAs [UFLA, 2006]:
Feedforward de uma única camada – Sinais percorrem a rede em uma
única direção, da entrada para saída.
Feedforward de múltiplas camadas - Sinais percorrem a rede em uma
única direção, da entrada para saída.
Redes recorrentes – Saída de neurônios alimentam neurônios da mesma
camada inclusive o mesmo.
A quantidade de neurônios na camada de entrada e saída é dada pelo
problema a ser abordado. No entanto, a quantidade de neurônios nas camadas
de processamento são características do projeto. Aumentando-se o número de
neurônios na camada escondida aumenta-se a capacidade de mapeamento não-
linear da rede.
24
A rede Feedforward de uma única camada, os neurônios da camada de
entrada correspondem aos neurônios sensoriais que possibilitam a entrada de
sinais na rede (não fazem processamento). Os neurônios da camada de saída
fazem processamento além de possibilitar o resultado obtido e quais neurônios
foram ativados ou não. A Figura 7 mostra um exemplo de rede neural
monocamada.
Figura 7 - Rede Neural Monocamada-[UFLA, 2006]
Rede Feedforward de Múltiplas Camadas (Multilayer Perceptron - MLP). Essas
redes têm uma ou mais camadas intermediárias ou ocultas, como é mostrado na
Figura 8.
Figura 8 – Modelo de Rede Neural Múltiplas Camadas-[UFLA, 2006]
25
2.6 Treinamento
A propriedade mais importante das redes neurais consiste na habilidade de
aprender de seu ambiente e com isso melhorar seu desempenho. Isso é feito por
meio de um processo interativo de ajustes aplicado a seus pesos, denominado
treinamento. O aprendizado ocorre quando a rede neural atinge uma solução
generalizada para uma classe de problemas.
Denomina-se algoritmo de aprendizado a um conjunto de regras bem
definidas para a solução de um problema de aprendizado. Existem muitos tipos de
algoritmos de aprendizado específicos para determinados modelos de redes
neurais. Estes algoritmos diferem entre si principalmente pelo modo como os
pesos são modificados.
Os principais modelos (paradigmas) de aprendizagem são: [UFLA, 2006]
1) Aprendizagem Não-supervisionada; a rede atualiza seus pesos sinápticos
sem indicações quanto à adequação das saídas.
2) Aprendizagem por Reforço; uma função de avaliação indica o grau de
aprendizagem da rede.
3) Aprendizagem Supervisionada; interfere-se nos pesos sinápticos de modo
a minimizar o erro propagado entre o padrão apresentado a rede e o
padrão a ser reconhecido.
Neste trabalho optou-se pela Aprendizagem Supervisionada, também
conhecida com aprendizagem com professor. Tal aprendizagem consiste em que
o professor tenha o conhecimento do ambiente, fornecendo o conjunto de
exemplos de entrada-resposta desejada. Com este conjunto, o treinamento utiliza-
se da regra de aprendizagem por correção de erro.
26
Figura 9 - Diagrama de treinamento de algoritmo Backpropagation-[UFLA, 2006]
No entanto, quando este número for muito grande, o modelo pode se
sobre-ajustar aos dados, na presença de ruído nas amostras de treinamento. Diz-
se que a rede está sujeita ao sobre-treinamento. [UFLA, 2006]
Algoritmo de aprendizagem – backpropagation, regra de aprendizagem
baseada na correção do erro pelo método do Gradiente, o algoritmo de
aprendizagem é composto de duas fases, cálculo do erro (forward) e correção dos
pesos sinápticos (backward).
Durante o treinamento com o algoritmo backpropagation, a rede opera na
seguinte seqüência: Primeiro, um padrão é apresentado à camada de entrada da
rede. A atividade resultante propaga pela rede, camada por camada, até a
camada de saída. No passo seguinte a saída obtida é comparada à saída
desejada para o padrão apresentado à entrada. Se esta não estiver correta, o erro
é calculado. O erro é propagado a partir da camada de saída até a camada de
entrada, e os pesos das conexões das unidades das camadas internas vão sendo
modificados conforme o erro é propaga pela a rede.
ambiente professor
Sistema
de aprendizagem
Vetor de estado
do ambiente
Resposta
desejada
Resposta
real
Sinal de erro
-
+
27
2.7. Aprendizado de Máquina
A Inteligência Computacional [UFLA, 2006] busca, através de técnicas
inspiradas na Natureza, o desenvolvimento de sistemas inteligentes que imitem
aspectos do comportamento humano, tais como: aprendizado, percepção,
raciocínio, evolução e adaptação.
Este trabalho carecia de um programa para auxiliar na criação de redes
neurais, preferencialmente gratuito. Desta forma, optou-se por estudar o programa
Java Neural Network Simulator (JavaNNS) para criação de redes neurais que
fossem adequadas ao nosso trabalho. Trata-se de um programa é open source
(de código aberto), o que fornece uma grande vantagem para o caso de haver
algum problema no código, sendo possível estudar uma solução para o mesmo.
Após o aprendizado e ter ganhado conhecimento do JavaNNS as primeiras redes
foram criadas e treinadas. O treinamento da rede exige a criação de um arquivo
texto com código em binário, no formato texto. Havia também uma limitação que
foi descoberta: que não havia como fazer para que o programa aceitasse uma
imagem maior que 44x44 pixel. Essa imagem gerava uma matriz de 44x44 que o
JavaNNS não permitia, pois era limitado em 2000 neurônios que é o limite do
programa. Esse código de preferência deve ser adquirido a partir de uma imagem,
por mais simples que ela seja, para que a rede seja treinada tendo imagens como
base.
28
Figura 10 – Rede Neural não treinada.
Inicialmente foi escolhida a arquitetura MLP, mostrada na Figura 10, por ser
de fácil treinamento e eficácia quanto ao aprendizado.
A rede MLP é composta por 25x25 neurônios na camada de entrada,
variações na camada oculta, mostrado na Figura 11, buscando melhor eficiência e
1 neurônio na camada de saída.
Figura 11 – Interface de ferramentas para o treinamento
29
Aprendizagem da rede com JNNS
Foram realizados treinamentos, como mostra a Figura 12, com diversos
números de ciclos de treinamentos buscando encontrar a convergência da rede.
Figura 12 - Rede Neural em processo de treinamento
Na Figura 13, o padrão reconhecido como área não verde
Figura 13 – Saída de neurônios não ativada
30
Na Figura 14 é mostrado o padrão reconhecido como área verde
Figura 14 – Saída de neurônios ativada
31
3. Trabalhos Correlatos
3.1. Integração entre redes neurais e correlação para a identificação de pontos de apoio pré-sinalizados.
Neste trabalho [PUCPR, 2005] foi adotada a técnica de redes neurais para
fazer o reconhecimento automático dos pontos de uma foto aérea que foi utilizada
para o estudo. Priorizou-se o estudo para a implementação de uma rede neural
artificial que não utilizasse recursos muito caros e nem utilizasse muito
processamento para executar e reconhecer os padrões.
Houve um tratamento das imagens selecionadas, para depois serem
passadas para o sistema de reconhecimento implementado. Com o auxílio do
aplicativo Paint Shop Pro as imagens foram tratadas com tons de cinza. Outro
fator importante consistiu na calibragem da câmera, necessária para a obtenção
do foco adequado para o experimento, sem que houvesse distorção na imagem
para não comprometer a identificação do padrão.
Para que o experimento pudesse ser realizado foi necessário fazer uma
aerofoto da região a ser reconhecida pelo sistema adotado. Antes de tirar a foto
foram marcados três pontos em uma determinada área, com um tamanho
adequado para dar destaque. Estes três pontos serviram para sinalizar a área que
pudesse ser reconhecida e também para facilitar a área de reconhecimento por
meio da triangulação.
Foi realizado um estudo das derivadas que fossem usadas para fazer o
treinamento da rede antes de ser implementada a rede neural artificial. O
algoritmo Backpropagation foi usado para fazer o treinamento da rede neural e a
morfologia matemática foi estudada para diminuir o tamanho de algumas
derivadas. Foi usado um código em Visual C++ para a implementação da rede
neural, além de fazer a identificação na foto com a ajuda dos três pontos de apoio
que são apresentados na imagem para o estudo.
32
Depois de a aerofoto ser tirada, foram anotadas as coordenadas dos
pontos marcados, permitindo aos algoritmos calcular os pontos relativos para o
reconhecimento do padrão. Essas marcas chamadas de fiduciais foram passadas
para o um programa que funciona em um dos que consegue fazer a correlação
desses pontos. Para identificar o alvo da imagem foi usado o Matlab. Após todo o
processo de tratamento e identificação das imagens, com todos os cálculos feitos
dos sistemas, conseguiu-se chegar a um resultado. O treinamento com outras
imagens de apoio para a rede neural também foi importante para obter este
resultado. Mesmo com uma imagem de alta resolução não foi exigido muito do
desempenho da máquina de, obtidos com uma máquina de baixo custo.
Um aspecto positivo deste trabalho foram as técnicas abordadas para a
realização do experimento, por exemplo, marcar os pontos para depois identificá-
los, por meio dos algoritmos que calculam os pontos relativos. A máquina de
baixo custo na época que foi citada, usou um grande volume de dados como
entrada no caso uma imagem de alta definição. Mas o custo do projeto todo foi
elevado, por exemplo, contratar uma empresa para sobrevoar uma área e
fotografá-la.
3.2. Detecção de volume de tráfego de veículos proporcionada por visão computacional via redes neurais
Outro trabalho [ITA, 1999] relacionado ao que foi estudado fez a
identificação do número de carros em uma rodovia. Foram usados os melhores
recursos que os autores(RIBEIRO, F. F. S., LIMA, A. C. de C., 1999) tinha
disponível na época para realizar a captura das imagens e fazer o tratamento para
depois passar para a rede neural artificial treinar.
No local escolhido por ele para a filmagem do trânsito foi instalada uma
câmera comum, com a objetiva apontada para o movimento da rua. Depois foi
realizada a captura da filmagem com o auxílio de um programa. Outro programa
foi usado para desmanchar o filme em várias imagens, separadas por arquivos.
33
Em seguida foi preciso fazer uso de um terceiro programa para converter todas as
imagens em escalas de cinza. O MATLAB foi a ferramenta que estes autores
utilizaram para fazer um pré-processamento das imagens e depois passar para a
rede neural dentro do mesmo.
O MATLAB trazia várias opções para detectar a borda das imagens. O
autor escolheu aquela que estava mais própria para identificar o número exato de
carros presentes na imagem. Com o vídeo gerado anteriormente, após o
processo de separação de todas as imagens do vídeo, foi gerado um grande
número de arquivos. O autor separou tudo em nove blocos de 400 fotos cada um,
passando todas as imagens para o MATLAB, que já estava com a rede neural
artificial pronta para ser treinada. O processo, segundo ele, foi demorado, mesmo
com os melhores recursos disponíveis para o experimento.
O resultado constatado foi que ele chegou ao nível de erro desejado. O
programa gerou gráficos para fazer as comparações que ele denominou de
épocas. Em cada época houve uma evolução da rede neural artificial, de forma a
melhorar a identificação a cada treinamento. Um menor número de erros também
foi constatado, à medida que a rede neural ficava mais experiente. O
procedimento de passar as imagens pelo processo de pré-processamento era
mais rápido e eficiente do que sua ausência, obtendo, assim, um bom resultado,
segundo o autor.
Neste trabalho os autores obtiveram resultados satisfatórios, mas com um
custo elevado para a época. Uma parte importante do trabalho consistiu no
cálculo da dimensão do problema a ser resolvido antes da realização dos testes,
para não perder tanto tempo. Fazer um pré-processamento das imagens antes de
passar elas para a rede treinar, está semelhante com a segmentação de imagens,
tornou o trabalho dos autores mais próximo ao proposto.
34
4. Metodologias
4.1. Metodologia de Pesquisa
Este trabalho utilizou-se primordialmente da Internet para encontrar uma
solução para o problema proposto. Inicialmente foi necessário identificar o método
mais adequado para fazer a identificação de objetos. As redes neurais artificiais
se mostravam mais eficientes em vários trabalhos que as adotaram.
Sobre a diminuição das áreas verdes também se usou a Internet para
conseguir as informações, principalmente em sites brasileiros, como por exemplo,
O Estado de São Paulo. Para encontrar áreas verdes no mapa, precisava-se de
algo que fizesse a pesquisa na imagem e, com o auxílio do computador, identificar
a imagem sem a intervenção humana. Para simplificar a solução do problema ao
invés de criar uma RNA implementada por meio de um código, um programa
auxiliou na criação da rede. Com relação ao programa adotado, JavaNNS,
também foi estudado o manual para esclarecer o funcionamento, a forma de como
criar a rede neural artificial.
Após o entendimento de como funciona o programa, descobriu-se que ele
recebia como entrada apenas arquivos em código binário. Algumas imagens
foram passadas para um arquivo binário por meio de vários programas, mas
dessa forma perder-se-ia muito tempo para fazer os testes. Códigos foram
pesquisados na Internet no site Sourceforge [SOURCEFORGE, 2008] e na
maioria dos casos soluções em linguagem Java. Após a pesquisa – vários
códigos traziam soluções diferentes – apenas alguns foram usados, para ajudar a
fazer um código para transformar a imagem em preto e branco e segmentar em
arquivo binário. O material pesquisado permitiu a obtenção de um programa que
fazia tudo para gerar o arquivo em códigos binários.
35
Uma grande variedade de informações foi encontrada ao longo do trabalho,
tanto na Internet quanto em alguns livros sobre redes neurais artificiais. Sem a
pesquisa não seria possível realizar boa parte do trabalho, além de haver uma
aprendizagem que possivelmente será usada no futuro.
4.2. Metodologia de Desenvolvimento de Software
Apesar de estudos desse porte serem bastante difundidos no meio
científico-acadêmico, cada trabalho apresenta suas particularidades. Por este
motivo, no início, observou-se a necessidade de uma metodologia que atendesse
ao interesse de gerenciar tal desenvolvimento da melhor maneira possível com
um baixo custo e para isso foi escolhida Metodologias Ágeis.
Segundo a definição encontrada em Michel dos Santos Soares [UNIPAC,
2004] “As metodologias ágeis surgiram com a proposta de aumentar o enfoque
nas pessoas e não nos processos de desenvolvimento. Além disso, existe a
preocupação de gastar menos tempo com documentação e mais com resolução
de problemas de forma iterativa”.
36
5. Desenvolvimento
5.1. Programa de Segmentação
Para solução do problema abordado no caso de uso, faz-se a utilização do
algoritmo de limiarização bimodal, que tem como objetivo extrair os dados de
interesse para que este seja submetido a processamento pela rede neural.
A linguagem Java foi adotada para fazer a implementação do programa que
serve para tratamento e a segmentação da imagem. Com a adoção de uma
metodologia ágil o paradigma de Orientação a Objetos se adaptou de maneira
satisfatória ao desenvolvimento do aplicativo, devido às inúmeras iterações no
processo de codificação do programa.
O programa desenvolvido é composto de quatro utilidades importantes para
este trabalho. Recorte de imagem, conversão em preto e branco, binarização e
criação dos códigos interpretados pela rede neural artificial. Durante a
implementação das utilidades diversos problemas foram encontrados, que serão
abordados neste tópico.
O recorte da imagem é responsável pela divisão da imagem em fragmentos
de 25 por 25 pixels, um dos principais problemas encontrado nessa fase de
implementação e que iria se estender a fases de conversão e binarização seria a
manipulação dos pixels das imagens. Dada uma imagem, por exemplo, de
500x500 pixels ela possuirá 250.000 pixels que deverão ser divididos em
fragmentos ordenados de 25x25 pixels.
A solução para este que seria o maior dos problemas de implementação
veio após uma longa busca por modelos de segmentação, com a adoção de
biblioteca disponível na linguagem Java chamada “java.awt.image.pixelreader”,
que possibilita a manipulação individual de cada pixel da imagem a ser
processada.
37
Devido à representação bidimensional de uma fotografia foi dotado à
utilização da manipulação dos pixels em forma de uma Matriz, conseqüentemente
foi dividida em pequenas matrizes para a implementação das demais fases da
segmentação
Durante o desenvolvimento da parte de conversão das cores foram
encontradas certas dificuldades como a manipulação do conteúdo dos pixels, uma
das alternativas para esse problema de conversão de imagem é a utilização de
outra biblioteca “handle single pixel”, que tem como função tratar a representação
das cores no pixel, o objetivo desta fase é minimizando as cores vermelha, e azul
que compõe o pixel e então converter em preto e branco através de um limiar
aplicado sobre a cor verde, sendo branco representando o verde e o preto
representando as demais cores.
Com a imagem já processada a segmentação por limiar bimodal é iniciada
dando origem a uma matriz de 25 por 25 posições de representação binária,
sendo que o valor 1 representa o branco e valor 0 representa o preto. Novamente
no decorrer dessa fase faz se uso da manipulação de pixels, dessa vez para a
determinação do valor de saída, com a utilização de um limiar para separação das
duas cores.
Esta última fase do programa é responsável por gerar um arquivo de
extensão “Pat”, nesse ponto uma preocupação ameaçou o projeto, a utilização da
linguagem Java para a geração de um arquivo tipo texto, o arquivo de texto
deveria ter uma composição especifica que descreve os dados e informações
para a Rede Neural Artificial.
Para solução desse problema foi adotado mais uma biblioteca “java.io” a
qual possibilita a escrita de arquivos tipo texto, com a implementação desta fase
pode se gerar um arquivo com uma estrutura legível pela Rede Neural Artificial,
que é composto de cabeçalho ,entradas e saídas.
38
Apesar da necessidade da utilização de diversas bibliotecas na codificação
deste software, nenhuma delas dispensou a necessidade de implementação e
codificações alem do estudo para comunicação entre elas.
5.2. Projeto da Rede Neural
Foi escolhida a arquitetura MLP por ser de fácil treinamento e eficácia
quanto ao aprendizado.
A rede MLP é composta por 25x25 neurônios na camada de entrada, uma
camada oculta de 5x5 neurônios e 1 neurônio na camada de saída. Os valores
quanto ao número de neurônios da camada de entrada foram determinados com
base na varredura de uma área equivalente a uma casa, que poderia ser coberto
por 25x25 pixels sendo que a imagem fornecia um zoom de 200 metros.
Já quanto ao número de neurônios da camada oculta, embora o JNNS
ofereça o uso de até 2000 neurônios. Quanto ao número de neurônios da camada
de saída, um neurônio foi suficiente, pois a resposta desejada está entre 0 e 1.
39
6. Avaliações e Testes
Para obter os resultados, vários processos foram desenvolvidos antes. A
máquina utilizada, no caso um notebook, precisava de uma configuração
apropriada para o trabalho.
Dividido em etapas:
Obtenção da imagem
Tratar e Segmentar a imagem
Treinar a rede neural artificial
6.1. Treinamento da Rede
Na preparação das amostras, foi escolhida uma imagem colorida com
proporções de 250 x 250 para técnica de treinamento por substituição, que
levando em consideração tais proporções, tal imagem submetida à segmentação
gerou 100 fragmentos de 25x25 pixels que correspondem à matriz neural de
25x25 neurônios e uma imagem colorida com proporções de 500 x 500 obtendo
400 fragmentos.
O produto final obtido pelo processo de segmentação se deu em quatro etapas:
1º - Escolha da imagem: escolhida uma imagem aleatória na região de Campinas,
com pouca área verde para conseguir medir a eficiência da rede criada, que foi
capturada do Google Earth e salva com o programa Gimp;
2º - Aplicação do algoritmo de binarização: esse algoritmo estava implementado
nos códigos que foram estudados, que faz o tratamento da imagem tornando ela
preto e branca e depois a transforma em um código binário;
3º – Fragmentação: com o mesmo programa usado para o processo
anteriormente, faz o processo de fragmentação das imagens em pedaços
divididos em 25x25;
4º - Obtenção dos valores binários: esses valores binários foram criados no
processo anterior para depois poder passá-los para o JavaNNS que só aceita
arquivos binários como entrada;
40
A Imagem escolhida para gerar as amostras para a técnica de substituição é
mostrada na Figura 15.
Figura 15 – Exemplo de imagem não segmentada
Fragmentação da imagem apresentada na Figura 16
Figura 16 – Exemplo de imagem fragmentada
41
Imagem da Figura 17, escolhida para gerar as amostras para a técnica de
substituição
Figura 17 – Imagem escolhida para gerar as amostras
Transformação ocorrida em um fragmento de imagem após a aplicação do
algoritmo de binarização, mostrado nas duas figuras abaixo.
Figura 18 – Fragmento da imagem colorida e preto e branco
Resultado da obtenção de valores em binário correspondentes aos pixels da
imagem, na Figura 19, como é mostrado abaixo.
42
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Figura 19 – Imagem em preto e branco e código binário ao lado
6.2. Coleta dos Resultados
Esta primeira tabela foi gerada com três metodologias, alterada apenas a
camada oculta da rede neural artificial criada, com os treinamentos 300 ciclos.
Camadas ocultas 4x4 3x25 1x25; 1x25
N° do Teste N° de Acertos
1 28 29 30
2 24 30 24
3 27 28 25
4 21 22 30
5 17 24 34
6 26 28 28
7 23 28 26
8 23 25 31
9 32 35 31
10 31 32 31
Total de acertos 252 281 290
Porcentagem de Acertos 63% 70,3 % 72,5% Tabela 1 – Médias Obtidas pela técnica 10 fold Cross Validation, 300 ciclos.
43
A segunda tabela gerada com o treino com uma nova amostra, treinada
com 100 ciclos e outra metodologia, que os pesos foram alterados.
Camadas Ocultas 25x2; 10x1 25x2; 10x1 25x2 1x25; 1x25
Nº de Ciclos 100 500 200 100
Nº do Teste N° de Acertos
1 29 27 30 34
2 26 26 31 36
3 25 25 28 35
4 28 25 28 34
5 31 32 36 37
6 32 30 31 39
7 30 31 35 38
8 27 24 31 36
9 25 26 29 38
10 27 27 29 38
Total de acertos em 400 280 273 308 365
porcentagem de acertos 70% 68,25% 77% 91,30%
Tabela 2 – Médias Obtidas pela técnica 10 fold Cross Validation, com diferentes ciclos.
44
7. Análise dos Resultados
0
5
10
15
20
25
30
35
40
45
1 2 3 4 5 6 7 8 9 10
25x2;10x1 100
25x2;10x1 500
25x2 200
2x25 100
Figura 20 – Gráfico de resultados
Os resultados geraram o gráfico da figura 20 que, de acordo com a Tabela
2, mostra a evolução de cada pacote de treinamento, com os devidos testes de 40
resultados com o número de acertos apenas. Os resultados obtidos de cima para
baixo conforme a legenda de cima para baixo, duas camadas ocultas com linhas
de 25 colunas mais uma camada de uma linha de 10 colunas treinadas com 100 e
500 ciclos, respectivamente. A terceira com uma camada oculta de duas linhas de
25 colunas treinada com 200 ciclos. A última com uma camada oculta de 25 linhas
com duas colunas, treinada com 100 ciclos.
A média dos resultados obtidos nos testes, conforme a primeira tabela
mostrou se não muito eficiente, pois os testes feitos com uma amostra que não
havia um número grande de áreas verdes na imagem inteira. Havia apenas
poucas árvores que estavam distantes uma das outras, isso compromete logo no
treinamento da rede, que gera um número grande de erros nos testes. Mesmo
assim a rede estava apta para os testes com um número de ciclos em todos os
45
casos se estabilizaram em 300 ciclos. O último resultado, o melhor entre os três,
foi de 72,5 % com uma camada oculta de 25 linhas com duas colunas, treinada
com 100 ciclos. O último usou um método diferente dos outros, pois houve uma
variação dos pesos antes do treinamento da rede resultado é melhor que os
outros dois.
Nos testes que geraram a segunda tabela alterou bastante o resultado, pois
houve diferentes metodologias como na primeira. Nos três testes, 25x2; 10x1 com
100 e 500 ciclos, ha uma variação de resultados conforme o número de ciclos.
Com o aumento do número de ciclos o resultado estranhamente fica inferior,
normalmente acontece o contrario. O teste realizado com uma camada oculta de
25x2, com o treinamento de 200 ciclos, sendo esse o número máximo, gera um
resultado melhor mesmo com um número menor de ciclos.
A rede neural artificial com o melhor número de resultados foi a de duas
camadas ocultas de 25 linhas que obteve o resultado de 91,30 % de acertos. O
método usado foi o mesmo da primeira tabela com 72,5 % de acerto e com o
número de ciclos máximo usado, que foi de 100. Fez com que a quantidade de
acertos aumentasse, com isso, a rede já mostrava uma eficiência que não havia a
necessidade de aumentar o número de ciclos.
Durante os treinos, também houve a possibilidade de prever os resultados,
pois o programa JavaNNS gerava um gráfico de erro enquanto havia o
treinamento. A análise do gráfico era fundamental, pois quanto melhor o resultado
do gráfico gerado melhor se tornava à rede. Quando a linha do gráfico se tornava
mais próxima a uma reta significava que a rede se tornava mais estável quanto
aos resultados que gerava depois nos testes. O gráfico da Figura 21 demonstra o
exemplo da rede que resultou em 77 % de acertos.
46
Figura 21 – Gráfico de erro da rede neural durante o treinamento.
47
8. Conclusão
O trabalho precisou de muita pesquisa para superar as dificuldades por ele
apresentadas, a fim de chegar ao objetivo desejado, qual seja, a identificação de
áreas verdes em mapas. O funcionamento da rede neural artificial foi necessário
para o aprendizado do padrão a ser ensinado, que métodos e programas
poderiam ser usados para criar e treinar a rede para fazer a pesquisa em uma
matriz. A segmentação de imagens mostrou-se um procedimento necessário, pois
uma imagem muito grande não poderia ser tratada com os recursos disponíveis.
Com as ferramentas disponíveis na Internet, no caso o Google Maps e o
Google Earth, foi possível adquirir as fotos de satélite com algumas áreas verdes
da região de Campinas, a cidade escolhida para este estudo. Um processo
necessário após a captura da imagem foi o tratamento e a segmentação para
depois transformar a imagem em um arquivo binário. Baseado em vários códigos
disponíveis na Internet, foi desenvolvido um software segmentador de imagens
que gera, ao final, um arquivo texto com o código binário. O programa JavaNNS
auxiliou na criação da rede neural artificial que foi treinada e testada com base no
arquivo gerado no processo de segmentação. Efetuar esse processo usando
programas pagos não seria possível, pois além se haver um custo elevado,
exigiria uma melhor configuração de hardware. Os recursos utilizados neste
trabalho são gratuitos e exigem um equipamento com configurações não muito
avançadas.
No melhor dos testes, consegui-se obter o resultado alvo, que é a
identificação das áreas verdes em mapas com uma precisão de 72,5%. Após a
análise dos resultados percebeu-se que a rede neural artificial foi bem treinada e
estava bem preparada para a tarefa de identificação proposta. Isso mostrou que a
pesquisa realizada ao decorrer do ano, com os recursos disponíveis, resultou no
resultado procurado.
48
8.1 Limitações
Durante o processo de avaliação do JavaNNS, constataram-se algumas
limitações, dentre elas o fato de ser limitado quanto ao número de neurônios,
totalizado em 2000 neurônios. Houve a tentativa de mexer no kernel do programa
que originalmente é construído em linguagem C e uma camada Java faz a
interface do aplicativo. Mas o que se descobriu é que partes de kernel não eram
passíveis de alteração, eram simplesmente arquivos exe3, uma engenharia
reversa tomaria muito tempo além do fato de não saber que tipo de código, de
que maneira estaria estruturado e caso pudesse ser alterado, como se
comportaria. O código não estava muito bem estruturado e comentado, também
dificultou ainda mais a busca mal-sucedida de uma solução.
Outro limite encontrado foi quanto à arquitetura proposta ao encontrar uma
topologia estável, pois muitas das topologias testadas, embora razoavelmente
eficientes, tornava o framework instável. Isso esta relacionado às camadas
ocultas, responsáveis pelo processamento. Quanto maior o número de camadas
ocultas, automaticamente aumentava o tempo de processamento ou mesmo não
havendo a execução do aplicativo com um número grande de camadas ocultas.
8.2 Trabalhos futuros
Com os resultados obtidos neste estudo existem outras possibilidades a
serem criadas. A utilização da rede neural artificial para fazer o reconhecimento do
padrão pode ser usada não só para as áreas verdes de uma cidade como
também para construções e outros objetos que possam ser reconhecidos essa
técnica como, por exemplo, encontrar ruas que sejam mais movimentadas em
relação ao trânsito, em um determinado local. Esse tipo de aplicativo pode ainda
ser usado em aparelhos celulares - como o Google Maps, que já é compatível na
maioria dos navegadores – e permitir a identificação da área verde mais próxima
para fazer turismo ecológico, por exemplo.
49
Um estudo aprofundado da mata atlântica disponível no Brasil poderia
também se beneficiar de estudos como este estudo que foi feito. Ainda é possível
realizar a comparação entre diferentes regiões com cálculos estatísticos que
poderiam ser feitos por meio do tamanho da área, observando a quantidade
existente em uma região. Outra possibilidade seria a criação da rede neural
artificial usando o MATLAB que traz e utiliza muitos recursos de uma máquina,
com o objetivo de se vencer as limitações do JavaNNS, mesmo sendo com uma
configuração que tenha um custo mais alto.
3 arquivo executável.
50
Referências Bibliográficas
ANDRADE, Adriano de Oliveira, Redes Neurais Aplicadas ao Processamento
de Imagens de Satélite, de Universidade Federal de Goiás, Escola de
Engenharia Elétrica, Grupo PIRENEUS, 1997. Disponível em:
<http://www.aoandrade.eletrica.ufu.br/Documents/Relat%F3rio%20final%20do%2
0CNPQ.pdf > Acesso em: 31 mai 2008.
CASTRO, Fernando César Comparsi de, Reconhecimento e Localização de
Padrões em Imagens Utilizando Redes Neurais Artificiais como Estimadores
de Correlação Espectral, Pontifícia Universidade Católica do Rio Grande d Sul
para Obtenção do Grau de Mestre em Engenharia, dezembro de 1995. Disponível
em: <http://www.ee.pucrs.br/~decastro/pdf/F_MasterThesis.pdf>. Acesso em: 16
mar 2008.
RUSSEL, Stuart e NORVIG, Peter, Inteligência Artificial, Tradução de: Artificial
Intelligence, 2nd edition, tradução de PubliCare Consultoria, Rio de Janeiro,
Elsevier, 2004.
TAYLOR, Bret, The Official Google Blog, 2005. Disponível em:
<http://googleblog.blogspot.com/2005/02/mapping-your-way.html>. Acesso em: 12
ago 2008.
CARDOZO, André, Google Revista Info, Editora Abril, jan, 2006
FORTES, Débora, A Era dos Mapas, Revista Info, Editora Abril, jan 2007.
OSÓRIO Fernando e BITTENCOURT, João Ricardo, I WORKSHOP DE
INTELIGÊNCIA ARTIFICIAL, Universidade de Santa Cruz do Sul, Departamento
de Informática, Junho 2000. Disponível em: <http://osorio.wait4.org/oldsite/wia-
unisc/wia2000-full.pdf>. Acesso em: 20 mar 2008.
51
MOREIRA, José, Porquê usar Java …, 22 de março 2007. Disponível em:
<http://www.josemoreira.net/2007/03/22/porque-usar-java/>. Acessado em: 15 ago
2008.
RIBEIROO, F. F. S., LIMA,A. C. de C., Detecção de volume de tráfego de
veículos proporcionada por visão computacional via redes neurais, Instituto
Tecnológico de Aeronáutica, 1999. Disponível em: < www.ele.ita.br/cnrn/artigos-
4cbrn/4cbrn_024.pdf >. Acesso em: 31 mai 2008.
GARCIA, João Carlos Eugênio, Proposta de uma Infra-Estrutura de Tomada de
Decisões para SDIs, Centro Universitário de Araraquara, Araraquara, 2004.
Disponível em: <
http://buscatextual.cnpq.br/buscatextual/visualizacv.jsp?id=K4701521U9 >.
Acesso em: 10 set. 2008
NOVAES, Washington, O clima, a economia, o futuro da Amazônia, 2006.
Disponível em: < http://www.estadao.com.br>. Acesso em: 15 nov 2008
SOARES, Michel dos Santos, Comparação entre Metodologias Ágeis e
Tradicionais para o Desenvolvimento de Software, 2004. Disponível em: <
http://www.dcc.ufla.br/infocomp/artigos/v3.2/art02.pdf >. Acesso em: 15 nov 2008.
MARCHEZI, Fabiana, Inpe vê 552 pontos de alerta de desmatamento na
Amazônia, 2008. Disponível em:
<http://www.estadao.com.br/vidae/not_vid153967,0.htm >. Acesso em: dez 2008.
NOVAES, Washington, Só a quebradeira para ajudar o meio ambiente, 2008.
Disponível em: < http://www.estadao.com.br/ suplementos/not_sup297121,0.htm>.
Acesso em: dez 2008.
O ESTADO DE SÃO PAULO, SP precisa de 162 milhões de árvores para
neutralizar CO2, 2007. Disponível em: <http://www.estadao.com.br/
estadaodehoje/20071208/not_imp92502,0.php>. Acesso em: dez 2008.
52
WANDRESEN, Romualdo, ANDRADE , José Bittencourt de, MITISHITA , Edson
Aparecido, Integração entre redes neurais e correlação para a identificação
de pontos de apoio pré-sinalizados, Pontifícia Universidade Católica do Paraná,
2005. Disponível em: <http://ojs.c3sl.ufpr.br/ojs2/index.php/bcg/
article/viewPDFInterstitial/4394/3459>. Acesso em: 11 ago 2008
SOURCEFORGE, 2008. Todos os códigos para o desenvolvimento do programa
de segmentação. 2008. Disponível em: <http://sourceforge.net/ >. Acesso em: 10
abr 2008
LACERDA, Prof. Wilian Soares, REDES NEURAIS ARTIFICIAIS, Universidade
Federal de Lavras, 2006. Disponível em:
<http://www.dcc.ufla.br/~lacerda/download/palestras/rna/introducao_RNA_2006.pp
t >. Acesso em: 2007.
SOBRAL, João Luís, Segmentação de Imagem, Universidade do Minho Portugal,
2002 Disponível em: <http://gec.di.uminho.pt/lesi/
vpc0304/Aula07Segmentação.pdf>. Acesso em: 7 ago 2008.
53
Anexos
Anexo 1 – Visões do JNNS
Figura 22 – Rede Neural não treinada.
Figura 23 – Interface de ferramentas para o treinamento
54
Aprendizagem da rede com JNNS
Foi realizado um total de 100 ciclos de treinamentos.
Figura 24 - Rede Neural em processo de treinamento
Padrão reconhecido como área não verde
Figura 25 – Saída de neurônios não ativada
55
Padrão reconhecido como área verde
Figura 26 – Saída de neurônios ativada
56
Anexo 2 – Dados brutos dos testes
Tabela 3 - Resultados obtidos pela técnica de 10 fold Cross-validation, 100 ciclos
Nº Conjunto Nº Amostra Resultado esperado
Resultado obtido
1 1 + 0.627
2 + 0.338
3 + 0.995
4 + 0.918
5 + 0.997
6 + 0.997
7 + 0.993
8 + 0.994
9 + 0.991
10 + 0.996
11 - 0.033
12 - 0.343
13 - 0.042
14 + 0.646
15 - 0.142
16 + 0.992
17 + 0.321
18 + 0.756
19 - 0.070
20 - 0.010
21 - 0.008
22 - 0.018
23 + 0.991
24 + 0.712
25 + 0.994
26 + 0.991
27 + 0.997
28 - 0.023
29 - 0.002
30 - 0
31 - 0.352
32 - 0.631
33 + 0.989
34 + 0.996
35 + 0.391
36 - 0
37 - 0.460
38 - 0.122
39 + 0.037
40 - 0.153
57
Total de acertos 34
2 1 + 0.940
2 + 0.207
3 - 0.658
4 - 0.529
5 - 0.002
6 - 0.002
7 + 0.994
8 + 0.992
9 + 0.776
10 - 0.009
11 + 0.297
12 + 0.888
13 + 0.791
14 - 0
15 - 0.005
16 - 0.001
17 + 0.978
18 - 0.201
19 - 0.010
20 - 0.014
21 + 0.993
22 - 0.345
23 + 0.992
24 - 0.004
25 + 0.992
26 - 0.057
27 + 0.967
28 + 0.994
29 - 0.024
30 - 0.130
31 + 0.954
32 - 0.049
33 - 0.001
34 - 0
35 - 0.298
36 + 0.962
37 + 0.994
38 - 0.061
39 - 0.004
40 - 0.022
Total de acertos 36
3 1 - 0
2 - 0.024
3 + 0.993
4 - 0.585
5 - 0.003
6 - 0.028
58
7 - 0.021
8 + 0.991
9 + 0.955
10 - 0.844
11 - 0.525
12 - 0.015
13 - 0.003
14 + 0.929
15 + 0.879
16 - 0.007
17 - 0.029
18 + 0.995
19 + 0.995
20 - 0.001
21 + 0.900
22 - 0.908
23 - 0.773
24 - 0.013
25 - 0.041
26 - 0.002
27 - 0.075
28 + 0.905
29 + 0.995
30 + 0.990
31 + 0.995
32 + 0.957
33 + 0.989
34 + 0.983
35 + 0.995
36 + 0.995
37 - 0.701
38 - 0.026
39 - 0
40 - 0.261
Total de acertos 35
4 1 - 0.930
2 - 0.049
3 + 0.904
4 - 0.022
5 - 0
6 - 0.591
7 - 0.008
8 - 0.893
9 + 0.994
10 + 0.994
11 + 0.994
12 + 0.994
13 + 0.991
59
14 - 0
15 + 0.991
16 + 0.994
17 + 0.990
18 - 0.797
19 - 0
20 - 0.972
21 - 0.866
22 + 0.992
23 + 0.987
24 - 0.425
25 - 0.007
26 - 0.003
27 - 0.207
28 + 0.977
29 + 0.990
30 + 0.976
31 + 0.994
32 + 0.992
33 + 0.920
34 - 0.010
35 - 0.032
36 - 0.011
37 + 0.994
38 - 0.007
39 - 0.011
40 + 0.994
Total de acertos 34
5 1 - 0
2 - 0.006
3 + 0.975
4 - 0.621
5 - 0
6 - 0.017
7 - 0.093
8 + 0.980
9 + 0.423
10 - 0.010
11 + 0.980
12 + 0.980
13 + 0.976
14 - 0.045
15 + 0.980
16 - 0
17 + 0.602
18 + 0.980
19 + 0.980
20 + 0.980
60
21 + 0.975
22 - 0
23 + 0.092
24 + 0.971
25 - 0.103
26 - 0.070
27 - 0.089
28 + 0.980
29 + 0.966
30 - 0
31 - 0.001
32 + 0.982
33 + 0.910
34 - 0.004
35 - 0.001
36 - 0
37 - 0
38 - 0
39 + 0.980
40 + 0.975
Total de acertos 37
6 1 + 0.996
2 + 0.997
3 + 0.996
4 + 0.996
5 - 0
6 - 0
7 + 0.993
8 + 0.920
9 + 0.962
10 - 0
11 - 0
12 + 0.980
13 + 0.989
14 - 0.255
15 - 0.222
16 - 0.002
17 - 0
18 + 0.992
19 + 0.945
20 + 0.996
21 + 0.966
22 + 0.730
23 + 0.981
24 + 0.760
25 - 0.029
26 - 0
27 - 0
61
28 + 0.996
29 - 0.024
30 - 0.084
31 + 0.898
32 - 0.012
33 - 0.325
34 + 0.869
35 - 0.328
36 + 0.995
37 - 0.039
38 + 0.996
39 + 0.968
40 + 0.147
Total de acertos 39
7 1 + 0.992
2 + 0.032
3 - 0.004
4 + 0.994
5 + 0.993
6 - 0.758
7 - 0.006
8 + 0.954
9 - 0.053
10 + 0.983
11 - 0.341
12 - 0.122
13 - 0.011
14 - 0.050
15 + 0.995
16 + 0.833
17 - 0.168
18 + 0.988
19 + 0.993
20 + 0.994
21 + 0.960
22 + 0.916
23 + 0.760
24 + 0.887
25 - 0.367
26 - 0.031
27 + 0.790
28 + 0.992
29 - 0.006
30 - 0.077
31 - 0.095
32 + 0.900
33 + 0.784
34 + 0.989
62
35 + 0.993
36 - 0.040
37 + 0.681
38 - 0.053
39 - 0.093
40 + 0.993
Total de acertos 38
8 1 - 0.119
2 - 0.722
3 - 0.260
4 + 0.976
5 - 0
6 - 0
7 + 0.982
8 + 0.988
9 + 0.988
10 + 0.433
11 + 0.979
12 + 0.988
13 + 0.988
14 - 0.227
15 + 0.985
16 - 0
17 - 0
18 + 0.892
19 - 0
20 - 0.282
21 + 0.988
22 + 0.988
23 + 0.988
24 - 0.407
25 - 0.006
26 - 0.357
27 - 0.011
28 - 0.762
29 + 0.987
30 - 0
31 - 0
32 + 0.988
33 + 0.987
34 + 0.867
35 - 0.764
36 + 0.972
37 + 0.953
38 + 0.988
39 - 0.002
40 - 0.055
Total de acertos 36
63
9 1 + 0.990
2 + 0.985
3 + 0.990
4 + 0.641
5 - 0
6 - 0.472
7 - 0.233
8 - 0.001
9 - 0
10 - 0
11 - 0.002
12 + 0.990
13 + 0.975
14 + 0.967
15 - 0.001
16 + 0.990
17 + 0.990
18 - 0.156
19 - 0.829
20 + 0.967
21 + 0.990
22 + 0.984
23 + 0.989
24 + 0.988
25 - 0.058
26 - 0.512
27 + 0.990
28 + 0.986
29 - 0.001
30 - 0
31 - 0.004
32 + 0.990
33 - 0.117
34 - 0
35 + 0.981
36 + 0.990
37 + 0.990
38 - 0.004
39 + 0.872
40 - 0.008
Total de acertos 38
10 1 + 0.993
2 + 0.988
3 + 0.995
4 + 0.995
5 + 0.994
6 - 0.026
7 + 0.995
64
8 - 0.059
9 - 0
10 - 0.007
11 - 0.127
12 - 0.001
13 - 0.339
14 + 0.870
15 - 0.114
16 + 0.995
17 + 0.955
18 - 0.881
19 + 0.995
20 - 0.232
21 - 0
22 - 0.541
23 + 0.995
24 + 0.994
25 - 0.059
26 - 0.052
27 + 0.994
28 + 0.995
29 + 0.962
30 - 0
31 - 0.003
32 + 0.164
33 - 0.021
34 - 0.251
35 - 0.246
36 + 0.931
37 + 0.995
38 + 0.686
39 + 0.931
40 - 0.026
Total de acertos 38
Porcentgem de acerto
91.25%