Upload
tiago-alves-de-oliveira
View
39
Download
2
Embed Size (px)
Citation preview
Utilizacao de Tecnicas Inteligentes para a
Deteccao de Melanoma: Uma Abordagem
Baseada em Redes Neurais Artificiais e
GPGPU
Tiago Alves de Oliveira
PROJETO DE CONCLUSAO DE CURSO
Data de Deposito: 03 de dezembro de
2010
Assinatura:
Utilizacao de Tecnicas Inteligentes para a Deteccao de
Melanoma: Uma Abordagem Baseada em Redes Neurais
Artificiais e GPGPU
Tiago Alves de Oliveira
Michel Pires da Silva
Monografia apresentada ao Curso de Ciencia da Computacao do
UNIFOR-MG, como requisito parcial para obtencao do tıtulo de
bacharel em Ciencia da Computacao, sob a orientacao do Prof. Michel
Pires da Silva
Formiga – MG
07 de dezembro de 2010
Dedico este trabalho primei-
ramente a Deus, aos meus
pais Geraldo e Maria e em
especial, a Juliana Apare-
cida Silva.
Agradecimentos
Agradeco primeiramente a Deus, pois sem Ele, nada seria possıvel e nao estaria aqui
desfrutando desse momento que e tao importante para mim.
Aos meus pais Geraldo e Maria; pelo esforco, dedicacao e compreensao, em todos os
momentos desta e de outras caminhadas, mostraram-me o caminho certo e me apoiaram em
tudo.
Em especial, aos meus grandes amigos Christino da Costa Guimaraes, Davi Geraldo
Antonio Lima, Izaquiel Lopes de Bessas, Mauro Heleno de Freitas Jr, Walisson Maicon Silva
e Wander Inacio de Sousa, por sua confianca e credibilidade em minha pessoa, pelo mutuo
aprendizado de vida, durante nossa convivencia, no campo profissional e escolar. Amigos,
gratidao eterna!!!
Aos professores, especialmente ao Professor Msc. Michel Pires da Silva, pela contribui-
cao, dentro de suas areas, para o desenvolvimento dessa monografia, e, principalmente pela
dedicacao e empenho que demonstraram no decorrer de suas atividades para com o grupo.
A todos aqueles que, direta ou indiretamente, colaboraram para que este trabalho consigaatingir aos objetivos propostos.
”Ignis de lapide surgit mediante labore. ”
Com trabalho tudo se alcanca
Autor Desconhecido
Sumario
Lista de Figuras ii
Lista de Tabelas iv
1 Introducao 1
1.1 Objetivo do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Estrutura da monografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Estado da Arte 4
2.1 Consideracoes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Consideracoes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Cancer 6
3.1 Cancer de Pele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4 Processamento de Imagens 9
4.1 Representacao de Imagens Digitais . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1.1 Amostragem e Quantizacao . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2 Conceitos Basicos de Pixels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.1 Vizinhanca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.2 Conectividade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2.3 Caminho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2.4 Componente Conexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.5 Relacao Binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.6 Medidas de Distancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3 Etapas do Processamento de Imagens . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
i
5 Caracterizacao de Imagens 17
5.1 Caracterizacao de Imagens atraves das Cores . . . . . . . . . . . . . . . . . . . . 17
5.1.1 Fundamento de Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.1.2 Sistemas de Representacao de Cores RGB e CMY . . . . . . . . . . . . . 18
5.2 Histograma de Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.3 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6 Redes Neurais Artificiais 22
6.1 Redes Neurais Biologicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.2.1 Neuronio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.3 Arquitetura das Redes Neurais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.4 Processos de Aprendizagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.4.1 Algoritmos de Aprendizagem . . . . . . . . . . . . . . . . . . . . . . . . 30
6.5 Paradigmas de Aprendizagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.5.1 Algoritmo de Aprendizado Supervisionado do Multilayer Perceptron . . . 33
6.6 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7 CUDA 36
7.1 Arquitetura CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2 Programacao CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.3 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8 Utilizacao de RNA e GPGPU para reconhecimento de Melanoma 41
8.1 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
9 Resultados 47
9.1 Consideracoes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
10 Conclusoes 51
10.1 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
ii
Lista de Figuras
3.1 ABCD do Melanoma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1 Eixos para representacao de imagens digitais . . . . . . . . . . . . . . . . . . . . 10
4.2 Efeitos da variacao dos parametros: (a)256 x 256 / 256 nıveis; (b)32 x 32 / 256
nıveis; (c)256 x 256 / 64 nıveis; (d)256 x 256 / 2 nıveis. . . . . . . . . . . . . . . 12
4.3 Exemplificacao da Vizinhanca de 4 e Vizinhanca de 8 de um pixel . . . . . . . . 13
4.4 Etapas fundamentais para o processamento de imagens digitais . . . . . . . . . . 15
5.1 Espectro Visıvel das cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.2 Cubo representando o espaco de cores RGB . . . . . . . . . . . . . . . . . . . . 19
5.3 Exemplos de histogramas de cores de uma mesma imagem. . . . . . . . . . . . . 20
5.4 Exemplos de imagem low key e high key . . . . . . . . . . . . . . . . . . . . . . 21
6.1 Modelo de um neuronio biologico . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.2 Modelo de um neuronio matematico. Fonte (HAYKIN, 2007) . . . . . . . . . . . 25
6.3 Grafico da funcao de limiar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.4 Grafico da funcao linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.5 Grafico da funcao sigmoide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.6 Rede com uma unica camada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.7 Rede com uma camada intermediaria . . . . . . . . . . . . . . . . . . . . . . . . 29
6.8 Rede Recorrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1 Diferenca da especificacao dos processadores na CPU e na GPU . . . . . . . . . 37
7.2 A arquitetura runtime da CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.3 Exemplificacao da thread Batching da CUDA . . . . . . . . . . . . . . . . . . . 40
8.1 Solucao hıbrida para a reducao do tempo de treinamento da RNA com a CUDA 42
9.1 Resultados da leitura de imagens de 1MB utilizando o CPU e o GPU . . . . . . 48
9.2 Resultados da leitura de imagens de 5 MB utilizando o CPU e o GPU . . . . . . 49
iii
9.3 Resultados da leitura de imagens de 10 MB utilizando o CPU e o GPU . . . . . 50
9.4 Resultados do treinamento utilizando o CPU e o GPU . . . . . . . . . . . . . . 50
iv
Lista de Tabelas
9.1 Execucao do histograma de imagens de tamanho de 1 MB na CPU e GPU. . . . 48
9.2 Execucao do histograma de imagens de tamanho de 5 MB na CPU e GPU. . . . 48
9.3 Execucao do histograma de imagens de tamanho de 10 MB na CPU e GPU. . . 49
9.4 Execucao do treinamento da rede neural na CPU e GPU. . . . . . . . . . . . . . 49
v
Resumo
OLIVEIRA, T. A. Utilizacao de tecnicas inteligentes para a deteccao de melanoma: uma abordagem
baseada em redes neurais artificiais e GPGPU. (Graduacao) — Centro Universitario de Formiga –
UNIFOR-MG – Formiga, 2010.
Sistemas Distribuıdos e computacao paralela vem sendo utilizados para os mais diversos pro-
positos. O atrativo para tanto esta na sua capacidade de prover alto desempenho sobre uma
arquitetura transparente e flexıvel a nıvel de usuario. Areas, tais como, a ciencia da computacao
e a medicina aplicam esses conceitos para a obtencao de resultados em tempo computacional
viavel. Exemplos disso podem ser observados em trabalhos direcionados para o processamento
do genoma humano, tomografia computadorizada, dentre outros. Neste contexto, tem-se como
objetivo deste trabalho o desenvolvimento de uma ferramenta capaz de detectar de forma pre-
coce o cancer de pele melanoma. Para tanto, serao utilizados conceitos de redes neurais ar-
tificiais combinadas ao processamento paralelo de imagens em GPGPU visando alta vazao e
desempenho computacional. Os resultados destes demonstram que a utilizacao de paralelizacao
melhora o treinamento da rede e a leitura das imagens. Conclui-se com isso que a utilizacao de
GPGPU auxilia no processo classificatorio de Melanoma.
Palavras-chave: Tecnicas Inteligentes, Redes Neurais Artificiais, Programacao Paralela, GPGPU,
Processamento de Imagens, Histograma de Cores.
vi
Capıtulo
1Introducao
O uso de tecnicas computacionais esta se tornando, cada vez mais, comum em diversas areas
do conhecimento. Isso ocorre devido ao alto tempo exigido no processo de obtencao de bons
resultados para muitos casos reais. Na computacao, tecnicas como, heurısticas, metaheurısticas,
inteligencia artificial e computacao natural, muitas vezes, sao empregadas visando melhorar esse
desempenho e obter resultados significativos.
A inteligencia artificial e a computacao evolutiva, por exemplo, auxiliam nesse segmento
simulando o comportamento humano para a busca de alternativas viaveis para problemas com-
plexos ao custo de um baixo tempo computacional. Os algoritmos geneticos e as redes neurais
artificiais sao exemplos disso.
Segundo Haykin (2007), as redes neurais artificiais (RNA) apresentam dentre suas caracterıs-
ticas modelos matematicos que se assemelham as estruturas neurais biologicas. Essas estruturas
apresentam a capacidade computacional adquirida por meio de aprendizado e generalizacao de
estruturas chamadas de neuronios. O neuronio, por sua vez, e a unidade de processamento
de informacao que e fundamental para a operacao da rede. Nele, tem-se uma funcao de ati-
vacao, que restringe a amplitude da saıda do neuronio durante o treinamento. Essa funcao e
aplicada junto a mecanismos como o backpropagation para o treinamento da rede. No entanto,
dependendo do problema, sua aplicacao e prejudicada por demandar muito tempo e alto poder
computacional.
A utilizacao de sistemas distribuıdos e computacao paralela pode melhorar o tempo de
treinamento deste mecanismo, assim, torna-se alvo de varias pesquisas da atualidade. A com-
putacao paralela e uma forma de computacao em que varios calculos sao realizados simulta-
neamente, operando sob o princıpio de que grande problemas geralmente podem ser divididos
em problemas menores, que entao sao resolvidos concorrentemente (em paralelo) (KIRK; HWU,
2010). Existem diferentes formas de computacao paralela: em bit, instrucao, de dado ou de
1
tarefa. Uma maneira de programacao paralela e a baseada em GPGPU. A computacao pa-
ralela baseada em general-purpose computing on graphics processing units (GPGPU), ou , na
traducao livre Computacao Geral em Unidades de Processamento Grafico aproveita do poder
de paralelismo nos processadores graficos para efetuar calculos que gastariam muito tempo em
um processador normal. Ressalva-se que no modelo tradicional, a GPU somente e utilizada
para processar e gerar imagens e que no novo paradigma ela tem a possibilidade de executar
multiplos calculos, os quais, em paralelo, visto que a mesma possui SP (stream processor) sao
realizados ao mesmo tempo. Ela se torna recomendada para calculos pesados, processamento
de imagens, computacao grafica, jogos, entre outros nas mais diversas areas (NVIDIA, 2010).
O processamento de imagens e a forma de processamento de dados cuja a entrada e saıda sao
imagens, tais como, fotografias ou quadros de vıdeo. Dentre suas tecnicas tem-se a resolucao de
imagem, limite dinamico, largura de banda, filtro, operador diferencial, histograma, deteccao de
borda e a reducao de ruıdo. Dentre essas tecnicas, o histograma de cores e uma representacao
grafica da distribuicao de frequencias de uma massa de medicoes, normalmente um grafico de
barras verticais, que neste trabalho foi utilizado para a obtencao dos dados de entrada.
Neste trabalho, para a obtencao dos valores de entrada utiliza-se a tecnica de histograma de
cores para a leitura da imagem utilizando-se de GPGPU. Alem disso, aborda-se os conceitos de
redes neurais artificiais e GPGPU para alcancar resultados expressivos no processo de avaliacao
e deteccao do cancer de pele – melanoma. Objetiva-se com isso, reduzir de forma expressiva o
tempo computacional gasto para a leitura das imagens e o treinamento da rede paralelizando
estas fases.
1.1 Objetivo do trabalho
O objetivo geral deste trabalho e a deteccao de melanoma atraves de imagens para diagnos-
ticos, atraves de tecnicas de processamento de imagens e redes neurais artificiais em paralelo.
A seguir serao descritos os objetivos especıficos:
• Aplicar tecnicas de processamento de imagens digitais para desenvolver uma solucao a
partir do problema descrito;
• Utilizar as redes neurais artificiais para avaliar as imagens de cancer de pele Melanoma;
• Estudar e utilizar paralelismo nas duas tecnicas citadas anteriormente para melhora do
tempo de treinamento da Rede Neural Artificial e sua obtencao de resultados;
• Auxiliar profissionais da saude na deteccao do cancer de pele do tipo Melanoma, maxi-
mizando as chances e a qualidade de vida dos pacientes.
1.2 Estrutura da monografia
Este trabalho e composto por dez capıtulos. No Capıtulo 2 sao apresentados trabalhos
relacionados com o objetivo deste trabalho. O Capıtulo 3 e enfatizado sobre o Cancer de Pele.
2
Ja o Capıtulo 4 denota algumas definicoes de Processamento de Imagens. Continuando, o
capıtulo 5 mostra a Caracterizacao de Imagens. No capıtulo 6 apresenta-se os conceitos sobre
Redes Neurais Artificiais. O capıtulo 7 e mostrado a tecnologia CUDA. No capıtulo 8 descreve-
se o desenvolvimento do projeto em si. No capıtulo 9 apresenta-se testes e os resultados obtidos.
Por fim, o Capıtulo 10 apresenta as conclusoes deste trabalho e os trabalhos futuros.
3
Capıtulo
2Estado da Arte
2.1 Consideracoes iniciais
As redes neurais sao utilizadas para os mais diversos fins. Na literatura, existem trabalhos
que as utilizam para o reconhecimentos de padroes. Os trabalhos de Botelho (2007), Bittencourt
(2009), Nageswaran et al. (2009), Raizer et al. (2009) sao alguns desses. Estes trabalhos serao
relatados na secao a seguir.
2.2 Trabalhos Relacionados
No trabalho de Botelho (2007), foi utilizado o processamento de imagem e uma RNA Per-
ceptron, de treinamento supervisionado, para a deteccao de Melanoma. Apos o treinamento,
os resultados mostraram que a media total de acertos da RNA se estabilizou em uma taxa
de 69%. Observa-se a partir desses que a probabilidade de erro se mantem em cerca de 31%,
gerando uma quantidade de erros muito alta. Isto pode ter sido causado pelo baixo tempo
de treinamento (a rede foi treinada poucas epocas) e/ou pela quantidade de dados de entrada
relativamente pequena. Neste contexto, pode-se concluir, a partir do trabalho apresentado, que
o tempo de treinamento exigido para a obtencao de resultados realmente significativos demanda
de muito esforco e alto poder computacional, utilizando-se redes neurais.
Ja no trabalho de Bittencourt (2009) foi utilizado o processamento de imagem juntamente
com uma RNA do tipo Mutilayer Perceptron (MLP) para obtencao de uma classificacao dos
nıveis de gordura na carcaca bovina. Os testes de avaliacao de desempenho da RNA proposta
apresentaram 86% de acuracia para a tarefa de classificacao do acabamento da carne bovina.
Os resultados apresentados demonstram que, em alguns casos, a utilizacao de um baixo numero
4
de amostras pode trazer boas avaliacoes para processos classificatorios.
Uma vez que o tempo de treinamento e aprioramento da RNA pode prejudica-la, como visto
nos trabalhos acima apresentados, Nageswaran et al. (2009) gera como contribuicao para o caso
geral a aplicacao da computacao paralela como forma de melhoria na obtencao de resultados. No
trabalho de Nageswaran et al. (2009), e apresentado um conjunto de novas tecnicas relacionadas
a extracao de paralelismo, mapeamento de comunicacao irregular, e representacao de rede
compacta para simulacao eficaz de uma RNA do tipo Spiking Neural Network (SNN) executando
sobre a arquitetura de GPU. A fidelidade dos resultados da simulacao foram comprovados por
meio de execucoes feitas na CPU utilizando taxa de aprendizado, distribuicao do peso sinaptico
e intervalo maximo de analise iguais para ambas as arquiteturas. A implementacao na GPU
apresentou-se vinte e quatro vezes mais rapida que a versao da CPU.
Ja no trabalho de Raizer et al. (2009) foi apresentado uma Feedforward Multi-Layer Percep-
tron (FFMLP) executada sobre GPGPU utilizando-se do ambiente CUDA. Os testes realizados
avaliaram diferentes configuracoes de RNA cujo fator de modificacao se centralizou na com
quantidades de neuronios. Os testes realizados demonstraram que o uso de GPU pode prover
benefıcios quando o numero de neuronios em camadas intermediarias e relativamente grande.
Enfatiza-se que o princıpio das redes neurais e o processamento paralelo e distribuıdo e como o
princıpio da programacao em GPGPU e paralelizar os processamento de dados, a sua utilizacao
e altamente viavel, pois ha um volume elevado e significativo de processamento nas RNA.
2.3 Consideracoes finais
Observando os avancos das pesquisas anteriormente citadas, neste trabalho pretende-se uti-
lizar dos recursos de GPGPU e redes neurais artificiais para a classificacao e identificacao do
cancer melanoma. Objetiva-se com isso obter resultados expressivos a partir da melhoria do
processo de treinamento das RNA’s. No proximo capıtulo e apresentado alguns conceitos fun-
damentais do melanoma, juntamente com definicoes de cancer, para a sua deteccao que sera
abordada logo em seguida.
5
Capıtulo
3Cancer
Cancer e o nome dado a um conjunto de mais de cem doencas que tem em comum o cresci-
mento desordenado (maligno) de celulas que invadem os tecidos e orgaos, podendo espalhar-se
(metastase) para outras regioes do corpo. Tais doencas tendem, em sua maioria, a serem ex-
tremamente agressivas e deixarem sequelas irreversıveis no ser humano. Assim, quanto mais
cedo for feito a sua identificacao, maiores sao as possibilidades de tratamento e cura (Instituto
Nacional do Cancer, 2010).
3.1 Cancer de Pele
O cancer de pele se caracteriza pelo crescimento autonomo e desordenado das celulas que
compoem a pele. Em alguns casos, estas celulas adquirem a capacidade de disseminar-se (metas-
tase) para outros tecidos e orgaos do corpo, dificultando o tratamento. Como a pele e formada
por mais de um tipo de celula, tem-se diferentes tipos de canceres de pele, dentre eles os mais
comuns sao o Carcinoma Basocelular, o Carcinoma Espinocelular e o Melanoma.
O Carcinoma Basocelular e o tumor maligno cutaneo mais frequente, compreendendo cerca
de 75% dos diagnosticos, porem, e de baixa letalidade devido a facilidade de identificacao e,
principalmente, pelo fato de raramente apresentar metastase. Na maioria das vezes, localiza-se
na regiao da cabeca e do pescoco, acomete pessoas com mais de 40 anos de idade, de pele
clara e com historico de exposicao frequente ao sol (MARTINEZ et al., 2006). O Carcinoma
Basocelular origina-se nas celulas da camada basal da epiderme e e caracterizado pela formacao
de lesoes (feridas ou nodulos) de crescimento lento. Apesar de raramente apresentar metastase,
pode ser localmente destrutivo se descoberto tardiamente. O tratamento e realizado atraves de
procedimentos cirurgicos para a retirada do tumor e, se necessario, emprega-se a radioterapia.
Ja o Carcinoma Espinocelular representa 20% dos diagnosticos de neoplasias cutaneas e
6
origina-se nos queratinocios (celulas produtoras de queratina) da epiderme, podendo tambem
surgir no tecido epitelial que cobre mucosas (MARTINEZ et al., 2006). Causa mais mortes que o
carcinoma basocelular, visto que apresenta maior possibilidade de produzir metastase, fato este
que torna o diagnostico precoce muito importante para a cura. O Carcinoma Espinocelular
caracteriza-se pela formacao de feridas de rapida evolucao, que muitas vezes vem acompanha-
das de secrecao e coceira. Tende a desenvolver-se em areas previamente inflamadas ou com
cicatrizes e a localizar-se em regioes expostas do corpo como, por exemplo, pescoco e cabeca
(principalmente no labio inferior, nariz e orelhas). O tratamento e feito basicamente atraves de
cirurgia, radioterapia e se preciso, quimioterapia.
O Melanoma e a neoplasia cutanea de menor incidencia, porem de maior letalidade devido a
dificuldade de identificacao e a formacao de metastases. Este tumor origina-se nos melanocitos
(celulas produtoras de melanina) e pode surgir em varias regioes do corpo, fato que torna a
exposicao solar excessiva apenas uma de suas causas. Outros fatores de risco sao determinados
pela existencia de lesoes pigmentadas irregulares, presenca de nevos (pintas) transformados,
historico familiar de melanoma e pigmentacao clara da pele (MARTINEZ et al., 2006). Apesar
do melanoma ser o cancer de pele mais letal, se identificado precocemente e removido cirur-
gicamente, a probabilidade de cura tera um aumento significativo. Entretanto, para que isto
aconteca e necessario saber reconhecer as caracterısticas que o identificam.
Existem quatro caracterısticas padroes que sao conhecidas como ABCD do melanoma, cuja
as letras referem-se a:
• Assimetria;
• Bordas Irregulares;
• Coloracao Irregular;
• Diametro superior a 6 mm
Um exemplo de tais caracterısticas pode ser observado na Figura 3.1.
Figura 3.1: ABCD do Melanoma.
7
3.2 Consideracoes Finais
A deteccao do melanoma e feita essencialmente atraves de exames de avaliacao de imagens,
que sao classificadas atraves do ABCD do melanoma. Para obter imagens de melhor qualidade e
forma o banco de caracterısticas delas, e utilizado o processamento de imagens que basicamente
consiste no tratamento de imagens para poder utiliza-las. No proximo capıtulo e demonstrado
alguns desses conceitos.
8
Capıtulo
4Processamento de Imagens
O processamento de imagens consiste em um conjunto de tecnicas para capturar, representar
e transformar uma figura com o auxılio do computador (PEDRINI; SCHWARTZ, 2007), que podem
ser capturadas por dispositivos imageadores. Esses capturadores podem ser cameras digitais,
scanners, tomografos, sensores infravermelhos, entre outros.
O processamento de imagens digitais evoluiu intensamente e hoje possui diversas aplicacoes,
entre elas encontram-se: interpretacao de raios-X e outras imagens medicas, monitoramento de
plantacoes, queimadas e desmatamentos, restauracao de imagens antigas, reconhecimento de
padroes e outras (GONZALES; WOODS, 2000). Com isso, a medida que os equipamentos graficos
(placas de vıdeo e monitores) e os computadores (CPU) ficam mais poderosos e mais baratos,
a quantidade de aplicacoes aumenta.
A area processamento de imagens divide-se em categorias fundamentais (CONCI; AZEVEDO;
LETA, 2008), que sao:
• Realce de imagens: utilizado para melhorar as propriedades visuais de uma imagem,
tornando-a mais apropriada para uma aplicacao especıfica;
• Restauracao de imagens: tem por objetivo reconstruir ou recuperar uma imagem danifi-
cada;
• Analise de imagens, que busca extrair informacoes ou caracterısticas a partir de uma
imagem
A utilizacao de tecnicas incluıdas em mais de uma categoria para alcancar um resultado
satisfatorio e necessaria muitas vezes. Contudo, antes de executar qualquer processamento
em uma imagem precisa-se digitaliza-la, o que permitira a manipulacao de seus elementos.
Nessa sessao e abordada a representacao de imagens digitais, juntamente com diversos conceitos
9
fundamentais relacionados com a manipulacao de seus elementos. Alem disso, sera apresentado
uma visao geral sobre os passos fundamentais realizados ao se processar imagens(PEDRINI;
SCHWARTZ, 2007).
4.1 Representacao de Imagens Digitais
A representacao de uma imagem digital pode ser considerada como sendo a discretizacao
de uma funcao bidimensional de intensidade da luz f(x, y), onde x e y sao a sua coordenada no
plano e o valor de f em qualquer ponto (x, y) representa o brilho ou o nıvel de cinza daquele
ponto. A cada ponto da imagem e denominado elemento da imagem ou pixel (abreviatura
para picture elements). O posicionamento dos eixos x e y em uma imagem pode ser visto na
Figura 4.2.
Figura 4.1: Eixos para representacao de imagens digitais
A geracao de uma imagem pode ser afetada por dois fatores: a iluminacao, i(x, y), que e a
quantidade de luz incidindo na cena e a reflectancia, r(x, y), correspondente a quantidade de
luz refletida pelos objetos na cena. O produto de i(x, y) por r(x, y) resulta em f(x, y):
f(x, y) = i(x, y)r(x, y) (4.1)
onde
0 < i(x, y) <∞ (4.2)
10
e
0 < r(x, y) < 1. (4.3)
A refletancia, representada pela equacao 4.3, possui valores entre 0, que indica absorcao
total da luz e 1, que indica refletancia total. Com isso, a iluminacao i(x, y) e determinada
pela fonte emissora de luz, e r(x, y) e determinada pelas caracterısticas do objeto presente na
cena. Em imagens digitais, para que a funcao f(x, y) seja adequada para o processamento
computacional, ela precisa ser digitalizada tanto espacialmente quanto em amplitude atraves
dos metodos de Amostragem e Quantizacao(PEDRINI; SCHWARTZ, 2007).
4.1.1 Amostragem e Quantizacao
Os processos de Amostragem e Quantizacao sao empregados na digitalizacao de uma ima-
gem, ou seja, modifica-la de forma que ela possa ser armazenada e processada em um computa-
dor. O processo de Amostragem e definido pela digitalizacao das coordenadas espaciais (x, y)
da imagem, enquanto o processo de Quantizacao consiste na digitalizacao dos valores de brilho,
ou amplitude, da imagem (GONZALES; WOODS, 2000).
Como exemplo, pode-se supor que uma imagem contınua f(x, y) e aproximada por amostras
igualmente espacadas, arranjadas na forma de uma matriz MxN como pode ser conferido na
equacao 4.4, em que cada elemento e uma quantidade discreta:
f(x, y) ≈
f(0, 0) f(0, 1) ... f(0,M − 1)
f(1, 0) f(1, 1) ... f(1,M − 1)
.
.
.
f(N − 1, 0) f(N − 1, 1) ... f(N − 1,M − 1)
(4.4)
Considerando uma matriz monocromatica, cada elemento e uma aproximacao do nıvel de
cinza da imagem no ponto amostrado para um valor no conjunto 0, 1, ..., L− 1, onde 0 corres-
ponde ao preto e L − 1 corresponde ao branco. Os pixels entre estes valores terao diferentes
nıveis de cinza, sendo que quanto mais proximo ao valor 0, mais escuro sera.
Uma imagem no formato digital corresponde a uma aproximacao de uma imagem analogica
da qual ela foi obtida. Com isso, a qualidade da imagem (aproximacao) dependera essencial-
mente dos valores de N, M e L usados. Geralmente, quanto maiores estes parametros, melhor a
qualidade da digitalizacao. Consequentemente, maior sera o numero de bits que serao necessario
para a codificacao binaria da imagem, visto que:
b = M x N x l (4.5)
Onde N ×M corresponde a dimensao nos eixos x e y da imagem e l e o menor inteiro tal
que o conjunto de nıveis de cinza L ≤ 2l. A variacao destes valores resulta na modificacao da
qualidade da imagem, como pode ser observado na Figura 4.2. Diversas alteracoes realizadas
11
em imagens resultam na modificacao de seus pixels e, para alcancar um resultado satisfatorio
atraves das diversas tecnicas existentes torna-se necessario o conhecimento de conceitos basicos
relacionados aos pixels(AZEVEDO; CONCI, 2003).
Figura 4.2: Efeitos da variacao dos parametros: (a)256 x 256 / 256 nıveis; (b)32 x 32 / 256nıveis; (c)256 x 256 / 64 nıveis; (d)256 x 256 / 2 nıveis.
4.2 Conceitos Basicos de Pixels
Sendo os pixels a unidade basica para a formacao de imagens, o conhecimento sobre a re-
lacao entre estes torna-se util para a sua manipulacao, visto que cada ponto (x, y) na imagem
representa um pixel. Ao se realizar um processamento de uma imagem, manipula-se os seus
pixels e, para que esta manipulacao seja adequada ao seu deve-se conhecer os relacionamentos
existentes entre eles. As subsecoes subsequentes apresentam alguns conceitos basicos realiza-
dos aos pixels, os quais sao bastante uteis no processamento de imagens digitais (GONZALES;
WOODS, 2000).
4.2.1 Vizinhanca
Em uma imagem digitalizada, um pixel p nas coordenadas (x, y) possui quatro vizinhos
horizontais e verticais, cujas coordenadas sao definidas por:
(x+ 1, y), (x− 1, y), (x, y + 1), (x, y − 1) (4.6)
A esse conjunto de pixel e chamado de vizinhanca–de–4 de p e pode ser representado por
N4p. Existem tambem os quatro vizinhos diagonais de p possuem como coordenadas:
(x+ 1, y + 1), (x+ 1, y − 1), (x− 1, y + 1), (x− 1, y − 1) (4.7)
12
e podem ser representados por NDp. A uniao dos vizinhos diagonais com a vizinhanca–de–4
tem-se a chamada vizinhanca-de-8 (N8(p)). A Figura 4.3 denota essas definicoes.
(a) Vizinhanca de 4 do pixel X (b) Vizinhanca de 8 do pixel X
Figura 4.3: Exemplificacao da Vizinhanca de 4 e Vizinhanca de 8 de um pixel
Destaca-se que a vizinhanca pode ser ampliada de acordo com a aplicacao e que em certas
posicoes como, por exemplo, nas bordas de uma imagem, um pixel p nao tera alguns de seus
vizinhos. Com isso, ao ser aplicado alguma tecnica de processamento de imagens, deve-se
efetuar modificacoes ao se trabalhar com as bordas com o objetivo de se obter um resultado
uniforme na imagem, nao deixando que nenhum pixel da borda fique sem a alteracao desejada.
4.2.2 Conectividade
Dois pixels p1 e p2 podem ser chamados de conectados quando satisfazem a dois criterios. O
primeiro diz que os pixels devem ser adjacentes, ou seja, devem ser vizinhos–de–8. O segundo
diz que os pixels devem atender a algum criterio especıfico de classificacao, como por exemplo,
seus nıveis de cinza devem ser iguais (GONZALES; WOODS, 2000).
Para exemplificar o conceito de conectividade, pode-se usar como exemplo uma imagem
binaria (com apenas valores 0 e 1), na qual dois de seus pixels vizinhos–de–4 so serao conec-
tados se seus valores forem iguais. Ressalta-se que o conceito de conectividade e importante
para estabelecer as bordas dos objetos e os componentes de regioes de uma imagem(PEDRINI;
SCHWARTZ, 2007).
4.2.3 Caminho
Um caminho entre os pixels p0, representado por p0 = (x0, y0), e pn, representado por
pn = (xn, yn), e uma sequencia de pixels distintos com coordenadas (x0, y0), (x1, y1), ..., (xn, yn),
onde n corresponde ao comprimento do caminho e, (xi, yi) e (xi − 1, yi − 1), com i = 1, 2, ...n,
sao adjacentes. A definicao de caminho e importante para a determinacao dos componentes
conexos em uma imagem.
13
4.2.4 Componente Conexo
Dado um subconjunto S de uma imagem e dois pixels p1 e p2 contidos neste subconjunto,
entao, pode-se dizer que p1 estara conectado a p2 em S se existir um caminho entre p1 e p2
consistindo somente de pixels de S. Com isso, o componente conexo sera o conjunto de pixels
em S que estao conectados a p1, para qualquer pixel p1 em S (GONZALES; WOODS, 2000).
Ressalta-se que em um componente conexo, quaisquer dois pixels estao conectados um ao outro
e os componentes conexos distintos sao disjuntos.
4.2.5 Relacao Binaria
Seja uma imagem A ou um componente conexo da imagem. Entao, uma Relacao Binaria R
sobre a imagem A sera um conjunto de pares de elementos contidos em A (CONCI; AZEVEDO;
LETA, 2008). Quando um par (a, b) esta em R, comenta-se que a esta relacionado a b (aRb).
Alem disso, uma relacao binaria R sobre A pode ser do tipo:
• Reflexiva: Para cada a em A, aRa.
• Simetrica: Para cada a e b em A, aRb implica em bRa.
• Transitiva: Para cada a, b e c em A, aRb e bRc implica que aRc.
Quando uma relacao binaria satisfazer estas tres propriedades, ela recebe o nome de Relacao
de Equivalencia. A relacao binaria e utilizada para ilustrar e verificar conceitos de relacoes e
equivalencias entre as imagens e componentes conexos (atraves do relacionamento entre os pixels
das imagens).
4.2.6 Medidas de Distancia
Ao se manipular imagens digitais e muito comum a utilizacao de medidas de distancia.
Considerando os pixels p1, p2 e p3, com coordenadas (x1, y1), (x2, y2) e (x3, y3) respectivamente,
D corresponde a uma funcao de distancia se (GONZALES; WOODS, 2000):
1. D(p1, p2) ≤ 0.
2. D(p1, p2) = D(p2, p1).
3. D(p1, p3) ≥ D(p1, p2) +D(p2, p3).
A partir destas tres condicoes pode-se obter algumas medidas de distancia. Dentre elas, a
mais referenciada e a Distancia Euclidiana, representada pela equacao 4.8. Alem da Distancia
Euclidiana, tem-se a Distancia D4 (ou Distancia City Block) e a Distancia D8 (ou Distancia
Xadrez), representadas, respectivamente, pelas equacoes 4.9 e 4.10.
De(p1, p2) =√
(x1− x2)2 + (y1− y2)2 (4.8)
14
D4(p1, p2) = |x1− x2|+ |y1− y2| (4.9)
D8(p1, p2) = max(|x1− x2|, |y1− y2|) (4.10)
Essas medidas de distancia sao frequentemente usadas para verificar a similaridade entre
imagens. Quanto menor a distancia entre os pixels das imagens, maior sera a semelhanca entre
elas. Entretanto, calcular a distancia pixel a pixel pode requerer um tempo computacional
elevado e de muito processamento computacional se as imagens forem grandes.
4.3 Etapas do Processamento de Imagens
O processamento de imagens digitais abrange uma ampla escala de hardware, software e
fundamentos matematicos. Com o intuito de se processar uma imagem, esta deve passar por
algumas etapas basicas que vao desde a sua aquisicao ate a sua exibicao. Esses passos podem
ser verificados na Figura 4.4 e englobam um sistema de processamento completo, porem, nem
todas sao utilizadas por todas as aplicacoes.
Figura 4.4: Etapas fundamentais para o processamento de imagens digitais
A primeira tarefa nesse processo e a aquisicao da imagem no formato digital, atraves de
um sensor para imageamento e a capacidade de converter o sinal produzido pelo sensor para
o formato digital. Esse sensor pode ser uma camera de TV que produza uma imagem do
problema.
Apos a aquisicao da imagem no formato digital, a proxima etapa consiste em pre-processar
esta imagem. O pre-processamento consiste na melhoria da qualidade da imagem de forma que
aumente a probabilidade de sucesso dos processos seguintes. Normalmente, ele envolve tecnicas
para o realce de contrates, remocao de ruıdo e isolamento de regioes cuja textura indique a
probabilidade de informacao alfanumerica.
15
Concluıdo o pre-processamento, o proximo estagio trata da segmentacao. A segmentacao
divide uma imagem de entrada em partes ou objetos constituintes. Como exemplo, no caso
de reconhecimento de caracteres, a funcao basica da segmentacao e a extracao de caracteres
individuais e palavras do fundo da imagem. Normalmente, a segmentacao automatica e uma
das tarefas mais difıceis no processamento de imagens.
Como a saıda da etapa de segmentacao e constituıda tipicamente por dados em forma de
pixels (raw pixel data), correspondendo tanto a fronteira de uma regiao como a todos os pontos
dentro da mesma. Nesses dois casos e necessario converter os dados para uma forma adequada
ao processamento computacional, necessitando de decidir se os dados devem ser representados
como fronteiras ou como regioes completas.
A escolha de uma representacao consiste em parte da solucao para a transformacao dos dados
iniciais num forma adequada ao seu processamento. Uma forma de descricao dos dados tambem
deve ser especificada, para que as caracterısticas de interesse sejam destacadas. A esse processo
de descricao, tambem chamado de selecao de caracterısticas, procura extrair caracterısticas que
resultem em alguma informacao util, seja ela quantitativa ou basica, para a discriminacao entre
classes de objetos.
A ultima etapa envolve o reconhecimento e interpretacao. O Reconhecimento consiste no
processo de atribuicao de um rotulo a um objeto, baseado em informacoes fornecidas pelo
seu descrito. Ja a Interpretacao envolve a atribuicao de significado a um conjunto de objetos
reconhecidos.
Alem desses componentes existe o conhecimento sobre o domınio do problema, que esta
codificado em um sistema de processamento de imagens na forma de uma base de conhecimento.
Esse conhecimento pode ser simples quanto o detalhamento de regioes de uma imagem em que
se sabe que a informacao de interesse. A base de conhecimento pode tambem ser complexa, tal
como um lista inter-relacionada de todos os principais defeitos possıveis em uma regiao em um
problema de inspecao de materiais. Alem de guiar a operacao de cada modulo de processamento,
a base de conhecimento tambem controla a interacao entre os modulos. Tambem e importante
ressaltar que a visualizacao de resultados do processamento de imagens pode ocorrer na saıda
de qualquer etapa da Figura 4.4
4.4 Consideracoes Finais
Nem sempre todas as etapas sao necessarias para se obter o que se deseja. Por exemplo,
neste trabalho sera dado enfase a caracterizacao de imagens, ou seja, o processo de descricao de
imagens devido a necessidade de obter informacoes para a aplicacao. No proximo capıtulo sao
apresentados os conceitos de caracterizacao de imagens, que serao utilizados para a classificacao
das imagens.
16
Capıtulo
5Caracterizacao de Imagens
Uma imagem digital corresponde a uma matriz contendo as informacoes dos pixels sem
nenhum significado util. Porem, a partir desses dados existe a possibilidade de obter informacoes
que possam caracterizar essas imagens. Se tratando de imagens digitais, o termo ”caracterıstica”
tem por definicao ser um atributo ou uma propriedade que a diferencie. Existem determinadas
caracterısticas que se apresentacao naturalmente na observacao de uma imagem, enquanto
outras resultam de manipulacoes especıficas de uma imagem. Como exemplo destas, pode-se
citar a iluminacao dos pixels de uma regiao ou a textura e a obtencao do histograma de cores
e do espectro de frequencia.
A caracterizacao de imagens e importante para identificar regioes com propriedades comuns
dentro da imagem e posterior identificacao e classificacao desta regiao. Para se realizar isto,
as caracterısticas necessitam ser extraıdas, de diversas formas. Normalmente, as caracterısticas
sao identificadas como genericas e de domınio especıfico. Entre as genericas encontram-se cor,
a forma e a textura e entre as de domınio especıfico as faces humanas e as impressoes digitais.
Esta subsecao explicara as tres caracterısticas genericas das imagens, que sao: cor, forma e
textura, visto que sao as mais comumente utilizadas, abordando algumas representacoes.
5.1 Caracterizacao de Imagens atraves das Cores
A caracterizacao de imagens digitais atraves das cores e comumente utilizada devido ao fato
de ser relativamente invariante quanto ao tamanho, resolucao e orientacao da imagem. Alem de
que a extracao das cores de uma imagem e computacionalmente facil de se realizar. Atualmente,
o Histograma de Cores e um das tecnicas de caracterizacao por cores mais usada, porem antes
de entender sua concepcao, e necessario conhecer alguns conceitos basicos relacionados as cores
(FOLEY et al., 1990).
17
5.1.1 Fundamento de Cores
Uma cor percebida pode ser entendida como sendo a percepcao imediata que se tem de
um objeto. Assim, a cor pode ser considerada a propriedade de um objeto ou fonte de luz
relacionado as caracterısticas do sistema visual do observador. A luz corresponde a uma onda
eletromagnetica, sendo que apenas uma pequena banda da frequencia, localizada entre 400 e
700 nm, pode ser observada pelo sistema visual humano. Nesta banda encontram-se as cores
violeta (que possui a frequencia mais baixa), azul, ciano, verde, amarelo, laranja e vermelho
(que possui a maior frequencia), chamadas de cores visıveis, como pode ser observado na Figura
5.1 (CONCI; AZEVEDO; LETA, 2008)
Figura 5.1: Espectro Visıvel das cores
Ha dentro das cores aquelas que sao capazes de formar quase todas as cores presentes na
natureza. Dentre estas, as mais comuns sao as cores primarias RGB, compostas pelas cores
vermelho (Red), verde (Green) e azul (Blue) do espectro visıvel, e as ditas secundarias CMY,
compostas pelas cores ciano (Cyan), magenta (Magenta) e amarelo (Yellow).
5.1.2 Sistemas de Representacao de Cores RGB e CMY
O sistema de representacao RGB baseia-se na sensibilidade do olho humano e utiliza as cores
vermelho (R), verde(G) e azul (B) como cores primarias, sendo que R, G e B correspondem as
coordenadas cartesianas que sao responsaveis pela formacao do cubo unitario que representa o
espaco das cores, como pode ser visto na Figura 5.2. Este modelo tambem e conhecido como
modelo aditivo, pois as diversas cores sao formadas pela da adicao das primarias RGB(FOLEY
et al., 1990).
Matematicamente, uma cor C de um pixel pode ser definida por C = r.R + g.G + b.B,
onde R,G e B correspondem as cores primarias e r,g e b sao os coeficientes correspondentes
as intensidades3 associadas a cada uma das cores (AZEVEDO; CONCI, 2003). A resposta do
olho aos estımulos espectrais nao e linear e algumas cores presentes na natureza nao podem ser
reproduzidas pela sobreposicao das primarias RGB.
Ja o sistema de representacao CMY usa as cores secundarias ciano (C), magenta (M) e
amarelo (Y) para representar o espaco de cores, tambem formado por um cubo unitario. Este
modelo tambem e conhecido como modelo subtrativo, pois a formacao de cada cor se da atraves
da subtracao da luz incidente de uma das componentes RGB pelas cores secundarias e a reflexao
das outras. Por exemplo, o ciano subtrai a luz vermelha e reflete as outras, o magenta subtrai
o verde e o amarelo subtrai o azul. Com isso, a variacao das cores acontece por causa da
diminuicao dos comprimentos de luz que serao absorvidos (FOLEY et al., 1990).
18
Figura 5.2: Cubo representando o espaco de cores RGB
Existem algumas tecnicas usadas para a extracao de cores como, por exemplo, o Histograma
de Cores e os Momentos de Cores. O Histograma de Cores e utilizado nesse trabalho para
representar as caracterısticas de cores das imagens. Ressalta-se que escolheu-se o Histograma
por ser simples, popular e facil de se calcular computacionalmente.
5.2 Histograma de Cores
O histograma e uma ferramenta de analise e representacao de dados quantitativos, agru-
pados em classes de frequencia que permite distinguir a forma, o ponto central e a variacao
da distribuicao, alem de outros dados como amplitude e simetria (GONZALES; WOODS, 2000).
Como exemplo, seja uma imagem digital g de M linhas e N colunas. O histograma da imagem
g, Hg, pode, analiticamente, ser definido por :
Hg(k) =nk
M.N(5.1)
onde nk e o numero de vezes que o nıvel de cinza k aparece na imagem. Com isso, um
vetor representando a imagem e gerado pelo processo do histograma. Exemplos de histogramas
podem ser verificados na Figura 5.3.
Imagens low key previnem que qualquer regiao da imagem tenha brilho suficiente para se
tornar branco puro, independente de quao escuro o resto da imagem possa resultar. Cenas com
high key, por outro lado, normalmente resultam em imagens significativamente sub-expostas.
Mas e mais facil lidar com regioes sub-expostas do que com as super-expostas (apesar disso
19
Figura 5.3: Exemplos de histogramas de cores de uma mesma imagem.
comprometer a qualidade da foto devido ao aumento do ruıdo). Caso isso ocorra, os detalhes
nao podem ser recuperados nas regioes super-expostas a ponto de ser branco puro. Isso e o que
normalmente chamado de imagem estourada ou cortada como pode ser verificado na Figura
5.4.
Existem tres tipos de histogramas que sao o RGB, luminancia e de tons e constrates (FOLEY
et al., 1990). O utilizado mais comumente e o histograma RGB. O histograma RGB e uma
representacao grafica dos valores tonais de cada canal de cor vermelho, verde e azul. Outro
tipo e o histograma de luminosidade que e composto levando-se em conta o histograma RGB
e considerando a sensibilidade do olho humano para cada cor, em outras palavras cada cor
recebe um peso/importancia (verde 51%, vermelho 30% e azul 19%) conforme sensibilidade do
olho humano as cores. O histograma de luminosidade fornece a melhor representacao grafica
do brilho e do contraste de uma imagem. Tambem e possıvel ver o grafico individual de cada
canal de cor.
O histograma RGB e o melhor histograma para ajustar imagens digitais, pois consegue
representar graficamente como estao distribuıdos os pixels ao longo do range tonal (0 ate 255).
Mesmo com imagens a high-key ou low-key normalmente nao e necessario ver todos os pixels
a direita ou a esquerda do grafico. E importante ressaltar que nao havera muitas texturas em
20
Figura 5.4: Exemplos de imagem low key e high key
imagens onde as tres cores estiverem acima dos 250. Da mesma forma nao havera texturas
quando todas as cores estiverem abaixo do 20.
Percebe-se entao, que o histograma apresenta uma descricao global da imagem. Quando e
obtido a partir de imagens monocromaticas fornece uma visao sobre a forma que os pixels estao
distribuıdos, do contraste e da luminancia da imagem, sendo muito importante nas fases de
pre-processamento. Alem disso, e invariante a operacoes como rotacao e translacao. Porem ,
imagens diferentes podem ter o mesmo histograma, o que faz necessario, em algumas aplicacoes,
a utilizacao conjunta de outras caracterısticas da imagem, como forma ou textura.
5.3 Consideracoes Finais
Neste trabalho e utilizado somente o Histograma de Tons de Cinza como tecnica para a
caracterizacao das imagens. No entanto, tecnicas de caracterizacao por forma e textura tambem
poderiam ter sido utilizadas. Apos a escolha do tipo de caracterizacao (cor, forma ou textura)
de imagens mais adequado a aplicacao, e iniciado o processo de classificacao das imagens, ou
seja, a partir das caracterısticas obtidas pode-se inferir rotulos (legendas) as imagens ou a
objetos contidos nas mesmas. Os metodos usados para a classificacao de imagens dividem-se
em metodos de decisao teorica e metodos estruturais. Os metodos de decisao teorica baseiam-
se na representacao dos padroes atraves de vetores, e os metodos estruturais baseiam-se na
representacao dos padroes na forma simbolica (cadeias e arvores). Dentre os metodos de decisao
teorica existem as redes neurais artificiais que sao utilizadas nesse trabalho para classificar as
imagens. O capıtulo a seguir aborda sobre as redes neurais artificiais, que foram utilizadas para
a classificacao das imagens de melanoma.
21
Capıtulo
6Redes Neurais Artificiais
As redes neurais artificiais (RNA) representam uma tecnologia que tem raızes em muitas
disciplinas, tais como: neurociencia, matematica, estatıstica, fısica, ciencia da computacao e
engenharia(HAYKIN, 2007). Suas aplicabilidades sao: modelagem, analise de series temporais,
reconhecimento de padroes, processamento de sinais e controle, entre outros.
Neste capıtulo e apresentado uma visao sobre as principais caracterısticas das Redes Neu-
rais, incluindo sua inspiracao biologica, o desenvolvimento do neuronio artificial e as principais
arquiteturas de rede existentes. Alem disso, demonstra-se os processos de aprendizagem, os
quais sao fundamentais para o desempenho das Redes Neurais.
6.1 Redes Neurais Biologicas
O cerebro humano e considerado um computador altamente complexo, nao-linear e paralelo
que possui a capacidade de organizar seus constituintes estruturais, conhecidos por neuronios,
de forma a realizar processamentos tao rapidos que nenhum computador atual consegue alcan-
car(HAYKIN, 2007). Pelo fato de que o cerebro ser muito complexo e a sua grande capacidade
de aprendizado e adaptacao, estudiosos sempre buscam respostas sobre o seu funcionamento e
suas estruturas. Existem alguns questoes que ainda nao foram solucionadas, mais uma grande
vantagem que ja se conhece as estruturas que compoes o cerebro e tem-se conhecimento sobre
alguns aspectos de seu funcionamento.
Ha dois tipos principais de celulas no cerebro: os neuronios e as glias. As glias sao as
responsaveis pela sustentacao e nutricao dos neuronios, que, por sua vez, sao encarregados
no processo de recepcao, transmissao e processamento de estımulos, permitindo ao organismo
responder as alteracoes do meio(LUDWIG; MONTGOMERY, 2007). Os neuronios sao basicamente
constituıdos de dendritos, corpo celular (ou soma) e axonios. como pode ser visto na Figura
22
6.1.
Figura 6.1: Modelo de um neuronio biologico
Os dendritos tem a funcao de receber os estımulos (ou sinais de entrada) e conduzi-los
ao corpo celular. Este adiciona os sinais de entrada de alguma forma e produz um sinal de
ativacao ou nao para o neuronio. Alem disso, o corpo celular e o responsavel pela manutencao
e metabolismo do neuronio, assim como por seu crescimento e reparacao. Ja os axonios sao
responsaveis pela transmissao dos impulsos de saıda gerados por um neuronio.
Os axonios de um neuronio se ligam aos dendritos de outro neuronio atraves das sinapses.
As sinapses sao unidades funcionais elementares para a interacao entre os neuronios. Podem ser
divididas em inibitorias ou excitatorias. Uma sinapse excitatoria contribuira positivamente para
a ativacao do neuronio receptivo, enquanto uma sinapse inibitoria influenciara na desativacao do
neuronio (HAYKIN, 2007). O conjunto de neuronios conectados atraves de sinapses formam as
Redes Neurais Biologicas, as quais foram abstraıdas afim de obter as Redes Neurais Artificiais.
6.2 Redes Neurais Artificiais
As Redes Neurais Artificiais, tambem conhecidas como Redes Conexionistas, Neurocom-
putadores ou Processadores Paralelamente Distribuıdos tiveram seu surgimento (inspiracao)
na forma da organizacao e funcionamento do cerebro humano e busca demonstrar o compor-
tamento dos circuitos neuronais (REZENDE, 2003). Tal como o cerebro tem a capacidade de
aprendizado e tomada de decisoes baseadas no aprendizado, a RNA devem ser capazes de fazer
o mesmo. Isso e alcancado devido a um conjunto de exemplos pre-estabelecidos, a partir dos
quais as redes neurais se adaptam e aprendem como realizar determinadas tarefas.
Segundo Haykin (2007), uma rede neural pode ser definida como sendo um ”processador
paralelamente distribuıdo que e composto de unidades de processamento simples, os neuronios,
que possuem a capacidade de armazenamento de conhecimento experimental e torna-lo disponı-
vel para uso”. Normalmente as RNA sao desenvolvidas a fim de resolver problemas complexos,
visto que seu processamento e distribuıdo atraves de suas camadas de neuronios, que possuem
a habilidade de processar as suas entradas de forma paralela e independente, alem de que sua
23
capacidade de aprendizagem resulta em respostas satisfatorias. A sua aprendizagem e a base
da inteligencia das RNA e decorre de um processo de aprendizagem e armazenamento deste
conhecimento atraves da conexao entre neuronios.
A similaridade das RNAs com o cerebro e caracterizada, justamente, pela sua habilidade de
adquirir conhecimento atraves de um processo de aprendizagem e armazenar este conhecimento
atraves da conexao entre os neuronios (LUDWIG; MONTGOMERY, 2007). Alem dessas caracte-
rısticas, existem outras que tornam as Redes Neurais Artificiais bastante uteis para a resolucao
de problemas, dentre elas as mais importantes sao:
1. Nao Linearidade: Um neuronio pode ser linear ou nao-linear, assim com a RNA igualmente
aos neuronios
2. Mapeamento de Entrada-Saıda: capacidade da rede de aprender ao mapear um conjunto
de entradas em um conjunto de saıdas.
3. Adaptabilidade: uma RNA treinada para atuar em um ambiente pode ser adaptada para
suportar modificacoes no ambiente.
4. Resposta a evidencias: Uma rede neural pode ser projetada para fornecer informacao
nao somente sobre qual padrao particular selecionar, mais tambem sobre a confianca da
decisao tomada
5. Informacao Contextual: O conhecimento e representado pela propria estrutura e estado
de ativacao de uma rede neural
6. Tolerancia a falhas: uma RNA tem a capacidade de fornecer respostas adequadas por um
bom tempo mesmo se algum neuronio ou conexao for danificado.
7. Implementacao em VLSI: A natureza macicamente paralela de uma rede neural a faz ser
potencialmente rapida na computacao de certas tarefas.
8. Uniformidade de Analise e Projeto: Basicamente, as redes neurais desfrutam de univer-
salidade com o processadores de informacao.
9. Analogia Neurobiologica: O projeto de uma rede neural e motivado com o cerebro, que e
uma prova viva de que o processamento paralelo tolerante a falha e nao somente possıvel
fisicamente mas tambem rapido e poderoso.
As RNAs sao comumente utilizadas em tarefas que incluem Classificacao (decidir a qual
grupo pertence uma determinada entrada), Reconhecimento de Padroes (identificar padroes
em entradas), Predicao (predizer algo a partir de certas caracterısticas como, por exemplo,
identificar doencas a partir de sintomas, causas a partir de efeitos), Otimizacao (buscar o melhor
resultado) e Filtragem de Ruıdo (separar partes irrelevantes de um sinal) (BOTELHO, 2007),
mas, para que se tenha respostas satisfatorias ao problema deve-se definir adequadamente os
elementos que irao compor a RNA, dentre eles estao: o neuronio artificial, a arquitetura, o
algoritmo de aprendizagem e o paradigma de aprendizagem.
24
6.2.1 Neuronio
O neuronio e definido como a unidade de processamento de informacao que e fundamental
para a operacao da rede neural. O diagrama da Figura 6.2 demonstra um modelo de neuronio
artificial. Pode-se identificar nele tres elementos basicos de um modelo neuronal:
Figura 6.2: Modelo de um neuronio matematico. Fonte (HAYKIN, 2007)
1. Um conjunto de sinapses ou elos de conexao, em que cada uma caracterizada por um
peso. Especificando, um sinal de saıda xj na entrada da sinapse j conectada ao neuronio
k e multiplicado pelo peso sinaptico wkj
2. Um somador, para somar os sinais de entrada, ponderandos pela respectivas sinapses do
neuronio.
3. Uma funcao de ativacao para restringir a amplitude da saıda de um neuronio.
Alem disso, o neuronio da Figura 6.2 inclui um bias aplicado externamente, representado
por bk. Esse tem o efeito de aumentar ou diminuir a entrada lıquida da funcao de ativacao,
dependendo se ele e positivo ou negativo, respectivamente.
Em termos matematicos, pode-se descrever um neuronio k escrevendo o seguinte par de
equacoes:
uk =m∑
j=1
wkjxj (6.1)
25
e
yk = ϕ(uk + bk) (6.2)
onde x1, x2, ..., xm sao os sinais de entrada; wk1, wk2, ..., wkm sao os pesos sinapticos do
neuronio k; uk e a saıda do combinador linear devido aos sinais de entrada; bk e o bias; ϕ(.) e
a funcao de ativacao e yk e o sinal de saıda do neuronio. O uso do valor de bias bk tem o efeito
de aplicar uma transformacao afim a saıda uk do combinador linear no modelo da Figura 6.2,
como mostrado por:
yk = uk + bk (6.3)
Um neuronio artificial pode utilizar diferentes tipos de funcoes de ativacao, dentre elas as
mais comuns sao: Funcao de Limiar, Funcao Linear por Partes e Funcao Sigmoide (HAYKIN,
2007).
A Funcao Limiar, representada pela equacao 6.4, em que a saıda de um neuronio possui
valor 1, se o campo local induzido daquele neuronio e nao-negativo, e 0 caso contrario. Essa
funcao descreve a propriedade tudo-ou-nada do modelo de McCulloch-Pitts1 pode ser verificado
no grafico da Figura 6.3.
f(v) =
1 se x ≥ 0
0 se x < 0(6.4)
Figura 6.3: Grafico da funcao de limiar
A proxima Funcao denominada Funcao Linear por Partes. a saıda do neuronio sera igual ao
valor de ativacao v se este estiver dentro de um certo intervalo, mas, se v for maior ou igual ao
valor maximo do intervalo a saıda sera 1 e se for menor ou igual ao valor mınimo do intervalo
a saıda sera 0. A equacao 6.5 e um exemplo de Funcao Linear por Partes, sendo que a Figura
1Trabalho Pioneiro em redes neurais realizado por McCulloch e Pitts em 1943
26
6.4 representa o grafico desta equacao.
ϕ(v) =
1, v ≥ +1
2
v,+12> v > −1
2
0, v ≤ −12
(6.5)
Figura 6.4: Grafico da funcao linear
E por ultimo a Funcao Sigmoide, cujo grafico tem a forma de um S, mais comumente
utilizada na construcao de RNA. Ela tem como definicao com sendo uma funcao estritamente
crescente que exibe um balanceamento adequado entre comportamento linear e nao-linear. Um
exemplo desta funcao Logıstica, definida pela equacao 6.6, cujo grafico e apresentado na Figura
6.5, onde a e o parametro de inclinacao da funcao (HAYKIN, 2007).
ϕ(v) =1
1 + exp−(av)(6.6)
Figura 6.5: Grafico da funcao sigmoide
A escolha da Funcao de Ativacao deve ser de acordo com o objetivo da RNA, visto que o
neuronio e a unidade basica do processamento da rede e deve ser modelado para atender aos
requisitos da aplicacao. Alem disso, as Redes Neurais possuem mais de um neuronio, os quais
27
devem ser conectados de forma a garantir um bom desempenho juntamente a rede. A forma
de conexao entre os neuronios e definida pela arquitetura da rede, que e um dos elementos
principais para a criacao de uma RNA eficiente.
6.3 Arquitetura das Redes Neurais
A arquitetura ou topologia de uma Rede Neural define a maneira pela qual os neuronios
estao organizados. Ela esta associada com o algoritmo de aprendizagem usado para treinar a
rede, com sua aplicacao e com o seu desempenho. Alem da possibilidade de ser diferenciada de
acordo com o numero de camadas e a disposicao das conexoes.
Em geral, uma RNA possui uma camada de entrada, usada para receber os estımulos ex-
ternos, zero ou mais camadas intermediarias e uma camada de saıda responsavel por emitir
uma resposta a partir de uma dada entrada. Os principais exemplos de RNAs sem camada
intermediaria a rede Elemento Linear Adaptativo (Adaline) e a Perceptron de Camada Unica
exemplificada na Figura 6.6.Ja a Multilayer Perceptron (MLP) apresentada na Figura 6.7 e o
principal exemplo de RNA com camada intermediaria (REZENDE, 2003).
Figura 6.6: Rede com uma unica camada
Dependendo da forma das conexoes, as RNAs podem ser denominadas de Completamente
Conectadas, ou seja, quando cada neuronio de uma camada se conecta com todos os neuronios
da camada subsequente ou Parcialmente Conectadas, quando nem todos os neuronios da rede
estao conectados (HAYKIN, 2007). Tambem se pode encontrar em Redes Neurais conexoes em
forma de loops e conexoes entre os neuronios da mesma camada.
De acordo com o tipo de conexao, as RNAs podem ser classificadas em Redes Feedforward
28
Figura 6.7: Rede com uma camada intermediaria
e Redes Feedback. Nas Redes Alimentadas Adiante, cada neuronio de uma camada recebe suas
entradas da camada anterior e envia seus sinais de saıda para os neuronios da camada posterior.
Nas Redes Recorrentes um neuronio pode enviar seus sinais de saıda para outro neuronio que
se encontra na mesma camada ou em uma camada anterior a sua (LUDWIG; MONTGOMERY,
2007), como pode ser observado na Figura 6.8.
A arquitetura de uma rede tambem pode ser classificada de acordo com a sua evolucao
no decorrer de sua utilizacao e do seu aprendizado. Baseado nestes criterios tem-se as Redes
Estaticas e as Redes Dinamicas (HAYKIN, 2007). Nas Redes Estaticas a quantidade de neuronios
e as formas de conexao nao se alteram durante o aprendizado da rede, as unicas mudancas que
ocorrem sao os ajustes dos pesos sinapticos. Ja nas Redes Dinamicas a quantidade de neuronios
e conexoes pode variar no decorrer do aprendizado da rede. Essa variacao pode ser do tipo
generativa (criacao de novas conexoes) ou destrutiva (eliminacao de conexoes).
A topologia escolhida para a implementacao da Rede Neural deve ter como objetivo facilitar
o processo de aprendizagem, visto que este e a base para a obtencao de respostas satisfatorias
ao problema.
6.4 Processos de Aprendizagem
Uma das principais caracterısticas das Redes Neurais e sua capacidade de aprender e melho-
rar seu desempenho gradativamente a partir da aprendizagem. A aprendizagem ocorre durante
o processo de treinamento da rede, no qual os pesos sinapticos e bias sao ajustados a cada
iteracao. Esse ajuste e realizado atraves de um algoritmo de aprendizagem seguindo algum
paradigma de aprendizagem.
Nas proximas subsecoes serao apresentados alguns algoritmos de aprendizagem, os para-
digmas de aprendizagem e por fim, ressalta-se o algoritmo de aprendizado supervisionado do
29
Figura 6.8: Rede Recorrente
Multilayer Perceptron, visto que este sera utilizado para a implementacao do modelo proposto
por este trabalho. Ressalta-se que a escolha deste algoritmo foi baseada na sua aplicabilidade
e utilizacao em outros trabalhos. Alem disso, ele apresentou resultados satisfatorios para a
aplicacao em questao.
6.4.1 Algoritmos de Aprendizagem
Algoritmo de aprendizagem e definido como sendo um conjunto de regras definidas para
resolver algum problema de aprendizagem. Existem diferentes tipos que se distinguem pela
maneira como e realizado o ajuste do peso sinaptico de um neuronio (HAYKIN, 2007). Podem
ser divididos em:
• Aprendizagem por Correcao de Erro: Neste algoritmo o ajuste dos pesos sinapticos sao
efetuados de maneira a obter um erro mınimo. O erro (ek) em uma RNA e calculado
atraves da diferenca entre a saıda obtida (yk) pela rede e a saıda desejada (dk), como
apresentado na Equacao 6.7:
ek(n) = dk(n)− yk(n) (6.7)
No decorrer do aprendizado os erros sao calculados iterativamente ate que a rede alcance
um estado onde os pesos sinapticos estao estabilizados de acordo com um valor pre-
definido. Os pesos sao ajustados visando aproximar o valor de saıda obtido pela rede
30
ao valor desejado (REZENDE, 2003). Isto e obtido atraves da minimizacao da Funcao de
Custo E(n), definida por:
E(n) =1
2e2k(n) (6.8)
A minimizacao da Funcao de Custo resulta na regra de aprendizagem conhecida como
Regra Delta, a qual determina o ajuste φwkj(n) dos pesos sinapticos. Este ajuste aplicado
a um peso wkj de um neuronio k, excitado por uma entrada xj no tempo n pode ser
descrito por (HAYKIN, 2007):
∆wkj(n) = ηek(n)xj(n) (6.9)
onde η e a taxa de aprendizagem. Apos calcular o ajuste, o novo valor do peso sinaptico
wkj sera:
wkj(n+ 1) = wkj(n) + ∆wkj(n) (6.10)
• Aprendizagem Baseada em Memoria: Neste algoritmo, as experiencias sao armazenadas
em uma memoria de exemplos de entrada-saıda pre-classificada corretamente. Esta me-
moria e representada da seguinte forma: (xi, di)Ni=1, onde xi representa o vetor de entrada
e di representa a resposta desejada (HAYKIN, 2007).
Quando se quer classificar um vetor de entrada novo, chamado de xteste, repassa-o a rede
e o algoritmo ira analisar os dados de treinamento de uma ”vizinhanca local”de xteste
em busca de um padrao semelhante. Ha diversos algoritmos baseados em memoria que
diferem entre si pelo criterio usado para definir a vizinhanca local de um vetor de teste e
pela regra de aprendizagem usada no treinamento dos dados da vizinhanca local (HAYKIN,
2007).
O tipo mais simples de algoritmo baseado em memoria e conhecido como regra do vizinho
mais proximo. Segundo este algoritmo, a vizinhanca local sera os dados de treinamento
que se encontram na vizinhanca proxima do vetor xteste. Com isso, o vetor x′N sera o
vizinho mais proximo de xteste se:
min d(xi, xteste) = d(x′
N , xteste) (6.11)
onde d(xi, xteste) corresponde a distancia euclidiana entre os vetores xi e xteste. Por fim, o
vetor x′N encontrado sera a classificacao para xteste, ou seja, a classe com menor distancia.
• Aprendizagem Hebbiana: Segundo a teoria de Hebb (1949), que descreve um mecanismo
basico da plasticidade sinaptica no qual um aumento na eficiencia sinaptica surge da
estimulacao repetida e persistente da celula pos-sinapticas, que resulta que quando um
neuronio contribui para o disparo de outro, a conexao entre eles e reforcada (REZENDE,
2003). Baseado nesta teoria, o algoritmo de aprendizagem hebbiana apenas permite a
31
alteracao dos pesos sinapticos da conexao entre dois neuronios quando ambos estiverem
ativos, pois assim a forca da conexao entre eles aumentara. O ajuste ∆wkj(n) dos pesos
sinapticos do neuronio k aplicado ao peso wkj no tempo n e definido como (HAYKIN,
2007):
∆wkj(n) = ηyk(n)xj(n) (6.12)
onde η e a taxa de aprendizagem, xj e o sinal pre-sinaptico do neuronio k e yk e o sinal
pos-sinaptico do neuronio k. Quando os sinais pre-sinapticos e pos-sinapticos possuem
sinais similares o ajuste dos pesos tera o efeito de reforcar a conexao entre os neuronios,
caso contrario, sera anulada.
• Aprendizagem Competitiva: Neste algoritmo os neuronios de saıda da rede competem
entre si para se tornar ativos, visto que apenas um estara ativo em um determinado
momento. O neuronio vencedor sera chamado de neuronio vencedor leva tudo. De acordo
com a regra de aprendizagem competitiva padrao, o ajuste ∆wkj aplicado ao peso wkj e
definido por (HAYKIN, 2007):
∆wkj =
η(xj − wkj), se o neurnio k vencer a competio
∆wkj = 0, se o neurnio k perder a competio(6.13)
onde η e a taxa de aprendizagem. Com esta regra as entradas do neuronio vencedor
liberam um pouco de seu peso, o qual sera distribuıdo uniformemente entre as entradas
inativas com o objetivo de mover o peso sinaptico do neuronio vencedor em direcao ao
padrao de entrada.
• Aprendizagem de Boltzmann: Este e um algoritmo estocastico baseado na mecanica es-
tatıstica. As RNAs que utilizam este algoritmo possuem neuronios que funcionam bina-
riamente, ou seja, eles possuem apenas dois estados: ligados (+1) ou desligados (−1). O
ajuste (∆wkj) dos pesos sinapticos aplicado a um peso wkj do neuronio j para o neuronio
k sera determinado pela equacao seguinte (HAYKIN, 2007):
∆wkj = η(ρ+kj − ρ
−kj), j 6= k (6.14)
onde η e a taxa de aprendizagem, ρ+kj e a correlacao entre os neuronios j e k com a
rede na condicao presa (os neuronios visıveis estao presos a estados especıficos) e ρ−kj e
a correlacao entre os neuronios j e k com a rede na condicao livre (todos os neuronios
operam livremente).
Cada um dos algoritmos apresentados fornece vantagens especıficas que devem ser ava-
liadas de acordo com a aplicacao. Alem disso, a principal caracterıstica da RNA e sua
capacidade de aprender e se adaptar, a qual esta diretamente relacionada com o algoritmo
32
selecionado, tornando sua escolha crucial para o desempenho da rede. Do mesmo modo,
deve-se considerar a forma como as RNAs interagem com o ambiente e utilizar o algoritmo
de aprendizagem seguindo um paradigma de aprendizagem adequado.
6.5 Paradigmas de Aprendizagem
O Paradigma de Aprendizagem define a forma como a Rede Neural se relaciona com o am-
biente e se divide em tres grupos principais: Aprendizagem Supervisionada, Aprendizagem por
Reforco e Aprendizagem Nao-Supervisionada. Na Aprendizagem Supervisionada, tambem co-
nhecida como Aprendizagem com um Professor, a rede e treinada com um conjunto de exemplos
de entrada-saıda retirados do ambiente. Sendo assim, a rede deve ter a capacidade de medir o
seu comportamento atual e seu comportamento de referencia, realizando os ajustes dos pesos
sinapticos com o intuito de minimizar o erro (MEDEIROS, 1996). O erro e a diferenca entre a
saıda obtida pela rede e a saıda desejada e e calculado passo a passo, interativamente, ate obter
um valor satisfatorio. Com isso, o conhecimento do ambiente vai sendo transferido para a rede,
de forma gradual, atraves do treinamento.
Na Aprendizagem por Reforco existe apenas indicacoes imprecisas sobre o resultado de-
sejado da rede, ou seja, neste tipo de aprendizagem, o mapeamento de entrada-saıda e feito
gradativamente atraves da interacao com o ambiente, dispondo apenas de uma avaliacao quali-
tativa do comportamento do sistema sem, no entanto, poder medir o erro. Ja na Aprendizagem
Nao-Supervisionada, tambem chamada de Aprendizagem sem um Professor, nao se usa exem-
plos de entrada-saıda para treinar a rede. Esta aprende sozinha, sem um supervisor externo
para indicar os erros. Este tipo de rede desenvolve a habilidade de extrair caracterısticas rele-
vantes, a partir das entradas fornecidas, e formar representacoes internas que codifiquem essas
caracterısticas, criando assim, novas classes automaticamente (HAYKIN, 2007).
Apos definir o paradigma de aprendizagem e todos os outros elementos citados anterior-
mente, a Rede Neural esta pronta para ser implementada. Sabe-se que com a introducao das
RNAs, muitas areas da computacao se desenvolveram, visto que problemas que antes eram
considerados computacionalmente difıceis de serem resolvidos, agora podem ser resolvidos com
maior facilidade e melhor desempenho. Em seguida, apresenta-se o algoritmo de aprendizado
supervisionado do Multilayer Perceptron, visto que este sera utilizado para a resolucao do pro-
blema proposto neste trabalho.
6.5.1 Algoritmo de Aprendizado Supervisionado do Multilayer Per-
ceptron
O algoritmo de aprendizado supervisionado do Multilayer Perceptron foi desenvolvido ba-
seado no Perceptron, desenvolvido por Rosenblatt, por volta do final dos anos 1950 e inıcio dos
anos 1960. Os perceptrons de multiplas camadas tem sido aplicados com sucesso para resol-
ver diversos problemas difıceis, atraves do seu algoritmo de treinamento conhecido como error
back-propagation.
33
Basicamente, a aprendizagem por retropropagacao de erro consiste de duas etapas pelas
camadas: sendo um para frente, a propagacao, e um para tras, a retropropagacao. O algoritmo
de retropropagacao pode ser descrito em cinco fases, conforme apresentadas a seguir:
1. Inicializacao: atribui-se valores aleatorios aos pesos sinapticos e nıveis de bias, em uma
distribuicao uniforme.
2. Apresentacao dos exemplos de treinamento: apresenta-se uma epoca de exemplos a rede.
Para cada exemplo, realiza-se a propagacao dos sinais e a retropagacao dos erros com a
correcao dos pesos e nıveis de bias, conforme os dois proximos itens.
3. Propagacao dos sinais: aplica-se a camada de entrada da rede o vetor de sinais de entrada
x(n) e calcula-se o campo local induzido de entrada ate a camada de saıda, onde se obtem
o vetor de sinais funcionais da rede y(n). Em seguida, calcula-se o sinal de erro ej(n)
para cada neuronio da camda de saıda, pela comparacao de y(n) com o vetor de saıdas
desejadas d(n). Daı, calculam-se o erro instantaneo e com este, o erro medio global, para
teste de finalizacao.
4. Retropropagacao de sinais de erro: calculam-se os gradientes locais para todos os neuro-
nios da camada de saıda:
δj(n) = −ej(n)ϕ′
j(j(n)) (6.15)
Em seguida, calculam-se os ajustes para os pesos daquela camada, bem como o de bia, os
quais devem ser somados aos valores atuais:
∆wij = ηej(n)ϕ′
j(vj(n))yi(n) = −ηδj(n)yi(n) (6.16)
∆bj = ηej(n)ϕ′
j(vj(n)) = −ηδj (6.17)
O proximo passo e o calculo do gradiente local para os neuronios da penultima camada
(camada oculta):
δi(n) = ϕ′
i(vi(n))k∑
j=1
(δj(n)wij(n)) (6.18)
Entao, calcula-se o ajuste para todos os pesos desta camada, bem como o dos bias, os
quais devem ser somados aos valores atuais:
∆wki = −ηϕ′
i(vi(n))yk(n)J∑
j=1
(δj(n)wij(n)) = −ηδi(n)yk(n) (6.19)
34
∆bj = −ηϕ′
i(vi(n))J∑
j=1
(δj(n)wij)) = −ηδi(n) (6.20)
O processo prossegue de forma identica para as demais camadas ocultas, assim como para
a camada de entrada, em que os valores dos ajustes na primeira camada oculta (apos a
entrada da rede) deve ter o valor yk(n) substituıdo pelo valores de xk(n).
5. Iteracao: iteram-se as computacoes apresentando novas epocas de exemplos de treina-
mento para a rede de forma aleatoria de epoca para epoca, ate que seja satisfeito o
criterio de parada, que pode ser o numero maximo de iteracoes ou um valor limite para
o erro global medio da rede.
6.6 Consideracoes Finais
Como pode ser visto nos trabalhos relacionados, a rede neural MLP demanda de muito
tempo computacional para ser treinada, devido a sua arquitetura, mais como ela e paralela, a
utilizacao de tecnicas de paralelismo, mais especificamente a CUDA, sera explicada no capıtulo
a seguir com o intuito de reduzir esse tempo.
35
Capıtulo
7CUDA
CUDA e a arquitetura de computacao paralela da NVIDIA que possibilita aumentos signi-
ficativos na performance de computacao pelo aproveitamento da potencia da GPU (unidade de
processamento grafico) (NVIDIA, 2010). A CUDA e a engine de computacao NVIDIA em uni-
dades de processamento grafico (GPUs) que esta acessıvel para os desenvolvedores de software
atraves de variantes de linguagens de programacao padrao da industria. Os programadores
pode usar o ”C for CUDA” (C com extensoes NVIDIA e algumas restricoes), compilado por um
compilador chamado PathScale Open64 C compiler, para a codificacao dos algoritmos para exe-
cucao na GPU. A arquitetura CUDA compartilha uma gama de interfaces computacionais e e
esta disponıvel para programar tambem em Python , Perl, Fortran, Java, Ruby, Lua, MATLAB
e IDL, e suporte nativo existente no aplicativo Mathematica.
A CUDA fornece aos desenvolvedores o acesso ao conjunto de instrucoes virtuais e memoria
dos elementos da computacao paralela CUDA em GPUs. Usando a CUDA, as GPUs NVIDIA
tornar-se acessıveis para a computacao como CPUs . Ao contrario de CPUs no entanto, as
GPUs tem uma arquitetura de processamento paralelo que enfatiza a executar muitas threads
simultaneas lentamente, ao inves de executar um unico segmento muito rapido. Esta abordagem
de resolucao de problemas de uso geral em GPUs e conhecida como GPGPU. A seguir sera
especificado a sua arquitetura
7.1 Arquitetura CUDA
A arquitetura NVIDIA CUDA se baseia tanto em componentes de hardware como de soft-
ware. A parte que entende-se por software e a executada na CPU, formada por um algoritmo
sequencial escrito comumente na linguagem C ou alguma outra linguagem que e suportada por
CUDA. A parte do hardware e formada pelo codigo compilado por CUDA para torna-se um
36
kernel. Nesse contexto, sao blocos que especificam parte do algoritmo em que se deseja a para-
lelizacao. Ele tambem pode ser tratado como um codigo que pode ser utilizado pela GPU para
chamar outros kernel nela ou em outra GPU. A GPU contem milhares de threads. A CUDA faz
a formatacao do codigo de uma maneira que threads sejam alocadas paralelamente e o usuario
usufrua dessa caracterıstica, podendo fazer chamadas de kernel que serao independentes entre
si, o que permite a GPU rodar varios algoritmos sem problemas.
A GPU e voltada para computacao intensiva, com alta paralelizacao, que sao caracterısticas
do problema de renderizacao grafica. Alem disso, sua arquitetura e especializada no processa-
mento deste tipo de dados e nao no controle de fluxo. Pode-se verificar essa diferenca observando
a Figura 7.1. A quantidade de transistores utilizados para fazer processamento (ALU) e bem
maior na GPU que na CPU. A arquitetura da CPU ainda esta dividida em enormes blocos
que contem um componente de controle de fluxo e um de memoria cache. No caso da GPU, o
mesmo programa e executado em muitos elementos em paralelo. Dessa maneira, nao possui um
sofisticado componente de controle de fluxo, porem, oferece uma grande intensidade de com-
putacao aritmetica. Alem disso, a cache se torna pequena na GPU diminuindo a latencia para
execucao de cada grande bloco de unidades logicas e matematica (ULA), diferente da CPU que
contem uma cache enorme, obtendo uma latencia alta para acesso.
Figura 7.1: Diferenca da especificacao dos processadores na CPU e na GPU
Possuindo um unidade de controle, um componente de cache e um conjunto enorme de
ALU’s, e possıvel obter a estrutura de varios grupos de cores. Pode-se assim certificar que a
GPU e um manycore, apresentando de trinta e dois ate quinhentos e doze cores dependendo
do modelo. Essa subdivisao de cores na GPU e chamada de Stream Processing (um ponto
importante a ser lembrado e que, para a execucao na GPU, o algoritmo paralelizado nao pode
ter muita dependencia de dados em cada passo de computacao, pois a GPU nao faz paralelizacao
de tarefas e sim de processamento de dados). Caso essa otimizacao nao seja feita no algoritmo,
a GPU tem seu desempenho bastante afetado. Com relacao a hierarquia de compilacao para o
CUDA, a Figura 7.2 ilustra a arquitetura da sua pilha de software. A seguir e especificado a
sua forma de programacao.
37
Figura 7.2: A arquitetura runtime da CUDA
7.2 Programacao CUDA
A CUDA e baseada em programacao paralela, permitindo milhares de threads executando
uma mesma tarefa. Neste caso, a GPU funciona como um co-processador da CPU, a qual
chama-se de ”HOST” e a GPU de ”DEVICE”. A linguagem utilizada para criar essa paraleli-
zacao otimizada esta presente na API que CUDA fornece. Essa API e formada por bibliotecas
importantes, dentre as quais ressalta-se o CUBLAS e o CUFFT que implementam e otimizam
funcoes da algebra linear e transformada de Fourier, respectivamente.
CUDA usa como base a linguagem C, que permite uma curva rapida de aprendizado. Nela
deve-se criar funcoes desejadas que CUDA otimize e paralelize na GPU. Essas funcoes sao
chamadas de kernel. No algoritmo a seguir pode-se observar um exemplo de um codigo simples
7.1.
12 g l o b a l void matAdd( f loat A[N ] [ N] , f loat B[N ] [ N] ,3 f loat C[N ] [ N] )4 {5 int i = threadIdx . x ;6 int j = threadIdx . y ;7 C[ i ] [ j ] = A[ i ] [ j ] + B[ i ] [ j ] ;8 }9
10 int main ( )11 {
38
12 // Kernel i n v o c a t i o n13 dim3 dimBlock (N, N) ;14 matAdd<<<1, dimBlock>>>(A, B, C) ;15 }
Listing 7.1: Soma de Matrizes em CUDA
Nesse codigo, tem-se uma funcao matAdd que apresenta uma tag global antes da definicao
da funcao. Essa tag define ao compilador que esse bloco sera paralelizado na GPU. A funcao
main faz a invocacao do metodo. Ele se localiza no HOST e o codigo e executado na GPU
(DEVICE). Em uma workstation pode-se encontrar mais que uma GPU, neste caso elas serao
chamadas de DEVICE 0, DEVICE 1, etc.
O kernel e acionado colocando um tag de configuracao antes da declaracao dos parame-
tros, ”<<<>>>”. Ha tres parametros possıveis na configuracao: a configuracao do tama-
nho das grids (a),a configuracao com o tamanho dos blocos (b) e a quantidade de memoria
compartilhada que se deseja utilizar no algoritmo (Ns). Isso gera uma configuracao generica
”<<< a, b,Ns >>>”.
No main, antes da invocacao, declaramos um tipo de variavel definida pelo CUDA chamada,
dim3. A variavel criada dimBlock tera tres dimensoes e cada uma dessas dimensoes representara
a dimensao de um bloco. No exemplo, teremos um bloco com tamanho N para dimensao x,
tamanho N para dimensao y e a dimensao z que foi omitida tem tamanho 1. A posicao onde
se encontra o valor 1 na configuracao da chamada da funcao significa o tamanho da grid. Essa
definicao tambem e usado o tipo dim3. Essa configuracao pode ser conferida no algoritmo 7.2.
1 dim3 dimBlock (16 , 16) ;2 dim3 dimGrid ( (N + dimBlock . x −1) / dimBlock . x ,3 (N + dimBlock . y − 1) / dimBlock . y ) ;4 MatAdd<<<dimGrid , dimBlock>>>(A, B, C) ;
Listing 7.2: Configuracao dos blocos e grids em CUDA
Neste exemplo, o tamanho do grid e dado pelo tamanho da matriz, N , mais o tamanho do
bloco na dimensao x, dimBlock.x, menos um dividido pela dimensao do bloco em x. Essa e
a quantidade de blocos que serao computados pelo grid na dimensao x. Segue a mesma linha
de raciocınio na dimensao y do grid. Ressalta-se novamente que a dimensao z foi omitida e
seu valor e 1. Ha uma restricao no tamanho dos blocos. Deve-se verificar a quantidade de
threads que foi declarada em cada dimensao. A regra dimBlock.x ∗ dimBlock.y ∗ dimBlock.z(multiplicacao das dimensoes) precisa ser menor que o maximo do numero de threads que pode
ser alocada para o bloco. Na chamada da configuracao, <<< a, b,Ns >>>, ha um terceiro
parametro, Ns. Esse e do tipo size t e especifica o numero de bytes na memoria compartilhada
que cada bloco deve alocar dinamicamente. Esse parametro por default e zero e nao precisa ser
especificado.
O HOST cria invocacoes do kernel de acordo com o parametro de configuracao. Cada ker-
nel e executado paralelamente e independentemente entre si na GPU. A arquitetura CUDA e
baseada em array’s escalaveis de multithread SMs, ou thread Batching, que pode ser verificado
39
na Figura 7.3. Ele e um tbatch de threads que o kernel executa e organiza em grids de threads
block. Uma thread block e um batch de threads que cooperam entre si para compartilhar efici-
entemente as informacoes que serao processadas. Essa eficiencia vai desde o compartilhamento
(copia da DRAM GPU para a memoria compartilhada e vice-versa) dessa informacao atraves
da memoria compartilhada, ate a sincronizacao de execucao para o acesso a essa memoria.
Cada thread e identificada atraves de ID unica, chamada thread ID. Ha um numero limitado
de threads por bloco. Porem, um bloco de mesma dimensao e tamanho pode ser executado por
um mesmo kernel fazendo um grid de blocos, aumentando ainda mais a quantidade de threads
sendo executados em paralelo. Vale salientar que as threads de blocos diferentes nao podem
se comunicar. Alem disso, cada bloco e identificado por um block ID, e tem sua ID unica em
relacao ao grid.
Figura 7.3: Exemplificacao da thread Batching da CUDA
7.3 Consideracoes Finais
Com a apresentacao dos conceitos fundamentais que serao utilizados nesse projeto, no capı-
tulo a seguir sera explicado a utilizacao do CUDA e das tecnicas mostradas anteriormente no
desenvolvimento deste trabalho.
40
Capıtulo
8Utilizacao de RNA e GPGPU para
reconhecimento de Melanoma
A solucao proposta neste trabalho faz o uso de uma RNA MLP junto a tecnicas de progra-
macao paralela e processamento de imagens para uma solucao hıbrida cujo objetivo e a reducao
do tempo de treinamento e a obtencao de resultados na deteccao do melanoma. O modelo de
execucao utilizado e o demonstrado na Figura 8.1 .
Esta solucao consiste em a partir da leitura das imagens com o histograma de cores no GPU
gerar os dados de entrada para a RNA, que com a utilizacao da CUDA gerara os dados os pesos
aleatorios e fara o seu treinamento.
As duas primeiras etapas de execucao da solucao proposta sao a coleta e selecao de infor-
macoes, que constitui na busca de dados de entrada para o treinamento da rede neural. A
partir de uma imagem colorida fornecida, em qualquer formato, e feita a leitura da mesma e
armazenada na estrutura definida na Estrutura 8.1. Para tanto, e utilizado uma ferramenta
chamada ImageMagick que converte a extensao da imagem para o formato (extensao) ppm.
1 typedef unsigned char color component ;2 typedef color component p i x e l [ 3 ] ;3 typedef struct {4 unsigned int width ;5 unsigned int heigh ;6 p i x e l ∗buf ;7 } image t ;8 typedef image t ∗ image ;
Listing 8.1: Estrutura de uma imagem no PPM
O PPM, Portable Pixmap, e um formato simples para imagens coloridas e sao concebidas
41
Figura 8.1: Solucao hıbrida para a reducao do tempo de treinamento da RNA com a CUDA
para ser facilmente serem trocadas entre varias plataformas. Um arquivo de imagem em formato
PPM-RAWBITS, Portable Pixmap RAWBITS, comeca sempre com um cabecalho que apresenta
as seguintes informacoes:
• A sequencia de caracteres ”P6” e um ou mais caracteres brancos,
• A largura l da imagem em pixels e um ou mais caracteres brancos;
• A altura h da imagem em pixels e um ou mais caracteres brancos;
• O valor maximo de cada componente RGB (que e sempre igual a 255) e um caractere
branco;
• Linhas comecadas por ”#” sao comentarios (ignorados ate ao fim da linha)
Um exemplo pode ser o seguinte:
P6
# Imagem ppm com 100x200 pixels
100 200
255
42
A imagem colorida e entao convertida para tons de cinza, devido ao fato que uma imagem
em tons de cinza gera apenas um histograma e em outros padroes (imagens coloridas) gerarem
normalmente tres histogramas, sendo um para cada cor referente ao sistema de cores. Esse al-
goritmo consiste em verificar a intensidade da cores em cada tom do RGB, utilizado comumente
em imagens e usar a formula
l = 0.2126 ∗ rc+ 0.7152 ∗ gc+ 0.0722 ∗ bc
que consistem em multiplicar os valores das cores vermelha, verde e azul e obter qual a a
variacao que esta representara na imagem em escala de cinza. O Algoritmo 8.2 demonstra os
passos utilizados.
1 grayimage t o g r a y s c a l e ( image img )2 {3 unsigned int x , y ;4 grayimage timg ;5 double rc , gc , bc , l ;6 unsigned int o f s ;78 timg = a l l o c g ray img ( img−>width , img−>he ight ) ;9
10 for ( x=0; x < img−>width ; x++)11 {12 for ( y=0; y < img−>he ight ; y++)13 {14 o f s = ( y ∗ img−>width ) + x ;15 rc = (double ) img−>buf [ o f s ] [ 0 ] ;16 gc = (double ) img−>buf [ o f s ] [ 1 ] ;17 bc = (double ) img−>buf [ o f s ] [ 2 ] ;18 l = 0.2126∗ rc + 0.7152∗ gc + 0.0722∗ bc ;19 timg−>buf [ o f s ] [ 0 ] = ( luminance ) ( l +0.5) ;20 }21 }22 return timg ;23 }
Listing 8.2: Metodo de conversao de imagens para tons de cinza
Logo apos a conversao para os tons de cinza, armazena-se a imagem na Estrutura 8.3 . Com
a imagem convertida em tons de cinza, e iniciado o processo de computacional do histograma.
Com isso, um vetor representando a imagem e gerado pelo processo do histograma, sendo seu
conteudo dado como entrada a cada neuronio da camada inicial da RNA.
1 typedef unsigned char luminance ;2 typedef luminance p i x e l 1 [ 1 ] ;3 typedef struct {4 unsigned int width ;5 unsigned int he ight ;6 p i x e l 1 ∗buf ;
43
7 } grayimage t ;8 typedef grayimage t ∗grayimage ;
Listing 8.3: Estrutura da imagem em tons de cinza
O processo para a obtencao do histograma pode ser executado na CPU e/ou GPU. Quando
executado na CPU, o vetor que manipula a imagem ainda colorida tem o tamanho das dimensoes
da imagem dada como entrada. Por exemplo, uma imagem de 640x480 pixels seria armazenada
em um vetor de 307200 posicoes (640 x 480). Ja na sua transformacao para os tons de cinza,
esse e reduzido para um vetor de saıda com 256 posicoes, identificando a quantidade de vezes
que cada tom apareceu.
Ja no GPU, o armazenamento e realizado por um vetor multidimensional (h data) cujo
tamanho e definido pela largura e altura da imagem. Nessa arquitetura o processamento e
distribuıdo entre multiplas threads, as quais, geram durante a execucao os chamados subhisto-
gramas.
O subhistograma de um bloco e armazenado na memoria compartilhada em uma matriz
(s Hist[]) word 2D de WARP N linhas por BIN COUNT colunas, onde cada warp (grupo de
threads). O metodo responsavel por executar essa tarefa e obter o histograma de cores pode
ser observado no Algoritmo 8.4.
1 d e v i c e void addData256 ( volat i le unsigned int ∗ s WarpHist ,2 unsigned int data , unsigned int threadTag ) {3 unsigned int count ;4 do{5 count = s WarpHist [ data ] & $0x07FFFFFFU$ ;6 count = threadTag | ( count + 1) ;7 s WarpHist [ data ] = count ;8 }while ( s WarpHist [ data ] != count ) ;9 }
Listing 8.4: Metodo para obtencao do histograma de cores em GPU
A primeira coisa que cada thread faz e a leitura do valor anterior do contador do histograma.
Os bits mais significativos do contador sao mascarados e substituıdos com o valor da thread
atual. Em seguida, cada thread escreve o contador incrementado de volta no subhistograma em
memoria compartilhada. A ultima fase de calculos e a fusao de subhistogramas por warp em
um unico histograma por bloco, que pode ser conferido no Algoritmo 8.5.
1 for ( int pos = threadIdx . x ; pos < BIN COUNT; pos += blockDim . x ) {2 unsigned int sum = 0 ;3 for ( int base = 0 ; base < BLOCK MEMORY; base += BIN COUNT)4 sum += s H i s t [ base + pos ] & 0x07FFFFFFU ;5 #i f ATOMICS6 atomicAdd ( d Result + pos , sum) ;7 #else8 d Result [ b lockIdx . x ∗ BIN COUNT + pos ] = sum ;9 #endif
10 }
44
Listing 8.5: Passos para a juncao dos subhistogramas no GPU
Com as duas primeiras etapas concluıdas, tem-se como passo seguinte a execucao da etapa
de treinamento da RNA. Esse processo consiste no ajuste dos pesos sinapticos representados
por valores de ponto flutuante a fim de gerar a saıda correta para um neuronio.
A rede neural denominada multilayer perceptron (MLP), utilizada nesse projeto, para fazer
o mapeamento dos conjuntos de dados de entrada para um conjunto de saıda apropriada. Foi
utilizado a tecnica chamada de aprendizado supervisionado para treinamento da rede. A rede
implementada consiste em uma camada de entrada, sendo os dados de imagens os histogramas
de cores das imagens, uma cada intermediaria com 256 neuronios e a camada de saıda com 1
neuronio. A funcao de ativacao utilizada e a funcao linear sigmoide demonstrada abaixo:
ϕ(v) =1
1 + e−av(8.1)
Como o treinamento da rede, pode ser paralelizado, pois as RNA’s foram projetadas para
serem executadas em paralelo e distribuıdo, o treinamento da rede foi executado sobre a arqui-
tetura CUDA.
Quando programado atraves da CUDA, o GPU passa a ser visto como um processador capaz
de operar em blocos de ate 256 threads em paralelo. Ele opera como um processador auxiliar ao
CPU, permitindo que porcoes de dados (ou funcoes) paralelizaveis, e que necessitem de grandes
quantidades de recursos computacionais, sejam carregados para ele, aliviando a carga do CPU.
Utilizando-se de que cada bloco pode operar ate 256 threads, as funcoes de forward e
backward sao as que, quando implementadas em uma arquitetura paralela, aproveitam do pa-
ralelismo da GPU. A funcao forward paralelizada funciona da seguinte maneira: a partir do
neuronio fornecido, obtem-se o valor do contador, atraves do calculo dos valores do ındice e
dimensao do bloco com o valor do ındice da thread, para gerar o valor do erro a ser propagado
para a saıda daquele neuronio, que pode ser conferido no Algoritmo 8.6.
1 g l o b a l void redep ( f loat ∗e , f loat ∗ s , Neuronio n) {2 int i = blockIdx . x+ blockDim . x+ threadIdx . x ;3 ∗ s += e [ i ] ∗ n . pesos [ i ] ;45 ∗ s −= n . b ia s ;6 }
Listing 8.6: Funcao redep que implementa a funcao forward
Com a propagacao de todos os erros de uma camada, efetua-se o processo do backward em
paralelo. A partir dos valores da camada oculta fornecida, os pesos dos neuronios da camada de
entrada sao ajustados com os valores dos pesos e as bias do neuronios ocultos. Com esse ajuste,
os valores da entrada sao recalculados a partir da saıda dos neuronios, que e demonstrada na
Figura 8.7
1 g l o b a l void redep2 ( f loat ∗e , CamadaOculta c , Camada camada ) {2 int i = blockIdx . x+ blockDim . x+ threadIdx . x ;
45
3 int j = blockIdx . y+ blockDim . y+ threadIdx . y ;4 c . neuron ios [ i ] . deltaw [ j ] = eta ∗ e [ j ] ∗ c . e r ro [ i ] +alpha ∗ c . neuron ios [ i ] .
deltaw [ j ] ;5 c . neuron ios [ i ] . b i a s = eta ∗ (−1) ∗ c . e r ro [ i ] + alpha ∗ c . neuron ios [ i ] . b i a s ;6 e = camada . sa ida ;7 }
Listing 8.7: Funcao redep que implementa a funcao backward
Esse processo continua executando ate que o erro seja o desejado ou o numero de epocas de
treinamento seja atendido.
8.1 Consideracoes Finais
A fim de comprovar os resultados obtidos, no proximo capıtulo sao apresentados os resulta-
dos que comprovacao a melhoria do tempo computacional para o treinamento da rede. A seguir
sera apresentado os resultados e a plataforma utilizada.
46
Capıtulo
9Resultados
Os resultados aqui apresentados foram realizados para avaliar o desempenho do algoritmo
proposto para a reducao do tempo de treinamento de uma rede neural MLP. Esses tambem
foram aplicados para a identificacao de quais funcoes a paralelizacao do codigo se aplica. O
objetivo e demostrar que o GPU apresenta melhores resultados em relacao ao CPU. As duas
versoes do algoritmo foram implementadas na linguagem C++, utilizando a IDE XCode da
Apple e o CUDA, tanto para o hardware do CPU, quanto para o GPU. As configuracoes
utilizadas para tanto sao as seguintes:
• Sistema Operacional : MAC OS X
• Processador: Core 2 Duo 3.06 GHZ
• Memoria: 4GB DDR3 1067 MHZ
• Placa de Vıdeo: NVIDIA GEFORCE G320M
Para a leitura de imagens foram avaliados as implementacoes que fazem o algoritmo do
histograma tanto no CPU quanto no GPU. Para a leitura das imagens foi avaliado o tempo de
execucao do histograma de imagens. Ja para a rede neural foi avaliada a fase de treinamento,
sendo que o que foi paralelizado foi o forward e o backward, que sao as operacoes que demandam
de mais processamento. Os parametros para a obtencao do histograma foram a quantidade de
10, 20, 30, 40 e 50 imagens para arquivos respectivamente de 1, 5 e 10 MB. Para a rede neural
foram utilizados 256 pesos na camada de entrada, 256 neuronios na camada oculta e 1 neuronio
na camada de saıda com uma taxa de aprendizado de 5%.
A combinacao dos parametros acima citados foram utilizados para a criacao de quatro
diferentes avaliacoes. Na primeira avaliacao foi utilizado a leitura de imagens de tamanho de
47
1 MB com a variacao da quantidade de 10 a 50. A Tabela 9.1 mostra os resultados obtidos,
juntamente com o seu speedup e o grafico apresentado pela Figura 9.1, demonstra que o CPU
para a leitura de imagens sempre se mostra inferior ao GPU.
Quantidade de Imagens Tempo (sec) CPU Tempo (sec) GPU Speedup10 0.31 0.13 2.3825 0.75 0.26 2,8850 1.54 0.53 2.92
Tabela 9.1: Execucao do histograma de imagens de tamanho de 1 MB na CPU e GPU.
Figura 9.1: Resultados da leitura de imagens de 1MB utilizando o CPU e o GPU
A segunda avaliacao consiste na leitura de imagens de tamanho de 5 MB com a variacao da
quantidade igual a anterior. A Tabela 9.3 mostra os resultados obtidos, juntamente com o seu
speedup e o grafico apresentado pela Figura 9.2, demonstra que o GPU e mais rapido na leitura
de imagens de maior resolucao e com maior quantidades de imagens
Quantidade de Imagens Tempo (sec) CPU Tempo (sec) GPU Speedup10 1.12 0.26 4.3325 2.59 0.57 4.5550 5.84 1.25 4.67
Tabela 9.2: Execucao do histograma de imagens de tamanho de 5 MB na CPU e GPU.
A terceira avaliacao corresponde a leitura de imagens de tamanho de 10 MB com a variacao
da quantidade de 10 a 50. A Tabela ?? mostra os resultados obtidos, juntamente com o seu
speedup e o grafico apresentado pela Figura ??, comprava que o GPU tem um desempenho
melhor na leitura de imagens de maior resolucao e com maior quantidades de imagens, que
demanda de maior processamento, que o processador.
A ultima avaliacao corresponde ao treinamento da rede neural para quantidades de imagens
diferentes. A Tabela 9.4 mostra os resultados obtidos em relacao ao treinamento por epocas,
48
Figura 9.2: Resultados da leitura de imagens de 5 MB utilizando o CPU e o GPU
Quantidade de Imagens Tempo (sec) CPU Tempo (sec) GPU Speedup10 16.75 0.9 18.625 42.76 2.25 1950 89.26 4.565 19.55
Tabela 9.3: Execucao do histograma de imagens de tamanho de 10 MB na CPU e GPU.
juntamente com o seu speedup e o grafico apresentado pela Figura 9.4, mostra que o GPU, para
a tarefa de treinamento dos metodos de backward e forward apresenta um melhoria, em termos
de tempo computacional, eficaz em relacao ao treinamento sequencial. Isso se da pelo fato
que o GPU aproveitar do paralelismo distribuıdo que a rede neural apresenta na sua estrutura.
Ressalta-se que a GPU foi quase 2 vezes mais rapida que a CPU.
Quantidade de Imagens Tempo (ms) CPU Tempo (ms) GPU Speedup1 25 15 1.674 98 58 1.688 207 111 1.8612 314 175 1.7916 425 245 1.7320 536 306 1.7524 652 378 1.72
Tabela 9.4: Execucao do treinamento da rede neural na CPU e GPU.
9.1 Consideracoes finais
A partir das avaliacoes apresentadas, pode-se concluir que os 2 fatores principais que fizeram
que o GPU fosse mais rapido que o CPU foram o tamanho e a quantidade das imagens. A
variacao da quantidade de imagens se tratando da qualidade (tamanho) mostra que quanto mais
a quantidade de imagens, maior o volume de informacoes a ser processado, e consequentemente,
49
Figura 9.3: Resultados da leitura de imagens de 10 MB utilizando o CPU e o GPU
Figura 9.4: Resultados do treinamento utilizando o CPU e o GPU
a programacao paralela e mais eficiente que a programacao tradicional (sequencial). O mesmo
se sucede para a quantidade de imagens, pois aumentando a quantidade de imagens, aumenta-se
o tamanho das informacoes.
Os resultados obtidos com essa aplicacao auxilia a profissionais da area, pois com a reducao
do tempo de treinamento e leitura das imagens, o diagnostico e mais rapido, auxiliando assim as
pessoas com enfermidades, assim como o Melanoma, que se propaga rapidamente. No proximo
capıtulo, sera apresentadas as conclusoes deste trabalho.
50
Capıtulo
10Conclusoes
A diagnosticacao de varias enfermidades por meio de imagens vem ganhando muita impor-
tancia pelo fato de que os resultados sao significativos, o que prove a profissionais da saude um
auxılio maior e para os pacientes, maiores chances e qualidade de vida. Com isso, os sistemas
capazes de identificar doencas, ultimamente, vem se destacando na computacao.
Nesse trabalho foi elaborado uma pesquisa sobre os tipos de cancer, bem como sua letalidade
e sua forma de diagnostico com o objetivo de se conhecer a forma que se diferencia as imagens.
Com isso, buscou-se informacoes sobre tecnicas que auxiliem na obtencao de caracterısticas
baseadas nas tres principais maneira: cor, formas e textura para entao fazer uma abordagem
sobre a forma de classificacao de imagens e propos-se o uso das Redes Neurais Artificiais, mais
especificamente a MLP.
Por fim, para a reducao do tempo de treinamento da MLP e obtencao das caracterısticas das
imagens buscou-se metodos de otimizacao de algoritmos, e com isso, utilizou-se a abordagem
de GPGPU nas placas de vıdeo NVIDIA, utilizando-se a tecnologia CUDA.
Ao se realizar os experimentos conclui-se que a paralelizacao dos algoritmos de obtencao de
caracterısticas e para o treinamento da rede neural e uma solucao robusta para a aplicacao em
questao. Alem disso, notou-se que, a utilizacao do paralelismo e muito eficiente a medida em
que se aumenta o tamanho do problema (leitura de imagens ou entradas da rede neural).
Como contribuicao, esse trabalho proporcionou a publicacao de um artigo no XXXI CI-
LAMCE, evento ocorrido em Buenos Aires na Argentina do dia 15 a 18 de novembro deste
ano. Para a comunidade, este trabalho colaborou com uma das areas que ainda necessitam de
estudos, que e a area de classificacao de imagens de doencas juntamente com a utilizacao de
computacao paralela.
Entretanto, ressalta-se que ainda e necessario mais estudos a fim de melhorar a acuracia da
rede neural e se a utilizacao de outras formas de caracterizacao de imagens ou agrupamento de
51
varias melhoram a classificacao das imagens. Alem disso, pretende-se reformular a rede neural
para consolidar os resultados. Enfim, por ser uma aplicacao complexa, ainda existe muitos
pontos a serem explorados em trabalhos futuros.
10.1 Trabalhos futuros
Acredita-se que este trabalho contribuiu satisfatoriamente, tanto no campo teorico quanto
pratico, para a utilizacao de tecnicas de processamento de imagens (mais especificamente de
analise de imagens) em conjunto com as redes neurais artificiais em paralelo para se obter
melhores resultados em termo de tempo computacional para imagem do cancer de pele do tipo
Melanoma. Entretanto, devido ao tempo e a complexidade da aplicacao, alguns pontos nao
foram explorados. Por isso, ressalta-se alguns pontos que podem ser estudados e aprofundados
em trabalhos futuros:
• Reformular a Rede Neural para verificar melhores formas de classificacao;
• Aumentar o banco de imagens de treinamento e o banco de imagens de teste;
• Criar um banco de imagens em convenio com hospitais;
• Implementar um sistema de probabilidades capaz de estimar as chances de uma lesao ser
Melanoma ou nao Melanoma;
• Aumentar a quantidade de classes, ou seja, dividir as imagens em diversos tipos de doencas
de pele (cancerosas ou nao);
• Incluir caracterısticas de forma e textura no modelo proposto.
• Utilizar outras formas de paralelizacao, como placas de vıdeo AMD e processadores CELL,
alem da utilizacao de OPEN CL.
52
Referencias Bibliograficas
AZEVEDO, E.; CONCI, A. Computacao Grafica: Geracao de Imagens. Rio de Janeiro:
Campus, 2003.
BITTENCOURT, C. D. R. Classificacao Automatica do Acabamento de Gordura em Imagens
Digitais de Carcacas Bovinas. Dissertacao (Mestrado) — Universidade de Brasılia, 2009.
BOTELHO, G. M. Processamento de Imagens no Auxılio a Deteccao de Cancer de Pele
Utilizando Redes Neurais Artificiais. 2007. 54 p. Monografia.
CONCI, A.; AZEVEDO, E.; LETA, F. R. Computacao Grafica: Teoria e Pratica. Rio de
Janeiro: Elservier, 2008.
FOLEY, J. D. et al. Computer Graphics: Principles and Practice. 2.. ed. Reading, MA:
Addison-Wesley, 1990. ISBN 978-0-201-12110-0.
GONZALES, R.; WOODS, R. Processamento de Imagens Digitais. Sao Paulo: Edgard Blucher
Ltda, 2000.
HAYKIN, S. Redes Neurais: Princıpios e Pratica. 2. ed. Sao Paulo: BookMan, 2007.
HEBB, D. O. The organization of behavior. New York: Wiley, 1949.
Instituto Nacional do Cancer. Cancer de pele-melanoma-inca. 2010. Disponıvel em:
<http://www.inca.gov.br/conteudo view.asp?id=335>.
KIRK, D.; HWU, W. mei. Programming Massively Parallel Processors: A Hands-on Approach.
[S.l.]: Morgan Kaufmann, 2010.
LUDWIG, O.; MONTGOMERY, E. Redes Neurais: Fundamentos e Aplicacoes com Programas
em C. Rio de Janeiro: Editora Ciencia Moderna, 2007.
MARTINEZ, M. A. R. et al. Genetica molecular aplicada ao cancer cutaneo nao melanoma.
Anais Brasileiros de Dermatologia, scielo, v. 81, p. 405 – 419, 10 2006. ISSN 0365-0596.
53
MEDEIROS, L. F. de. Redes Neurais em Delphi. Sao Paulo: Visual Books, 1996.
NAGESWARAN, J. M. et al. Efficient simulation of large-scale spiking neural networks
using cuda graphics processors. In: IJCNN’09: Proceedings of the 2009 international joint
conference on Neural Networks. Piscataway, NJ, USA: IEEE Press, 2009. p. 3201–3208. ISBN
978-1-4244-3549-4.
NVIDIA. CUDA ZONE. 2010. Disponıvel em: <http://www.nvidia.com/object/cuda>.
PEDRINI, H.; SCHWARTZ, W. R. Analise de Imagens Digitais:Princıpios, Algoritmos e
Aplicacoes. Sao Paulo: Thomson Learning Edicoes Ltda, 2007.
RAIZER, K. et al. Training and applying a feedforward multilayer neural network in gpu.
CILAMCE, 2009.
REZENDE, S. O. Sistemas Inteligentes: fundamentos e aplicacoes. Barueri: Manole, 2003.
54