SlideShare ist ein Scribd-Unternehmen logo
1 von 65
Downloaden Sie, um offline zu lesen
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
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
                                          11
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.
                                                12
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.




                                          13
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
                                         14
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
                                     15
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.




                                        16
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).

                                          17
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,

                                         18
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).




                                             19
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
                                  20
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.



            entrada fixa                 wk0=bk (bias)
                 x0=+1             wk0


                      x1           wk1
                                                                      função
                                                                    de ativação
         sinais                                                uk                  yk
                      x2           wk2
           de                                                          f(uk)
        entrada
                                                                               saída
                                                     junção
                                                     aditiva
                      xm           wkm                                    Função
                                                                          degrau


                                 pesos
                               sinápticos
                    Figura 3 – Modelo de Neurônio Artificial [UFLA, 2006]



                                              21
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 (u k), 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:

                                               m
                       y fk f
                       k ()
                          u                      wb
                                                  x k
                                                 kj
                                                  j
                                               j1
                              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

                                                m
                               y fu f
                               k  ()
                                   k              wx
                                                  kjj
                                                j0

                               Figura 5- Função de ativação


A Função logística é mostrada na Figura 6




                                 Figura 6 – Função logística




                                          22
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.
                                           23
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]

                                            24
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.




                                        25
Vetor de estado
                               do ambiente
              ambiente                                professor
                                                                                      Resposta
                                                                                      desejada



                                                                         Resposta
                                                                           real   +
                                                       Sistema
                                                   de aprendizagem
                                                                               -


                                                             Sinal de erro


       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.



                                             26
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.




                                        27
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

                                            28
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
                                          29
Na Figura 14 é mostrado o padrão reconhecido como área verde




                      Figura 14 – Saída de neurônios ativada




                                         30
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.

                                         31
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.

                                            32
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.




                                        33
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.




                                         34
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”.




                                        35
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.
                                        36
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.



                                         37
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.




                                          38
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;

                                          39
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


                                        40
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.



                                           41
1000100000000000111111110
                          1110000000100011111111110
                          1100000000100011111111110
                          0000000001101111111111110
                          0010000011000111111111110
                          0011000011000111111111110
                          0011110110001111111111111
                          0100111111011111111111111
                          0000011111111111111111111
                          0000011111011111111111100
                          0000011110001111111110001
                          0000111110000011111100000
                          0000111000000001111100000
                          0000111000000001111110100
                          0000001110000000100110001
                          0000000111000001000000000
                          0000000100000000000000000
                          0000000111000000000000000
                          1000101011110000000000111
                          0000001111110011100110000
                          0000000111100001111111100
                          0000011011100000011111110
                          0000111111100000000111100
                          0011111101001000000001000
                          0001101100000000000000000
               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.

                                               42
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.




                                                43
7. Análise dos Resultados


  45

  40

  35

  30
                                                                      25x2;10x1 100
  25
                                                                      25x2;10x1 500

  20                                                                  25x2 200
                                                                      2x25 100
  15

  10

   5

   0
        1     2    3     4       5      6      7      8      9   10


                             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
                                             44
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.




                                        45
Figura 21 – Gráfico de erro da rede neural durante o treinamento.




                                46
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.




                                          47
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.




                                          48
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.


                                         49
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.



                                            50
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.

                                         51
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.




                                        52
Anexos
Anexo 1 – Visões do JNNS




Figura 22 – Rede Neural não treinada.




Figura 23 – Interface de ferramentas para o treinamento

                                                53
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


                                              54
Padrão reconhecido como área verde




Figura 26 – Saída de neurônios ativada




                                         55
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             Resultado
                                          esperado              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
                                         56
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
         57
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
         58
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
         59
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
         60
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
         61
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
         62
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
          63
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      91.25%
          acerto




     64

Weitere ähnliche Inhalte

Ähnlich wie Redes Neurais para Identificar Áreas Verdes em Imagens de Satélite

Projeto de reconhecimento de placas (2)
Projeto de reconhecimento de placas (2)Projeto de reconhecimento de placas (2)
Projeto de reconhecimento de placas (2)Guilherme Stéfano
 
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.Douglas Scriptore
 
Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de MandiritubaDesenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de MandiritubaLeonardo Alcantara
 
Almeida marisley hirinea_de
Almeida marisley hirinea_deAlmeida marisley hirinea_de
Almeida marisley hirinea_deFares Mafros
 
Almeida marisley hirinea_de
Almeida marisley hirinea_deAlmeida marisley hirinea_de
Almeida marisley hirinea_demafrooos
 
Monografia douglashiura
Monografia douglashiuraMonografia douglashiura
Monografia douglashiuraDouglas Longo
 
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de GraduaçãoTrabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de GraduaçãoDaniel Fernando Pigatto
 
