View
504
Download
2
Category
Preview:
Citation preview
ANHANGUERA EDUCACIONAL SA.Faculdade Anhanguera de ValinhosCurso de Ciência da Computação
André Luiz Pitante,Daniel Vecchiato e
Felipe Kaufmann Corrêa
Redes Neurais para a Identificaçãode Padrões em Imagens de Mapas
Valinhos2008
1
André Luiz Pitante,Daniel Vecchiato e
Felipe Kaufmann Corrêa
Redes Neurais para a Identificaçãode 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, às Faculdades Integradas de Valinhos, Faculdades de Ciências Administrativas, sob a orientação do prof. Ms. Maurício Morais, prof. Dra. Jaqueline, do prof. Nicola Zagari, da profa. Ms. Janaine.
Valinhos
2
2008André Luiz Pitante,Daniel Vecchiato e
Felipe Kaufmann Corrêa
Redes Neurais para a Identificaçãode 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 das Faculdades Anhanguera de Valinhos, Curso de Ciência da Computação, pela banca examinadora constituída pelos professores:
________________________________Maurício Morais
Orientador
________________________________Jaqueline
________________________________Nicola Zagari
________________________________Janaine
3
Valinhos2008
AGRADECIMENTOS
A todos os familiares, amigos, professores e colegas que ajudaram a realizar o
trabalho.
4
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
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, 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. Para o caso de teste, 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 na linguagem Java
foi usado para fazer a segmentação da imagem. Este mesmo programa também fez
o tratamento e transformou a imagem em código binário gravado em um arquivo. A
importância deste processo de segmentação consiste em que ele seja feito para que
o programa seguinte consiga entender 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, foi treinada para que a área verde pudesse ser
encontrada no mapa. Quanto maior o número de imagens fornecidas para a rede
neural a ser treinada mais experiente esta ficará. A partir deste experimento
conseguiu-se obter resultados que demonstram que a rede foi treinada para
identificar o padrão.
Palavras-chave:
áreas verdes, segmentação de imagem, Redes neurais artificiais
6
LISTA DE FIGURAS
Figura 1 – Histórico do desmatamento...............................................................15
Figura 2 – Representação do Neurônio Biológico..............................................19
Figura 3 – Modelo de Neurônio Artificial.............................................................21
Figura 4 – Função de saída................................................................................21
Figura 5 – Função de Ativação...........................................................................22
Figura 6 – Função logística.................................................................................22
Figura 7 – Rede Neural Monocamada.................................................................23
Figura 8 – Modelo de Rede Neural Múltiplas Camadas......................................24
Figura 9 - Diagrama de treinamento de algoritmo Backpropagation....................27
Figura 10 – Rede Neural não treinada................................................................27
Figura 11 – Interface de ferramentas para o treinamento....................................28
Figura 12- Rede Neural em processo de treinamento..........................................28
Figura 13 – Saída de neurônios não ativada........................................................25
Figura 14 – Saída de neurônios ativada...............................................................26
Figura 15 – exemplo de imagem não segmentada...............................................36
Figura 16 – Exemplo de imagem fragmentada.....................................................37
Figura 17 – Imagem escolhida para gerar as amostras........................................38
7
LISTA DE TABELAS
Tabela 1 – Médias Obtidas pela técnica 10 fold Cross Validation, 300 ciclos...........45
Tabela 2 – Médias Obtidas pela técnica 10 fold Cross Validation, 100 ciclos...........45
Tabela 3 - Resultados pela técnica de 10 fold Cross-validation, 100 ciclos...............52
8
LISTA DE SIGLAS
INPE – Instituto Nacional de Pesquisas Espaciais
JavaNNS – Java Neural Network Simulator
RNA – Redes Neurais Artificiais
9
SUMÁRIO
1. Introdução........................................................................................................10
1.1 Objetivo......................................................................................................11
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....................................................18
2.5.1 Tipos de Redes Neurais Artificiais.......................................................23
2.6 Treinamento...............................................................................................24
2.7 Aprendizado de Máquina...........................................................................26
3. Trabalhos correlatos........................................................................................30
3.1 Integração entre redes neurais e correlação para a identificação
de pontos de apoio pré-sinalizados. .........................................................30
3.2 Detecção de volume de tráfego de veículos
proporcionada por visão computacional via redes neurais.......................31
4. Metodologias...................................................................................................33
4.1 Metodologia de Pesquisa..........................................................................33
4.2 Metodologia de Desenvolvimento de Software.........................................34
5. Desenvolvimento.............................................................................................35
5.1 Programa que Segmenta..........................................................................35
5.2 Projeto da Rede Neural.............................................................................36
6. Avaliações e Testes........................................................................................40
6.1 Treinamento da Rede................................................................................40
10
6.2 Coleta dos Resultados..............................................................................44
7. Análise dos Resultados..................................................................................45
8. Conclusão.......................................................................................................46
8.1 Limitações.................................................................................................47
8.2 Trabalhos Futuros.....................................................................................47
Referências Bibliográficas....................................................................................49
1. Introdução
Atualmente a questão a respeito do meio ambiente tornou-se um assunto
importante, tanto por parte das empresas quanto pelas pessoas. A grande parte da
vegetação no mundo foi devastada por haver principalmente o interesse para usar o
espaço quanto usar para a produção a madeira. Por meio de satélites que
monitoram a face da terra, podem também fazer o controle das áreas desmatadas
de um país. Poucos programas que fazem a análise de uma área possuem um
recurso semelhante, normalmente não são acessíveis para o público. O sistema de
uma empresa ou uma aplicação que faça identificação com o uso de um computador
de alta capacidade pode gerar um custo bem elevado para resolver o problema.
Existem empresas que fazem esse trabalho, mas é necessário pagar alguma taxa
mensal para elas realizarem este estudo e trazerem os resultados atualizados.
Ao longo do trabalho procura-se apresentar como é realizada a identificação
de áreas verdes em imagens de satélite. Para isso é necessária uma rede neural
artificial que faça o trabalho de reconhecimento do padrão, mesmo que existam
outras formas de realizar essa tarefa. Outros métodos de identificação podem ser
usados nesse processo, com o estudo feito, 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 ou Earth,
são as ferramentas gratuitas disponíveis na Internet, que fornecem as imagens dos
mapas, que serão usados para os treinamentos e os testes. A função da rede neural
artificial é 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,
11
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 ajuda a simplificar o processo de
reconhecimento. Códigos foram estudados para a implementação de um 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, que foi usado para criar a rede neural, só aceita arquivos em códigos
binário como entrada. Os treinamentos e testes realizados permitiram identificar a
eficiência da rede neural artificial criada.
1.1. Objetivo
Hoje em dia existem várias aplicações de reconhecimento de padrões, que
são implementados para identificar objetos em imagens. Existem softwares que
fazem a identificação de rostos humanos com a ajuda de algoritmos que estão
dentro de 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 idéia inicial deste projeto consistia na elaboração de um programa que
fizesse a identificação de pessoas por meio de fotos tiradas delas com a ajuda de
uma câmera. A identificação deste rosto precisaria de uma rede neural artificial para
identificar o padrão. Um aplicativo em modo gráfico ajudaria a pessoa, que faz o
controle deste sistema, a identificar o rosto que se assemelha mais com o padrão
escolhido a partir da imagem de um banco de dados do rosto da pessoa no monitor.
O tempo disponível para a criação deste tipo de sistema que fizesse tal trabalho de
identificação de rostos era insuficiente.
Identificar formas geométricas nas imagens de satélite foi algo que fez mudar
a forma de se ver um mapa. Rotatórias tem formato de círculos, retângulos tem o
formato de quarteirões entre outras formas que podem ser encontradas. A outra
12
idéia possível, foi a escolhida para a realização deste trabalho, isto é, a identificação
de padrões em uma imagem de satélite de uma área urbana. O trabalho foi
simplificado para ajudar a finalizar em tempo, e realizar a tarefa que era identificar
áreas verdes. Outras possíveis soluções também foram estudas para o nosso
trabalho, como a de implementar uma rede neural artificial para o trabalho, junto com
uma interface que ajudaria o usuário a escolher um padrão de interesse em uma
imagem. Para isso houve a simplificação, pela falta de tempo não teria como fazer o
programa, dessa maneira, escolher uma ferramenta para criar uma rede neural
ajudou em boa parte do trabalho. No meio de várias opções de aplicativos que
fariam este processo, o JavaNNS foi a melhor opção além de ser um software livre1,
também traz uma gama de opções para criar e configurar uma rede.
Mas a principal idéia de fazer a identificação da área verde em um mapa, foi o
mais próximo alcançado. 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. Isso foi
necessário, pois o programa JavaNNS só aceita este tipo de arquivo como entrada.
A rede criada pelo mesmo programa passa por uma fase de treinamento, para
depois obter os resultados por meio dos testes, para assim identificar o padrão que é
a área verde.
1.2 Proposta
Este trabalho propõe solucionar 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,
serão usadas no trabalho, como o Google Maps. Poderia ser qualquer outra
ferramenta do gênero, mas no caso é a mais apropriada, pois possui maior
quantidade de imagens atualizadas e uma 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.
1 Software Livre, um programa de computador, que pode ser usado, estudado por programadores.
13
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 baixo.
Em relação ao software, a ferramenta gratuita Google Maps, usada para fazer
a captura das imagens que serão usadas 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. Código aberto em linguagem
Java que ajudaram 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.
Com isso tudo que foi pesquisado, escolhido e planejado será possível
realizar todo o trabalho, que passa por vários testes, que serão mostrados ao longo
deste.
14
2. Pesquisa Bibliográfica
2.1 Diminuição das Áreas Verdes
As áreas arborizadas não são muito valorizadas nas cidades, 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,
2007]. Nos parques de cidades são encontradas mais áreas com vegetação com
mais freqüência, são lugares que tem uma temperatura mais baixa.
A Amazônia está 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 não é
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. As
queimadas contribuem para estragar a mata, além de haver também pequenas
fábricas na região, que destroem florestas inteiras para transformar em carvão.
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 não faz algum tipo de controle, na região da Amazônia, mesmo havendo
2 Dióxido Carbono
15
várias leis contra o desmatamento. Isso tudo contribui com o aquecimento global,
que é muito discutido fora do país, que é um dos paises que possui uma das
maiores áreas de cobertura vegetal.
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 mostra
ser 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 mapas com fotos via satélite com qualidade
16
de serviços pagos, mas fornecidos gratuitamente ao público. Tanto o Maps quanto
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,
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 a 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 desses aplicativos são de 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
são atualizados. 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 outro, 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
17
detalhe importante que pode ser mostrado por meio de setas, por exemplo.
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, pelo método 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
Referências
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
(thresholding) ou técnicas mais avançadas como a utilização de redes neurais
artificiais.
18
A técnicas 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 simples 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)
Referências
Redes Neurais Artificiais 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.
Um neurônio biológico é uma estrutura celular formada por dendritos, axônio
19
e soma, compondo diferentes tipos de redes ou sistemas especialistas, 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, pág. 713).
Na Figura 1 é ilustrado um neurônio biológico:(todas as figuras devem ser
mencionadas no texto)
Figura 2 - Representação do neurônio biológico. (UNISANTA, 2006)
Já achei a fonte da imgem Zur
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)(Referência) realizaram um trabalho que fazia a
20
analogia entre as células vivas e o processo eletrônico, simulando o comportamento
do neurônio natural, que o neurônio possuía apenas uma saída, que era uma função
do valor de suas entradas.
O Neurônio de McColloch e Pitts consiste basicamente de 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 um certo limiar (threshold) q.
O psicólogo Donald Hebb (1949) (Referência)demonstrou que a 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(Referência) 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.
21
wk1
wk2
wkm
f(uk)
x1
x2
xm
uk
wk0=bk
yksinais
deentrada
pesossinápticos
junçãoaditiva
(bias)
funçãode ativação
saída
wk0x0=+1
entrada fixa
Funçãodegrau
Figura 3 – Modelo de Neurônio Artificial (Referência)
A operação de um neurônio artificial se resume ao modo como os sinais são
apresentados à entrada (x1 à xm). Cada sinal é multiplicado por um peso que indica
sua influência na saída da unidade (wk), na qual é feita a soma ponderada dos sinais
que produz um nível de atividade (uk), a função de ativação f(uk) tem a função de
limitar a saída e introduzir a não-linearidade ao modelo. O bias bk tem o papel de
aumentar ou diminuir a influência do valor das entradas, podendo-se considerar o
bias como uma entrada de valor constante 1, multiplicado por um peso igual a bk.
Matematicamente a saída pode ser expressa por:
Figura 4-Função de saída
m
jkjkjkk bxwfufy
1
)(
22
Considerando o bias como entrada de valor x0=1 e peso wk0=bk também pode ser
expressa por:
Funções de ativação
Figura 5- Função de ativiação
Função logística
Figura 6 – Função logística
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 de 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.
23
2.5.1 Tipos de Redes Neurais Artificiais
Existem basicamente 3 tipos básicos de arquitetura de RNAs: (Referência)
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 partir destes conceitos, há por definição da arquitetura da rede:
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.
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. (Aumenta o tamanho do
parágrafo)
Figura 7 - Rede Neural Monocamada.
24
Rede feedforward de Múltiplas Camadas (Multilayer Perceptron - MLP). Essas redes
têm uma ou mais camadas intermediárias ou ocultas.
Figura 8 – Modelo de Rede Neural Múltiplas Camadas.
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: (Referência)
1) Aprendizagem Não-supervisionada; a rede atualiza seus pesos sinápticos
sem indicações quanto a 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
25
minimizar o erro propagado entre o padrão apresentado a rede e o padrão a
ser reconhecido.
Neste caso de uso optou-se pela Aprendizagem Supervisionada. Também
conhecida com aprendizagem com professor, consiste em que o professor tenha o
conhecimento do ambiente, e fornece o conjunto de exemplos de entrada-resposta
desejada. Com esse conjunto, o treinamento utiliza-se da regra de aprendizagem
por correção de erro.
Figura 9 - Diagrama de treinamento de algoritmo Backpropagation.
No entanto, quando esse 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.
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
26
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.
2.7 Aprendizado de Máquina
Este trabalho carecia de um programa para auxiliar na criação de redes
neurais, preferencialmente gratuito. Desta forma,optou-se por estudar o programa
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 com o ganho conhecimento do
JavaNNS as primeiras redes foram criadas e treinadas. O treinamento da rede
criada exige a criação de um arquivo texto com código em binário, no formato ".txt".
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 44.44 e não foi permitido pois o JavaNNS 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.
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, 1
camada oculta de 25x1 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 um total de 100 ciclos de treinamentos.
Figura 12 - Rede Neural em processo de treinamento
Padrão reconhecido como área não verde
Figura 13 – Saída de neurônios não ativada
29
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. O Matlab utilizado para identificar o alvo da imagem.
31
Depois da aerofoto ser tirada foram marcadas as coordenadas dos pontos
marcados, com isso há como fazer os algoritmos calcularem 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 alto padrão, 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 faz a identificação
do número de carros em uma rodovia. Foram usados os melhores recursos que o
autor 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. Um outro programa
foi usado para desmanchar o filme em várias imagens, separadas por arquivos. 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 este autor utilizou
para fazer um pré-processamento das imagens e depois passar para a rede neural
32
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 9 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.
Cada época que foi evoluindo melhor a rede neural artificial ficava, 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 autor.
Este trabalho o autor obteve os resultados conforme o estudo que ele fez,
mas com um custo elevado para a época. Uma parte importante do trabalho é que
ele calculou a dimensão do problema a ser resolvido antes de fazer os 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 do autor mais próximo ao proposto.
33
4. Metodologias
4.1 Metodologia de Pesquisa
Este trabalho usou na maior parte da pesquisa a Internet, para encontrar uma
solução para o problema. Foi inicialmente necessário identificar qual método era o
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 usou-se 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, 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 rede neural artificial implementada por meio de um código, um
programa auxiliou para criar a rede. O JavaNNS programa adotado, 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 só
recebia como entrada arquivos em código binário. Algumas imagens foram passadas
para um arquivo binário por meio de vários programas, mas dessa forma perderia se
muito tempo para fazer os testes. Códigos foram pesquisados na Internet no site
Sourceforge [SOURCEFORGE, 2008], 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, segmentar em arquivo binário. Com tudo que encontrado para a pesquisa,
obteve-se um programa que fazia tudo para gerar o arquivo em códigos binários.
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.
34
4.2 Metodologia de Desenvolvimento de Software
Para este trabalho devido a complexidade do projeto e o fato de que embora
o estudo para tal realização é dito no meio ciêntifico-acadêmico, como bastante
difundido, cada problema tem suas particularidades e é isso que torna cada
problema a ser resolvido tão particular, muito embora um problema a ser abordado
tenha como apoio a busca por uma abordagem mais próxima possível. Por esse
motivo, ao início, observou-se a necessidade de uma metodologia que atendesse ao
interesse de gerenciar tal desenvolvimento da melhor maneira possível, e para isso
foi escolhida Metodologias Ágeis.
Segundo a definição encontrada em Michel dos Santos Soares (Referência)
“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”. (artigo - Comparação entre Metodologias Ágeis e
Tradicionais para o Desenvolvimento de Software) (ajustar conforme as normas da
ABNT)
35
5. Desenvolvimento
5.1 Programa que Segmenta
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 como a principal responsável no trabalho 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 binarizacao 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 ”.
Outra parte do desenvolvimento em que foram encontradas dificuldades foi na
conversão em preto e branco, uma vez com a biblioteca para manipulação de pixels
já em uso, uma das alternativas para esse processo de conversão de imagem é a
36
utilização de um outro recurso da biblioteca “ handle single pixel”, que tem como
função tratar a representação das cores no pixel, o objetivo esta fase é minimizando
as cores vermelha, e azul e a partir daí o pixel é convertido em preto e branco,
sendo branco representando o verde e o preto representando as demais cores.
Com a imagem já em preto e branco a segmentação por limiar bimodal é
iniciado dando origem a uma matriz de 25 por 25 posições de representação binária,
sendo 1 representa o verde e 0 representa as demais cores, no decorrer dessa fase
novamente se faz uso da manipulação de pixels, desta vez para a determinação do
valor de saída para o pixel, com a utilização de um limiar para separação das duas
cores.
Com a imagem fragmentada e binarizada a última fase do programa é gerar
um arquivo de extensão “.Pat”, nesse ponto um problema ameaçou atrapalhar o
projeto, a utilização da linguagem Java para a geração de um arquivo tipo texto,
para solução desse problema foi utilizado a biblioteca “java.io”, a importacia de se
gerar um arquivo com uma estrutura legível pela rede neural artificial, é
extremamente alto uma vez que esse arquivo será responsável pela aquisição e
manipulação das informações.(parágrafo extenso e confuso)
5.2 Projeto da Rede Neural
Foi escolhida a arquitetura MLP por ser de fácil treinamento e eficácia quanto
ao aprendizado.
(trecho igual ao da página 27)
A rede MLP é composta por 25x25 neurônios na camada de entrada, 1
camadas oculta de 5x5 e 1 neurônios 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. Nesta arquitetura, o framework torna-se
instável, e o número de interconexões é de 15650. Quanto ao número de neurônios
da camada de saída, 1 neurônio foi suficiente pois a resposta desejada está entre 0
e 1.
37
Figura 15 – Rede Neural não treinada. (mesma figura cap 2)
Figura 16 – Interface de ferramentas para o treinamento(mesma figura do cap 2)
38
Aprendizagem da rede com JNNS
Foram realizados um total de 100 ciclos de treinamentos.
Figura 17- Rede Neural em processo de treinamento (mesma figura do cap 2)
Padrão reconhecido como área não verde
Figura 18 – Saída de neurônios não ativada (mesma figura do cap 2)
39
Padrão reconhecido como área verde
Figura 19 – Saída de neurônios ativada (mesma figura do cap 2)
6. Avaliações e Testes
40
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 dividido em 4 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 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;
Imagem escolhida para gerar as amostras para a técnica de substituição
41
Figura 20 – Exemplo de imagem não segmentada
Fragmentação da imagem
Figura 21 – Exemplo de imagem fragmentada
42
Imagem escolhida para gerar as amostras para a técnica de substituição
Figura 22 – Imagem escolhida para gerar as amostras
Transformação ocorrida em um fragmento de imagem após a aplicação do algoritmo
de binarização.
43
Resultado da obtenção de valores em binário correspondentes aos pixels da
imagem.
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
44
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 2x25 3x25N° do Teste N° de Acertos
1 28 30 292 24 24 303 27 25 284 21 30 225 17 34 246 26 28 287 23 26 288 23 31 259 32 31 35
10 31 31 32Total de acertos 252 290 281Porcentagem de Acertos 63% 72,5% 70,3 %
Tabela 1 – Médias Obtidas pela técnica 10 fold Cross Validation, 300 ciclos.
A segunda tabela gerada com o treino com uma nova amostra, treinada com 100 ciclos
e uma outra metodologia, que os pesos foram alterados.
Camadas Ocultas 2x25
N° do TesteN° de Acertos
1 342 363 354 345 376 397 388 369 38
10 38Total de acertos 365Porcentagem de Acertos 91,3%
Tabela 2 – Médias Obtidas pela técnica 10 fold Cross Validation, 100 ciclos.
45
7. Análise dos Resultados
De acordo com a média dos resultados obtidos nos testes, bem como o
análise de resultados brutos e individuais quanto comportamento da rede em lidar
com o mapeamento não-linear operando a um quinto de sua eficiência como
mencionado nas limitações, obter-se o resultado na classificação de mais de 50% de
acertos nos testes a que foi submetida.
Avaliando-se o método de Redes Neurais Artificiais para o reconhecimento de
padrões, esse método mostrou-se bastante eficiente e de fácil treinamento atingindo
um grau de aprendizagem muito satisfatório. (texto muito vago)
46
8. Conclusão
O trabalho precisou de muita pesquisa para superar as dificuldades por ele
apresentadas, a fim de chegar ao objetivo desejado, que consistiu na 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 par 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 para adquirir as fotos de satélite,
no caso o Google Maps, eleita a região de Campinas com algumas áreas verdes.
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 que faz todo
processo descrito anteriormente, de uma vez só, gera ao final um arquivo texto com
o código binário. O programa JavaNNS ajudou na criação da rede neural artificial
que foi treinada e depois testada. O arquivo de entrada que foi gerado no processo
de segmentação foi usado para o programa poder treinar a rede neural artificial e
depois testá-la. Este mesmo processo usando outros programas pagos não seria
possível, pois exigiria uma melhor configuração. Os recursos utilizados neste
trabalho usados são gratuitos e exigem um equipamento com configurações não
muito avançadas.
O resultado obtido como alvo, pois não houve um número grande de erros
gerados na maioria dos casos. Após a análise dos resultados percebeu-se que a
rede neural artificial foi bem treinada e estava bem preparada para identificar as
áreas verdes no mapa. Isso mostrou que com a pesquisa realizada ao decorrer do
ano, com os recursos disponíveis, resultou neste trabalho que trouxe o resultado
procurado.
47
8.1 Limitações
Durante o processo de avaliação do JavaNNS, constatou-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 em seu kernel construído
em linguagem C, e uma camada Java interfaceando o aplicativo, mas o que se
descobriu é que partes de kernel não eram passíveis de alteração, eram
simplesmente arquivos .exe, uma engenharia reversa tomaria muito tempo além do
fato de não saber que tipo de código, que maneira estaria estruturado e caso
pudesse ser alterado, como se comportaria. (texto confuso)
Outro limite encontrado foi quanto à arquitetura proposta, o framework torna-
se instável com camadas ocultas maiores das que utilizadas. Isso comprometeu a
rede neural quanto a sua integridade de mapeamento não-linear que exige por
definição matemática, no mínimo uma camada oculta com o mesmo tamanho da
camada de entrada da rede.
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 com a mesma
rede. Encontrar ruas que estiverem mais movimentadas em relação ao trânsito, em
um determinado local.
O mesmo aplicativo sendo usado no celular - como o Google Maps já é
compatível na maioria dos navegadores - fazer uma identificação da área verde no
mapa por meio de um programa, para fazer turismo ecológico, por exemplo.
Um estudo aprofundado da mata atlântica disponível no Brasil pode também
adotar esse estudo que foi feito. Ainda é possível realizar a comparação entre
diferentes regiões com cálculos estatísticos que podem ser feitos por meio do
tamanho da área, observando a quantidade existente em uma região. A rede
48
neural artificial pode ser criada usando o MATLAB, que traz e utiliza muitos recursos
de uma máquina mesmo sendo com uma configuração que tenha um custo mais
alto.
49
Referências Bibliográficas
1) [UFG, 1997] 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: <
www.aoandrade.eletrica.ufu.br/Documents/Relat%F3rio%20final%20do
%20CNPQ.pdf > Acesso em: 31 mai 2008.
2)[PUCRS, 1995] 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:< www.ee.pucrs.br/~decastro/pdf/F_MasterThesis.pdf >. Acesso em:
16 mar 2008.
3) [RUSSEL, NORVIG, 2004] RUSSEL, Stuart e NORVIG, Peter Inteligência
Artificial, Tradução de: Artificial Intelligence, 2nd edition, tadução de PubliCare
Consultoria, Rio de Janeiro, Elsevier, 2004.
4)[GOOGLE BLOG, 2008] TAYLOR, Bret, The Official Google Blog. Disponível em: <
http://googleblog.blogspot.com/2005/02/mapping-your-way.html >. Acesso em: ago
2008.
5) [REVISTA INFO, 2006] CARDOZO, André, Google Revista Info, Editora Abril, jan
2006
6) [REVISTA INFO, 2007] FORTES, Débora, A Era dos Mapas, Revista Info, Editora
Abril, jan 2007.
7) [UNISC, 2000] 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: <
osorio.wait4.org/oldsite/wia-unisc/wia2000-full.pdf >. Acesso em: 20 mar 2008.
50
8) [MOREIRA, 2007] 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: ago 2008.
9) [ITA,1999] 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, 1999.
Disponível em: < www.ele.ita.br/cnrn/artigos-4cbrn/4cbrn_024.pdf > . Acesso em: 31
mai 2008.
10) [UNIARA, 2004] GARCIA, João Carlos Eugênio, Proposta de uma Infra-Estrutura
de Tomada de Decisões para SDIs, 2004. Disponível em: < link não encontrado >,
Acessado em: jul 2008.
11) [Estado de São Paulo, 2006] NOVAES, Washington, O clima, a economia, o
futuro da Amazônia, 2006. Disponível em: < www.estadao.com.br >. Acesso em: nov
2008
12) [UNIPAC, 2004] SOARES, Michel dos Santos, Comparação entre Metodologias
Ágeis e Tradicionais para o Desenvolvimento de Software, 2004. Disponível em: <
www.dcc.ufla.br/infocomp/artigos/v3.2/art02.pdf >. Acesso em: nov 2008.
13) [Estado de São Paulo, 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.
14) [Estado de São Paulo, 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.
15) [Estado de São Paulo, 2007] 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
16) [PUCPR, 2005] 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: ago 2008
17) [SOURCEFORGE, 2008] Códigos para o desenvolvimento do programa.
Disponível em: < http://sourceforge.net/ >. Acesso em: 2008
52
Anexo
Tabelas 3 - Resultados obtidos pela técnica de 10 fold Cross-validation, 100 ciclos
NºConjunto NºAmostra Resultado esperado
Resultado obtido
1 1 + 0.6272 + 0.3383 + 0.9954 + 0.9185 + 0.9976 + 0.9977 + 0.9938 + 0.9949 + 0.99110 + 0.99611 - 0.03312 - 0.34313 - 0.04214 + 0.64615 - 0.14216 + 0.99217 + 0.32118 + 0.75619 - 0.07020 - 0.01021 - 0.00822 - 0.01823 + 0.99124 + 0.71225 + 0.99426 + 0.99127 + 0.99728 - 0.02329 - 0.00230 - 031 - 0.35232 - 0.63133 + 0.98934 + 0.99635 + 0.39136 - 037 - 0.46038 - 0.12239 + 0.03740 - 0.153
53
Total de acertos 342 1 + 0.940
2 + 0.2073 - 0.6584 - 0.5295 - 0.0026 - 0.0027 + 0.9948 + 0.9929 + 0.77610 - 0.00911 + 0.29712 + 0.88813 + 0.79114 - 015 - 0.00516 - 0.00117 + 0.97818 - 0.20119 - 0.01020 - 0.01421 + 0.99322 - 0.34523 + 0.99224 - 0.00425 + 0.99226 - 0.05727 + 0.96728 + 0.99429 - 0.02430 - 0.13031 + 0.95432 - 0.04933 - 0.00134 - 035 - 0.29836 + 0.96237 + 0.99438 - 0.06139 - 0.00440 - 0.022
Total de acertos 363 1 - 0
2 - 0.0243 + 0.9934 - 0.5855 - 0.0036 - 0.028
54
7 - 0.0218 + 0.9919 + 0.95510 - 0.84411 - 0.52512 - 0.01513 - 0.00314 + 0.92915 + 0.87916 - 0.00717 - 0.02918 + 0.99519 + 0.99520 - 0.00121 + 0.90022 - 0.90823 - 0.77324 - 0.01325 - 0.04126 - 0.00227 - 0.07528 + 0.90529 + 0.99530 + 0.99031 + 0.99532 + 0.95733 + 0.98934 + 0.98335 + 0.99536 + 0.99537 - 0.70138 - 0.02639 - 040 - 0.261
Total de acertos 354 1 - 0.930
2 - 0.0493 + 0.9044 - 0.0225 - 06 - 0.5917 - 0.0088 - 0.8939 + 0.99410 + 0.99411 + 0.99412 + 0.99413 + 0.991
55
14 - 015 + 0.99116 + 0.99417 + 0.99018 - 0.79719 - 020 - 0.97221 - 0.86622 + 0.99223 + 0.98724 - 0.42525 - 0.00726 - 0.00327 - 0.20728 + 0.97729 + 0.99030 + 0.97631 + 0.99432 + 0.99233 + 0.92034 - 0.01035 - 0.03236 - 0.01137 + 0.99438 - 0.00739 - 0.01140 + 0.994
Total de acertos 345 1 - 0
2 - 0.0063 + 0.9754 - 0.6215 - 06 - 0.0177 - 0.0938 + 0.9809 + 0.42310 - 0.01011 + 0.98012 + 0.98013 + 0.97614 - 0.04515 + 0.98016 - 017 + 0.60218 + 0.98019 + 0.98020 + 0.980
56
21 + 0.97522 - 023 + 0.09224 + 0.97125 - 0.10326 - 0.07027 - 0.08928 + 0.98029 + 0.96630 - 031 - 0.00132 + 0.98233 + 0.91034 - 0.00435 - 0.00136 - 037 - 038 - 039 + 0.98040 + 0.975
Total de acertos 376 1 + 0.996
2 + 0.9973 + 0.9964 + 0.9965 - 06 - 07 + 0.9938 + 0.9209 + 0.96210 - 011 - 012 + 0.98013 + 0.98914 - 0.25515 - 0.22216 - 0.00217 - 018 + 0.99219 + 0.94520 + 0.99621 + 0.96622 + 0.73023 + 0.98124 + 0.76025 - 0.02926 - 027 - 0
57
28 + 0.99629 - 0.02430 - 0.08431 + 0.89832 - 0.01233 - 0.32534 + 0.86935 - 0.32836 + 0.99537 - 0.03938 + 0.99639 + 0.96840 + 0.147
Total de acertos 397 1 + 0.992
2 + 0.0323 - 0.0044 + 0.9945 + 0.9936 - 0.7587 - 0.0068 + 0.9549 - 0.05310 + 0.98311 - 0.34112 - 0.12213 - 0.01114 - 0.05015 + 0.99516 + 0.83317 - 0.16818 + 0.98819 + 0.99320 + 0.99421 + 0.96022 + 0.91623 + 0.76024 + 0.88725 - 0.36726 - 0.03127 + 0.79028 + 0.99229 - 0.00630 - 0.07731 - 0.09532 + 0.90033 + 0.78434 + 0.989
58
35 + 0.99336 - 0.04037 + 0.68138 - 0.05339 - 0.09340 + 0.993
Total de acertos 388 1 - 0.119
2 - 0.7223 - 0.2604 + 0.9765 - 06 - 07 + 0.9828 + 0.9889 + 0.98810 + 0.43311 + 0.97912 + 0.98813 + 0.98814 - 0.22715 + 0.98516 - 017 - 018 + 0.89219 - 020 - 0.28221 + 0.98822 + 0.98823 + 0.98824 - 0.40725 - 0.00626 - 0.35727 - 0.01128 - 0.76229 + 0.98730 - 031 - 032 + 0.98833 + 0.98734 + 0.86735 - 0.76436 + 0.97237 + 0.95338 + 0.98839 - 0.00240 - 0.055
Total de acertos 36
59
9 1 + 0.9902 + 0.9853 + 0.9904 + 0.6415 - 06 - 0.4727 - 0.2338 - 0.0019 - 010 - 011 - 0.00212 + 0.99013 + 0.97514 + 0.96715 - 0.00116 + 0.99017 + 0.99018 - 0.15619 - 0.82920 + 0.96721 + 0.99022 + 0.98423 + 0.98924 + 0.98825 - 0.05826 - 0.51227 + 0.99028 + 0.98629 - 0.00130 - 031 - 0.00432 + 0.99033 - 0.11734 - 035 + 0.98136 + 0.99037 + 0.99038 - 0.00439 + 0.87240 - 0.008
Total de acertos 3810 1 + 0.993
2 + 0.9883 + 0.9954 + 0.9955 + 0.9946 - 0.0267 + 0.995
60
8 - 0.0599 - 010 - 0.00711 - 0.12712 - 0.00113 - 0.33914 + 0.87015 - 0.11416 + 0.99517 + 0.95518 - 0.88119 + 0.99520 - 0.23221 - 022 - 0.54123 + 0.99524 + 0.99425 - 0.05926 - 0.05227 + 0.99428 + 0.99529 + 0.96230 - 031 - 0.00332 + 0.16433 - 0.02134 - 0.25135 - 0.24636 + 0.93137 + 0.99538 + 0.68639 + 0.93140 - 0.026
Total de acertos 38Porcentgem de
acerto91.25%
Recommended