Relatorio projecto tracking_glove
Relatorio projecto tracking_gloveRelatorio projecto tracking_glove
Relatorio projecto tracking_gloveJosé Fonseca
 
Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...
Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...
Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...Francisco Gerson A de Meneses
 
Monografia - Representação de Ambientes com recursos de Realidade Aumentada
Monografia - Representação de Ambientes com recursos de Realidade AumentadaMonografia - Representação de Ambientes com recursos de Realidade Aumentada
Monografia - Representação de Ambientes com recursos de Realidade AumentadaGil Ambrósio Lopes Júnior
 
Monografia - LABORATÓRIO VIRTUAL DE FÍSICA UTILIZANDO O SOFTWARE UNITY
Monografia - LABORATÓRIO VIRTUAL DE FÍSICA UTILIZANDO O SOFTWARE UNITYMonografia - LABORATÓRIO VIRTUAL DE FÍSICA UTILIZANDO O SOFTWARE UNITY
Monografia - LABORATÓRIO VIRTUAL DE FÍSICA UTILIZANDO O SOFTWARE UNITYTailo Mateus Gonsalves
 
Visão artificial
Visão artificialVisão artificial
Visão artificialPedrolobo8
 
SisAC. Sistema de Auxílio à Classificação. Estudo de Caso: Ostracode
SisAC. Sistema de Auxílio à Classificação. Estudo de Caso: OstracodeSisAC. Sistema de Auxílio à Classificação. Estudo de Caso: Ostracode
SisAC. Sistema de Auxílio à Classificação. Estudo de Caso: OstracodeGiovani Barili
 
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...antonio sérgio nogueira
 
Estudo da qualidade do ambiente virtual de aprendizagem moodle
Estudo da qualidade do ambiente virtual de aprendizagem moodleEstudo da qualidade do ambiente virtual de aprendizagem moodle
Estudo da qualidade do ambiente virtual de aprendizagem moodlecamilaflorentinofrancisco
 
WALL TRICKS APP: Aplicativo para registro e compartilhamento de manobras de s...
WALL TRICKS APP: Aplicativo para registro e compartilhamento de manobras de s...WALL TRICKS APP: Aplicativo para registro e compartilhamento de manobras de s...
WALL TRICKS APP: Aplicativo para registro e compartilhamento de manobras de s...Bruno Sartori Quadros
 
Projeto de pesquisa - Automação Residencial
Projeto de pesquisa - Automação ResidencialProjeto de pesquisa - Automação Residencial
Projeto de pesquisa - Automação ResidencialMatheus Alves
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 

Ähnlich wie Redes Neurais para Identificar Áreas Verdes em Imagens de Satélite (20)

Projeto de reconhecimento de placas (2)
Projeto de reconhecimento de placas (2)Projeto de reconhecimento de placas (2)
Projeto de reconhecimento de placas (2)
 
Rastreamento
RastreamentoRastreamento
Rastreamento
 
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
 
Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de MandiritubaDesenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
 
Almeida marisley hirinea_de
Almeida marisley hirinea_deAlmeida marisley hirinea_de
Almeida marisley hirinea_de
 
Almeida marisley hirinea_de
Almeida marisley hirinea_deAlmeida marisley hirinea_de
Almeida marisley hirinea_de
 
Monografia douglashiura
Monografia douglashiuraMonografia douglashiura
Monografia douglashiura
 
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de GraduaçãoTrabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
 
Relatorio projecto tracking_glove
Relatorio projecto tracking_gloveRelatorio projecto tracking_glove
Relatorio projecto tracking_glove
 
Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...
Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...
Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...
 
Teoria fuzzy
Teoria fuzzyTeoria fuzzy
Teoria fuzzy
 
Monografia - Representação de Ambientes com recursos de Realidade Aumentada
Monografia - Representação de Ambientes com recursos de Realidade AumentadaMonografia - Representação de Ambientes com recursos de Realidade Aumentada
Monografia - Representação de Ambientes com recursos de Realidade Aumentada
 
Monografia - LABORATÓRIO VIRTUAL DE FÍSICA UTILIZANDO O SOFTWARE UNITY
Monografia - LABORATÓRIO VIRTUAL DE FÍSICA UTILIZANDO O SOFTWARE UNITYMonografia - LABORATÓRIO VIRTUAL DE FÍSICA UTILIZANDO O SOFTWARE UNITY
Monografia - LABORATÓRIO VIRTUAL DE FÍSICA UTILIZANDO O SOFTWARE UNITY
 
Visão artificial
Visão artificialVisão artificial
Visão artificial
 
SisAC. Sistema de Auxílio à Classificação. Estudo de Caso: Ostracode
SisAC. Sistema de Auxílio à Classificação. Estudo de Caso: OstracodeSisAC. Sistema de Auxílio à Classificação. Estudo de Caso: Ostracode
SisAC. Sistema de Auxílio à Classificação. Estudo de Caso: Ostracode
 
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...
UMA SUGESTÃO DE METODOLOGIA DE DESENVOLVIMENTO E GESTÃO DE PROJETO DE SOFTWAR...
 
Estudo da qualidade do ambiente virtual de aprendizagem moodle
Estudo da qualidade do ambiente virtual de aprendizagem moodleEstudo da qualidade do ambiente virtual de aprendizagem moodle
Estudo da qualidade do ambiente virtual de aprendizagem moodle
 
WALL TRICKS APP: Aplicativo para registro e compartilhamento de manobras de s...
WALL TRICKS APP: Aplicativo para registro e compartilhamento de manobras de s...WALL TRICKS APP: Aplicativo para registro e compartilhamento de manobras de s...
WALL TRICKS APP: Aplicativo para registro e compartilhamento de manobras de s...
 
Projeto de pesquisa - Automação Residencial
Projeto de pesquisa - Automação ResidencialProjeto de pesquisa - Automação Residencial
Projeto de pesquisa - Automação Residencial
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 

Redes Neurais para Identificar Áreas Verdes em Imagens de Satélite

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. AGRADECIMENTOS A todos os familiares, amigos, professores e colegas que ajudaram a realizar o trabalho.
  • 5. “Por pensar ser o trabalho mais difícil que existe, só poucos se dedicam a isso.” Henry Ford, 30.07.1863 - 07.04.1947
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. LISTA DE SIGLAS INPE – Instituto Nacional de Pesquisas Espaciais JavaNNS – Java Neural Network Simulator RNA – Redes Neurais Artificiais
  • 11. 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
  • 12. 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 11
  • 13. 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. 12
  • 14. 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. 13
  • 15. 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 14
  • 16. 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 15
  • 17. 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. 16
  • 18. 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). 17
  • 19. 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, 18
  • 20. 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). 19
  • 21. 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 20
  • 22. 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. entrada fixa wk0=bk (bias) x0=+1 wk0 x1 wk1 função de ativação sinais uk yk x2 wk2 de f(uk) entrada saída junção aditiva xm wkm Função degrau pesos sinápticos Figura 3 – Modelo de Neurônio Artificial [UFLA, 2006] 21
  • 23. 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 (u k), 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: m y fk f k () u wb x k kj j j1 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 m y fu f k () k wx kjj j0 Figura 5- Função de ativação A Função logística é mostrada na Figura 6 Figura 6 – Função logística 22
  • 24. 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. 23
  • 25. 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] 24
  • 26. 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. 25
  • 27. Vetor de estado do ambiente ambiente professor Resposta desejada Resposta real + Sistema de aprendizagem - Sinal de erro 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. 26
  • 28. 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. 27
  • 29. 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 28
  • 30. 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 29
  • 31. Na Figura 14 é mostrado o padrão reconhecido como área verde Figura 14 – Saída de neurônios ativada 30
  • 32. 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. 31
  • 33. 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. 32
  • 34. 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. 33
  • 35. 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. 34
  • 36. 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”. 35
  • 37. 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. 36
  • 38. 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. 37
  • 39. 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. 38
  • 40. 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; 39
  • 41. 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 40
  • 42. 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. 41
  • 43. 1000100000000000111111110 1110000000100011111111110 1100000000100011111111110 0000000001101111111111110 0010000011000111111111110 0011000011000111111111110 0011110110001111111111111 0100111111011111111111111 0000011111111111111111111 0000011111011111111111100 0000011110001111111110001 0000111110000011111100000 0000111000000001111100000 0000111000000001111110100 0000001110000000100110001 0000000111000001000000000 0000000100000000000000000 0000000111000000000000000 1000101011110000000000111 0000001111110011100110000 0000000111100001111111100 0000011011100000011111110 0000111111100000000111100 0011111101001000000001000 0001101100000000000000000 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. 42
  • 44. 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. 43
  • 45. 7. Análise dos Resultados 45 40 35 30 25x2;10x1 100 25 25x2;10x1 500 20 25x2 200 2x25 100 15 10 5 0 1 2 3 4 5 6 7 8 9 10 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 44
  • 46. 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. 45
  • 47. Figura 21 – Gráfico de erro da rede neural durante o treinamento. 46
  • 48. 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. 47
  • 49. 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. 48
  • 50. 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. 49
  • 51. 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. 50
  • 52. 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. 51
  • 53. 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. 52
  • 54. Anexos Anexo 1 – Visões do JNNS Figura 22 – Rede Neural não treinada. Figura 23 – Interface de ferramentas para o treinamento 53
  • 55. 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 54
  • 56. Padrão reconhecido como área verde Figura 26 – Saída de neurônios ativada 55
  • 57. 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 Resultado esperado 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 56
  • 58. 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 57
  • 59. 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 58
  • 60. 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 59
  • 61. 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 60
  • 62. 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 61
  • 63. 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 62
  • 64. 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 63
  • 65. 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 91.25% acerto 64