Você está na página 1de 63

UNIVERSIDADE PAULISTA

VINÍCIUS DE OLIVEIRA TRIGO MORAES- N536667


MATHEUS MARCELO PEREIRA DA COSTA - N431EJ1

SEGMENTAÇÃO DE IMAGEM COM U-NET

JUNDIAÍ
2023
VINÍCIUS DE OLIVEIRA TRIGO MORAES- N536667
MATHEUS MARCELO PEREIRA DA COSTA - N431EJ1

SEGMENTAÇÃO DE IMAGEM COM U-NET

Trabalho de conclusão de curso para


obtenção do título de graduação em
Ciência da Computação apresentado à
Universidade Paulista – UNIP.

Orientador(a): Prof. Gerson Pastrini

JUNDIAÍ
2023
VINÍCIUS DE OLIVEIRA TRIGO MORAES- N536667
MATHEUS MARCELO PEREIRA DA COSTA - N431EJ1

SEGMENTAÇÃO DE IMAGEM COM U-NET

Trabalho de conclusão de curso para


obtenção do título de graduação em
Ciência da Computação apresentado à
Universidade Paulista – UNIP.

Aprovado(a) em: ______/______/______

BANCA EXAMINADORA

_________________________________
Prof. Gerson Oliveira
Universidade Paulista - UNIP

_________________________________
Prof. Marcos Paulo Ferreira Rebello
Universidade Paulista - UNIP

_________________________________
Prof. Clayton Valdo
Universidade Paulista - UNIP
RESUMO

A automação impulsionada pela busca da eficiência, especialmente através da


Inteligência Artificial (IA) e do reconhecimento de padrões, tem otimizado processos e
reduzido a intervenção humana em diversos campos. Nos últimos anos, termos como
Inteligência Artificial, Aprendizado de Máquina e Aprendizado Profundo têm provocado
mudanças notáveis na interação das pessoas com a tecnologia, sendo exemplificado
no atendimento ao cliente através da IA, como chatbots. As técnicas de IA processam
grandes volumes de informações, impulsionando a demanda por soluções baseadas
em inteligência artificial, incluindo o uso de redes neurais convolucionais (CNN) para
diversas aplicações, como processamento de imagens. Considerando o potencial das
CNNs no processamento de imagens, é destacada a importância de reconhecer as
limitações do reconhecimento manual em comparação com soluções baseadas em IA.
Elas, ao contrário dos seres humanos, podem executar tarefas repetitivas sem queda
na produtividade, permitindo análises mais ágeis. Embora softwares não substituam
interações humanas complexas, eles podem economizar tempo em tarefas simples,
enquanto profissionais focam em atividades mais complexas. A proposta do trabalho
consiste em explorar e aplicar uma solução baseada em redes neurais convolucionais
(CNN), com ênfase na arquitetura U-Net, para a classificação de imagens médicas,
como lesões de pele. O foco é aprimorar técnicas de aprendizado profundo para
otimizar a identificação e análise de características nas imagens.

Palavras-chave: Aprendizado Profundo; Aprendizado de Máquina; CNN; U-net;


Segmentação.
ABSTRACT

Automation driven by the pursuit of efficiency, especially through Artificial Intelligence


(AI) and pattern recognition, has optimized processes and reduced human intervention
in various fields. In recent years, terms such as Artificial Intelligence, Machine Learning,
and Deep Learning have brought about notable changes in people's interaction with
technology, exemplified in customer service through AI, such as chatbots. AI
techniques process large volumes of information, driving demand for artificial
intelligence-based solutions, including the use of Convolutional Neural Networks
(CNNs) for various applications, such as image processing. Considering the potential
of CNNs in image processing, it is emphasized the importance of recognizing the
limitations of manual recognition compared to AI-based solutions. Unlike humans, AI
can perform repetitive tasks without a decline in productivity, enabling more agile
analyses. While software cannot replace complex human interactions, it can save time
in simple tasks, allowing professionals to focus on more complex activities. The
proposal of this work is to explore and apply a solution based on Convolutional Neural
Networks (CNN), with an emphasis on the U-Net architecture, for the classification of
medical images, such as skin lesions. The focus is on refining deep learning
techniques to optimize the identification and analysis of features in images.

Keywords: Deep Learning; Machine Learning; CNN; U-net; Segmentation


LISTA DE FIGURAS

Figura 1 - Ramos da Inteligência Artificial. ................................................................ 13


Figura 2 - Representação do que vemos e o que o computador vê. ......................... 18
Figura 3 - Detecção de imagem em diferentes escalas e tamanhos, reconhecendo
um cavalo grande ...................................................................................................... 19
Figura 4 - Detecção de imagem em diferentes escalas e tamanhos, reconhecendo
um cavalo pequeno ................................................................................................... 19
Figura 5 - Tarefa de detecção de objetos - mais à esquerda -, segmentação
semântica – centro -, segmentação semântica diferenciando instâncias - mais a
direita ........................................................................................................................ 19
Figura 6 - Representação de arquitetura simplificada CNN. ..................................... 22
Figura 7 - Representação de uma camada convolucional ........................................ 23
Figura 8 - Função ReLU ............................................................................................ 25
Figura 9 - Camada de ReLU em um mapa de ativação ............................................ 26
Figura 10 - Representação do método max pooling, em uma imagem 4x4 utilizando
um filtro 2x2 ............................................................................................................... 27
Figura 11 - Representação da função Softmax. ........................................................ 28
Figura 12 - Exemplo de arquitetura, baseada na LeNet, utilizando as camadas
básicas de convolução, pooling e totalmente conectadas ......................................... 28
Figura 13 - Arquitetura U-net (exemplo para 32x32 pixels na resolução mais baixa).
.................................................................................................................................. 29
Figura 14 - Banco de dados ISIC 2018. .................................................................... 34
Figura 15 - Imagem sem normalização do ISIC Challenge 2018 - ISIC_0000000 .... 35
Figura 16 - Imagem com normalização do ISIC Challenge 2018 - ISIC_0000000 .... 36
Figura 17 - Aumento de dados (Inversão Horizontal) realizado com dado retirado do
ISIC Archive 2018...................................................................................................... 37
Figura 18 - Aumento de dados (Inversão Vertical) realizado com dado retirado do
ISIC Archive 2018...................................................................................................... 37
Figura 19 - Aumento de dados (Rotação) realizado com dado retirado do ISIC
Archive 2018. ............................................................................................................ 38
Figura 20 - Aumento de dados (Ruído Gaussiano) realizado com dado retirado do
ISIC Archive 2018...................................................................................................... 38
Figura 21 - Camada de convolução transposta com um kernel 2×2. ........................ 40
Figura 22 - Máscaras de segmentação feitas pela IoU ............................................. 47
Figura 23 - Gráfico de Precisão................................................................................. 49
Figura 24 - Gráfico de Perda de Treinamento e Validação. ....................................... 50
Figura 25 - Gráfico do Recall da Validação e Treinamento. ...................................... 50
Figura 26 - Gráfico do Coeficiente da Validação e Treinamento. .............................. 51
Figura 27 - Gráfico da IoU de Validação e Treinamento. ........................................... 52
Figura 28 - Log de Treinamento da rede neural ........................................................ 53
Figura 29 - Resultado da segmentação da imagem 185 da validação. ..................... 53
Figura 30 - Resultado da segmentação da imagem 4 da validação. ......................... 53
Figura 31 - Resultado da segmentação da imagem 63 da validação. ....................... 54
Figura 32 - Resultado da segmentação da imagem 144 da validação. ..................... 54
Figura 33 - Resultado da segmentação da imagem 518 da validação. ..................... 54
LISTA DE TABELAS

Tabela 1 - Sequência de camadas resultantes em 1 bloco de redução. ................... 39


Tabela 2 - Sequência de camadas resultantes em 1 bloco de expansão. ................. 40
Tabela 3 - Arquitetura de rede Unet detalhada. ......................................................... 41
Tabela 4 - Desempenho após a primeira época do treinamento. .............................. 52
Tabela 5 - Desempenho após a quinta época do treinamento. ................................. 52
SUMÁRIO

1 INTRODUÇÃO ............................................................................................................................11

2 FUNDAMENTAÇÃO TEÓRICA ...........................................................................................13

2.1 DEEP LEARNING........................................................................................... 14


2.1.1 História............................................................................................................ 14
2.1.2 Reconhecimento de Imagem .......................................................................... 15
2.1.3 Classificação de Imagem ................................................................................ 17
2.1.4 Detecção de Objetos ...................................................................................... 18
2.1.5 Segmentação Semântica ................................................................................ 19
2.2 REDES NEURAIS CONVOLUCIONAIS ......................................................... 20
2.2.1 Tipos de Camadas .......................................................................................... 21
2.3 U-NET ............................................................................................................ 28

3. PROJETO ....................................................................................................................................31

3.1 DETALHES DA IMPLANTAÇÃO .................................................................... 31


3.2 BANCO DE IMAGENS ................................................................................... 31
3.3 PREPARANDO A REDE NEURAL ................................................................. 32
3.3.1 Hiper parâmetros ............................................................................................ 32
3.3.2 Coletas de Dados ........................................................................................... 33
3.3.3 Normalização .................................................................................................. 34
3.3.4 Aumento de Dados ......................................................................................... 36
3.4 ARQUITETURA .............................................................................................. 38
3.4.1 Arquitetura de Rede Detalhada ...................................................................... 41
3.4.2 Compilação do Modelo ................................................................................... 44
3.4.3 Callback .......................................................................................................... 48

4. RESULTADOS ...........................................................................................................................49

5. CONCLUSÃO.............................................................................................................................56

REFERÊNCIAS BIBLIOGRÁFICAS ..............................................................................................57


11

1 INTRODUÇÃO

A busca pela eficiência tem levado à crescente automação em inúmeros


campos de atuação, abrangendo desde tarefas cotidianas até aplicações complexas
e especializadas. Desde meados do século 20, a Inteligência Artificial (IA) tem
impulsionado o avanço tecnológico e aprimorado a automação, otimizando processos
e reduzindo a necessidade de intervenção humana. Entre as abordagens
desenvolvidas ao longo dos anos, o reconhecimento de padrões tem se destacado
como uma técnica amplamente aplicada tanto em sistemas computacionais quanto
pelos seres humanos, sendo considerada uma subcategoria específica da IA, do
Aprendizado de Máquina e do Aprendizado Profundo (Deep Learning). As Redes
Neurais Artificiais (RNA), teorizadas pelo neurofisiologista Warren McCulloch e pelo
matemático Walter Pitts, exemplificam uma abordagem de alta precisão
fundamentada no reconhecimento de padrões. Essas redes processam dados de
entrada, tomam decisões e aprendem simultaneamente com essas decisões,
possibilitando aplicações em áreas como reconhecimento de voz e imagem.
Na última década, os termos Inteligência Artificial, Aprendizado de Máquina e
Aprendizado Profundo têm ganhado destaque, impulsionando transformações
significativas na forma como as pessoas interagem com a tecnologia e gerando
benefícios tangíveis. Um exemplo dessa mudança pode ser observado no
atendimento ao cliente realizado pelas empresas. De acordo com a pesquisa Microsoft
State of Global Service, 60% dos consumidores deixam de fazer negócios com
empresas após experiências insatisfatórias no atendimento. Uma solução para este
desafio é proporcionada pela IA, por meio da automatização de tarefas e criação de
chatbots capazes de solucionar grande parte das demandas dos clientes de forma
rápida, eficiente e assertiva. Além disso, as técnicas de IA têm a capacidade de
processar e analisar enormes volumes de informações, convertendo-os em dados
estruturados e valiosos para uma ampla gama de aplicações. Consequentemente, à
medida que mais dados e maior poder computacional se tornaram disponíveis, houve
um aumento na demanda por soluções baseadas em inteligência artificial, incluindo o
emprego de redes neurais convolucionais (CNN) para aplicações específicas, como
processamento e análise de imagens, detecção de objetos e classificação de textos,
entre outras.
Tendo em vista o potencial das redes neurais convolucionais (CNN) no
12

processamento e análise de imagens, é importante considerar as limitações do


reconhecimento manual de imagens por profissionais da área quando comparado aos
softwares baseados em IA. Enquanto os seres humanos tendem a se cansar após
realizar tarefas repetitivas por um certo período, a IA é capaz de executar tarefas
repetidamente sem queda na produtividade. Essa queda de produtividade humana
pode distorcer significativamente os resultados, enquanto as tarefas realizadas de
forma automatizada processam as informações com mais agilidade, permitindo a
análise de dados para realizar planejamentos mais estratégicos e bem-sucedidos.
Embora os softwares nunca possam substituir interações humanas complexas, eles
podem assumir interações simples, muitas vezes economizando tempo, enquanto o
profissional pode dedicar seu tempo a tarefas mais complexas e importantes. As
verificações de imagens por meio de softwares já fazem parte do ambiente de trabalho
em setores como o médico, especialmente entre radiologistas e oncologistas, que
utilizam sistemas capazes de analisar milhões de imagens de raio-x, detectar
possíveis tumores e, em seguida, gerar uma recomendação de tratamento para o
paciente com base em seu tipo sanguíneo, idade e histórico médico. Tudo isso em
poucos segundos e com alto nível de precisão, quando aplicado em arquiteturas
direcionadas ao propósito de preservar informações importantes e reduzir a perda de
detalhes.
Neste contexto, a proposta deste trabalho consiste em explorar e aplicar uma
solução baseada em redes neurais convolucionais (CNN) para a classificação de
imagens, com ênfase na arquitetura U-Net, reconhecida por sua eficiência e
capacidade de segmentação de imagens. Utilizando imagens médicas, como as de
lesões de pele, como veículo para o estudo, o foco do projeto está em desenvolver e
aprimorar as técnicas de aprendizado profundo, de forma a otimizar o desempenho
na identificação e análise de características relevantes nas imagens.
13

2 FUNDAMENTAÇÃO TEÓRICA

Subconjunto de um campo mais geral de inteligência artificial, Deep Learning


refere-se a tipos de técnicas de aprendizado de máquina que se fundamenta na ideia
de aprender através de exemplos. O aprendizado é feito a partir de modelos da qual
o computador pode avaliar exemplos e um conjunto de instruções para alterar o
modelo quando cometer um erro, assim, ao longo do tempo, o modelo será capaz de
resolver o problema com extrema precisão (BUDUMA, 2017).

Figura 1 - Ramos da Inteligência Artificial.

Fonte: Chethan Kumar GN do site Medium (2018).

A seguir é demonstrado a diversidade de ramos que a inteligência artificial


contém, destacando Deep Learning, que será abordado nesse capítulo e formam a
base de conhecimento desse trabalho.
14

2.1 Deep Learning

As técnicas de aprendizado de máquina são baseadas em ‘camadas’ de


unidade de processamento simples que são conectadas em uma rede e essas
representações em camadas são, na maioria das vezes, aprendidas por meio de
redes neurais. (DEEP,2018).
A expressão redes neural se vem a partir a neurobiologia, porém, embora
alguns dos conceitos de aprendizado profundo tenham sido desenvolvidos tomando
por base a compreensão do cérebro humano, os modelos de aprendizado profundo
não são modelos do cérebro. Para o propósito referente a inteligência artificial, o
aprendizado profundo é uma estrutura matemática para aprender representações de
dados. (CHOLLET, FRANÇOIS, 2018).
Um aspecto impactante dessa técnica é o “Teorema da Aproximação Universal”,
que diz que uma rede neural com mais de 3 camadas (entrada, saída e ocultas) pode
aproximar todas as funções com alta precisão. (M. Leshno,VY Lin , A. Pinkus,S.
Schocken, 1993).

2.1.1 História

A história da deep learning pode ser rastreada no começo de 1943, quando


Walter Pitts e Warren McCulloch criaram um modelo de computador baseado em
redes neurais do cérebro humano. Eles usaram uma combinação de algoritmos e
matemática que chamavam de “lógica de limite” para imitar o processo de pensamento.
Desde então, o Deep Learning evoluiu de forma constante, com apenas duas
interrupções significativas em seu desenvolvimento. (WALTER, PITTS, 1943.).
As primeiras "redes neurais convolucionais” foram usadas por Kunihiko
Fukushima. Ele projetou redes neurais com múltiplas camadas. Em 1979, também
desenvolveu uma rede neural artificial, chamada Neocognitron, que usava um design
hierárquico de várias camadas. Esse design permitiu que o computador “aprendesse”
a reconhecer padrões visuais. As redes se assemelhavam a versões modernas, mas
foram treinadas com uma estratégia de reforço de ativação recorrente em múltiplas
camadas, que ganhou força ao longo do tempo. Além disso, o design de Fukushima
permitiu que recursos importantes fossem ajustados manualmente, aumentando o
“peso” de certas conexões. (KUNIHIKO, 1979).
15

Após esse feito de Yann LeCun, começou o segundo inferno da Inteligência


Artificial (1985-90) começou, o que também afetou pesquisas para redes neurais e
aprendizado profundo. Vários indivíduos excessivamente otimistas exageraram o
potencial “imediato” da Inteligência Artificial, quebrando expectativas e irritando
investidores, que alcançaram os status de pseudociência. Felizmente, algumas
pessoas continuaram trabalhando na inteligência artificial e deep learning, e alguns
avanços significativos foram feitos. (SEBASTIAN, 2019).
Em 1995, foi desenvolvido por Dana Cortes e Vladimir Vapnik uma máquina de
vetores de suporte (DANA; VLADIMIR, 1995) e em 1997 foi desenvolvido o LTMS
(Long Short-Term Memory) para redes neurais recorrentes por Sepp Hochreiter e
Juergen Schmidhuber. (SEPP; JUERGEN, 1997).
Em 2009, Fei-Fei Li, professor de inteligência artificial em Stanford, lançou o
ImageNet, onde ele montou um banco de dados gratuito de mais de 14 milhões de
imagens rotuladas. A Internet está, e estava, cheia de imagens sem rótulos. Imagens
rotuladas eram necessárias para “treinar” as redes neurais. (FEI-FEI, 2009).
Em 2011 a AlexNet, uma rede neural convolucional, foi criada onde a
arquitetura ganhou várias competições internacionais durante 2011 e 2012. Unidades
lineares retificadas foram usadas para aumentar a velocidade e o dropout.
(KRIZHEVSKY; SUTSKEVER; HINTON, 2012).

2.1.2 Reconhecimento de Imagem

A visão é considerada o sentido mais avançado que possuímos, e por essa


razão não é surpreendente que as imagens desempenhem um papel crucial na
percepção humana. No entanto, há uma diferença fundamental entre os humanos e
as máquinas. Enquanto os seres humanos estão limitados ao espectro
eletromagnético da banda visual, as máquinas de imagem têm a capacidade de
abranger quase todo o espectro EM, abrangendo desde a gama até as ondas de rádio.
Isso significa que elas podem trabalhar com imagens provenientes de fontes que os
seres humanos não estão acostumados a associar com imagens, tais como ultrassom,
microscopia eletrônica e imagens geradas por computador (GONZALEZ; WOODS,
2007).
A visão computacional tem utilizado um paradigma de correspondência e
verificação geométrica como padrão atual para o reconhecimento de objetos
16

específicos. No entanto, quando se trata da categorização de objetos genéricos,


frequentemente é necessário incorporar um modelo estatístico de aparência ou forma,
que é aprendido a partir de exemplos. Nesse sentido, aprender a reconhecer objetos
visuais envolve a coleta de imagens de treinamento de uma categoria específica e,
em seguida, extrair ou aprender um modelo capaz de fazer previsões sobre a
presença ou localização de objetos em novas imagens. Esses modelos são
geralmente construídos por meio de métodos de classificação supervisionada, com
uma ênfase na representação visual quando necessário (GRAUMAN; LEIBE, 2011).
Dessa forma, a combinação dessas abordagens permite um avanço significativo no
campo da visão computacional, permitindo que máquinas reconheçam e categorizem
objetos com maior precisão e eficiência.
Uma imagem pode ser descrita como uma função bidimensional, denotada por
f(x, y), em que x e y representam as coordenadas espaciais do plano. A amplitude da
função f no par de coordenadas (x, y) é conhecida como intensidade ou nível de cinza
da imagem naquele ponto. Quando tanto as coordenadas x e y quanto os valores de
intensidade de f são quantidades finitas e discretas, referimos a essa imagem como
uma imagem digital. Essa representação discreta permite que a imagem seja
processada e armazenada de maneira eficiente em sistemas computacionais.
Um paradigma útil na visão computacional é classificar os processos em três
níveis: baixo nível, médio nível e alto nível. No processo de baixo nível, as entradas e
saídas são imagens em si. Já o processo de nível médio, embora também tenha
imagens como entrada, tem como saída atributos extraídos dessas imagens. Por fim,
os processos de alto nível lidam com o reconhecimento de conjuntos de objetos, como
ocorre na análise de imagens, desempenhando uma função cognitiva associada à
visão em seu extremo (GONZALEZ; WOODS, 2007).
Essa classificação em diferentes níveis de processamento permite uma
abordagem mais estruturada e abrangente na visão computacional, em que cada nível
desempenha um papel específico na análise e compreensão das informações visuais.
A transição dos processos de baixo nível para os de alto nível representa um avanço
no grau de complexidade e abstração, permitindo que máquinas realizem tarefas cada
vez mais sofisticadas no reconhecimento e interpretação de imagens.
Os algoritmos de reconhecimento de imagens enfrentam desafios significativos
em termos de complexidade computacional e escalabilidade. O fato de que uma parte
considerável do cérebro dos primatas é dedicada ao processamento visual indica a
17

carga computacional exigida por essa tarefa complexa. Para lidar com representações
detalhadas de imagens em alta dimensão, pesquisar grandes bancos de dados de
imagens e ampliar o reconhecimento para milhares de categorias, é crucial o
desenvolvimento de algoritmos altamente eficientes (GRAUMAN; LEIBE, 2011).
Essa demanda por eficiência computacional reflete a necessidade de processar
e analisar um grande volume de dados visuais de maneira rápida e precisa. A evolução
contínua dos algoritmos de reconhecimento de imagens é essencial para enfrentar
esses desafios e possibilitar avanços significativos na capacidade de compreensão e
interpretação visual das máquinas.

2.1.3 Classificação de Imagem

A classificação de imagens é a tarefa de analisar uma imagem de entrada e


atribuir a ela uma classe específica (como gato, cachorro, etc.) ou uma probabilidade
para diferentes classes que melhor descrevem a imagem. O objetivo é capacitar o
computador a distinguir entre várias imagens e identificar as características distintas
que tornam um cachorro um cachorro ou um gato um gato. Para realizar essa
classificação, o computador utiliza recursos de baixo nível, como arestas e curvas, e,
em seguida, constrói conceitos mais abstratos através de camadas convolucionais em
um processo de aprendizado (DESH PANDE, 2016).
Esse processo de classificação de imagens envolve uma abordagem em
camadas, em que o computador aprende gradualmente a identificar padrões visuais
e a extrair características relevantes para a categorização precisa. Ao combinar
recursos de baixo nível em camadas convolucionais, o computador pode formar
representações cada vez mais abstratas, permitindo uma classificação mais precisa e
confiável das imagens. Essa abordagem é fundamental para avançar na capacidade
de reconhecimento de imagens e em aplicações práticas, como sistemas de visão
computacional e análise de imagens em larga escala.
Nessas duas imagens, pode-se observar como nós vemos uma imagem,
representada pela figura da esquerda e como o computador vê a mesma ilustração,
representada pela figura da direita.
18

Figura 2 - Representação do que vemos e o que o computador vê.

Fonte: DESHPANDE, (2016).

2.1.4 Detecção de Objetos

A detecção de objetos é caracterizada pela capacidade de identificar a


localização e o tipo de objetos presentes em uma imagem. No entanto, as redes
neurais convolucionais enfrentam um desafio relacionado à escala, uma vez que cada
kernel possui um tamanho específico e os pesos diferem entre os diferentes feature
maps.
Isso significa que esses kernels aprendem apenas relações em um
determinado tamanho. Portanto, se desejarmos que a rede neural aprenda a
reconhecer cavalos em várias escalas e tamanhos, precisamos fornece imagens de
cavalos em diferentes escalas, tanto grandes quanto pequenas. Dessa forma,
esperamos que a rede tenha recebido informações suficientes sobre cavalos em
tamanhos variados, para que ela possa reconhecê-los adequadamente.
Essa abordagem fundamentalmente resolve o problema de escala ao criar
kernels de tamanhos diversos para analisar as imagens. Isso nos permite capturar os
objetos de interesse em diferentes escalas e tamanhos, possibilitando que a rede
neural detecte e reconheça objetos independentemente de suas dimensões. Essa é a
ideia-chave para lidar com o desafio da escala na detecção de objetos (DIDÁTICA
TECH ©, 2022).
Nas ilustrações dos cavalos, podemos compreender a detecção de imagem em
diferentes escalas e tamanhos.
19

Figura 3 - Detecção de imagem em diferentes escalas e tamanhos, reconhecendo um cavalo


grande

Fonte: DIDÁTICA TECH ©, (2022).

Figura 4 - Detecção de imagem em diferentes escalas e tamanhos, reconhecendo um cavalo


pequeno

Fonte: (DIDÁTICA TECH ©, 2022).

2.1.5 Segmentação Semântica

A segmentação semântica é uma técnica que busca uma compreensão mais


precisa de uma cena, atribuindo um rótulo de categoria de objeto a cada pixel dentro
de uma imagem. Essa tarefa de compreensão da cena permite que os computadores
extraiam informações de cenários do mundo real e as utilizem para realizar diversas
tarefas.
Como por exemplo na imagem a seguir, que ilustra a detecção de objetos de
uma foto em família.

Figura 5 - Tarefa de detecção de objetos - mais à esquerda -, segmentação semântica –


centro -, segmentação semântica diferenciando instâncias - mais a direita

Fonte: (ARNAB, 2018).


20

Tradicionalmente, a segmentação semântica tem sido abordada por meio de


modelos probabilísticos chamados Campos Aleatórios Condicionais (CRFs), que
modelam explicitamente as correlações entre os pixels que estão sendo previstos. No
entanto, nos últimos anos, as Deep Neural Networks (DNNs), também conhecidas
como Redes Neurais Profundas, têm se mostrado altamente eficazes em uma ampla
gama de problemas relacionados à visão computacional e aprendizado de máquina.
Isso ocorre porque as DNNs têm a capacidade de aprender automaticamente
representações expressivas de recursos a partir de grandes conjuntos de dados.
Ao usar DNNs na segmentação semântica, é possível obter resultados mais
precisos e eficientes, aproveitando as habilidades das redes neurais em aprender
padrões complexos e extrair características significativas das imagens. Essa
abordagem tem impulsionado avanços significativos na capacidade de compreensão
de cenas e no uso prático de técnicas de segmentação semântica em uma variedade
de aplicações (ARNAB, 2018).

2.2 Redes Neurais Convolucionais

No campo do reconhecimento de imagens, uma técnica tem se destacado - as


Redes Neurais Convolucionais, ou CNNs. As CNNs são uma ferramenta chave no
universo do Deep Learning. Elas são muito úteis quando precisamos identificar,
classificar ou detectar coisas em imagens e vídeos. A ideia central da CNN é usar uma
série de filtros que funcionam de maneira parecida com a visão humana, ajudando a
entender melhor as imagens e vídeos (VARGAS, CARVALHO, VASCONCELOS,
2016).
Interessantes estudos foram feitos por Hubel e Wiesel em 1968. Eles
trabalharam com macacos e gatos para entender como funciona o córtex visual, a
parte do nosso cérebro responsável por processar o que vemos. Eles descobriram
que há uma espécie de hierarquia de células sensíveis que respondem a diferentes
tipos de estímulos visuais (LECUN; KAVUKCUOGLU; FARABET, 2010).
Essa ideia de hierarquia é crucial para entender como a CNN funciona. A partir
do estudo de Hubel, conclui-se que é preciso uma sequência de etapas de
aprendizado para se chegar a um bom resultado. Cada etapa nessa sequência é como
um nível numa escada de hierarquia. E foi para representar essa organização
hierárquica que a arquitetura da CNN foi criada (AREL; ROSE; KARNOWSKI, 2010).
21

De acordo com Lili Mou e Zhi Jin (2018):


Como as unidades semânticas básicas – por exemplo, um carro, um pneu ou
mesmo uma faixa no pneu – são manifestadas com um conjunto de pixels
vizinhos, as pessoas projetam uma janela deslizante para capturar
características locais. Esses recursos locais são deslizados sobre diferentes
partes de uma imagem com pesos sendo fixos, de modo que eles tenham a
propriedade de invariância de tradução. Essa arquitetura é conhecida como
rede neural convolucional (CNN) (MOU, Lili; JIN, Zhi, 2018).

As Redes Neurais Convolucionais, foram originalmente concebidas para


trabalhar com imagens. Em termos gerais, uma CNN usa uma "janela" para identificar
e extrair características específicas de uma imagem. Posteriormente, essas
características são agrupadas, o que permite uma redução significativa do número de
parâmetros necessários e facilita a extração de recursos de diferentes áreas de uma
imagem (MOU, Lili; JIN, Zhi, 2018).
Um dos benefícios desse sistema é a sua resiliência a problemas comuns em
redes neurais, como a explosão ou o desaparecimento do gradiente, já que o caminho
de propagação depende mais da estrutura da rede do que do tamanho da entrada. No
entanto, vale ressaltar que as características extraídas são locais. Isso significa que,
se duas características não estiverem na mesma "janela", elas não interagirão (MOU,
Lili; JIN, Zhi, 2018).

2.2.1 Tipos de Camadas

Diante desses aspectos fundamentais das Redes Neurais Convolucionais, é


essencial aprofundar o entendimento sobre como estas operam internamente. A
eficácia e a flexibilidade das CNNs são possibilitadas pela combinação de diferentes
tipos de camadas, cada uma desempenhando um papel específico no processo de
aprendizado e reconhecimento de padrões. Nos tópicos abaixo, serão apresentados
os principais tipos de camadas em uma CNN e como elas contribuem para a
performance geral desta poderosa arquitetura de aprendizado profundo.
A imagem abaixo oferece uma visão geral simplificada da arquitetura de uma
Rede Neural Convolucional:
22

Figura 6 - Representação de arquitetura simplificada CNN.

Fonte: O’SHEA, Keiron; NASH, Ryan, (2015).

A arquitetura ilustrada acima é dividida em quatro componentes principais.


Primeiro, a camada de entrada, que mantém os valores dos pixels originais da
imagem. Seguindo para a camada convolucional, esta determina a saída dos
neurônios baseada nas regiões locais da entrada. Em seguida, temos a camada de
pooling que simplifica as informações de ativação, realizando um downsampling na
entrada fornecida. Por fim, as camadas totalmente conectadas que interpretam as
ativações e buscam projetar pontuações de classes, que são posteriormente utilizadas
na classificação (O’Shea, Keiron; Nash, Ryan, 2015).
Este arranjo proporciona uma estrutura eficiente e robusta para o
processamento de imagens, que será detalhada a seguir, a partir da descrição de cada
tipo de camada.
• Camada Convolucional
A camada convolucional representa um elemento essencial na estrutura da
Rede Neural Convolucional. Sua principal função é a extração de características da
imagem de entrada. Essa extração é conduzida por meio do processo de convolução,
combinado com uma função de ativação. Esta camada é responsável por detectar
padrões locais na imagem, como bordas, texturas e outras características relevantes,
que são fundamentais para a classificação e identificação de objetos na imagem.
De acordo com Togashi et al. (2018) convolução é:
A convolução é um tipo especializado de operação linear usado para extração
de recursos, onde uma pequena matriz de números, chamada kernel, é
aplicada na entrada, que é uma matriz de números, chamada tensor. Um
produto elemento a elemento entre cada elemento do kernel e o tensor de
entrada é calculado em cada local do tensor e somado para obter o valor de
saída na posição correspondente do tensor de saída, chamado de mapa de
recursos. Este procedimento é repetido aplicando vários kernels para formar
um número arbitrário de mapas de características, que representam
23

diferentes características dos tensores de entrada; kernels diferentes podem,


portanto, ser considerados como extratores de recursos diferentes. Dois hiper
parâmetros chave que definem a operação de convolução são o tamanho e
o número de kernels. O primeiro é tipicamente 3 × 3, mas às vezes 5 × 5 ou
7 × 7. O último é arbitrário e determina a profundidade dos mapas de recursos
de saída. (TOGASHI et al., 2018)

Na estrutura da Rede Neural Convolucional, os parâmetros das camadas são


definidos por kernels, que se distribuem por toda a profundidade de entrada. Quando
os dados chegam a uma camada convolucional, ela utiliza cada filtro para criar um
mapa de ativação bidimensional, com cálculos realizados para cada valor do kernel.
Os padrões dessa camada são formados por um conjunto de filtros ou Kernels,
que se movem ao longo dos eixos x e y da matriz de entrada através de passos ou
strides. Os strides definem quantos passos o filtro deve avançar a cada operação de
convolução. Cada filtro processa a entrada e produz um mapa de características, que
é a matriz de saída da camada de convolução, correspondente a esse filtro (RAWAT;
WANG, 2017).
O processo de aprendizado dos kernels ocorre quando eles são ativados ao
identificar um recurso específico em uma posição espacial de entrada, conhecido
como ativação. Este processo é representado na figura abaixo:

Figura 7 - Representação de uma camada convolucional

Fonte: O’SHEA, Keiron; NASH, Ryan, (2015)

• Funções de Ativação
As funções de ativação desempenham um papel fundamental na arquitetura
das redes neurais convolucionais. Na essência, elas são responsáveis por transformar
a soma ponderada das entradas de um neurônio em um formato adequado para saída.
Através da introdução de não-linearidades, as funções de ativação permitem que as
redes neurais aprendam padrões complexos e características dos dados. Entre as
funções de ativação mais comuns estão a Sigmoid e a Rectified Linear Unit (ReLU),
24

cada uma com suas vantagens e desvantagens particulares. O entendimento dessas


funções e suas implicações é fundamental para o desenho eficaz de redes neurais
profundas. Nas seções seguintes, vamos analisar mais detalhadamente essas duas
funções de ativação, discutindo suas características e aplicabilidades.
• Camada de Ativação Sigmoid
A função de ativação Sigmoid, ou função logística, foi amplamente utilizada em
redes neurais tradicionais. Esta função transforma uma entrada em um valor no
intervalo entre 0,0 e 1,0, com entradas maiores que 1,0 convertidas para 1,0, e valores
abaixo de 0,0 ajustados para 0,0. A função apresenta um formato de "S" ao considerar
todas as entradas possíveis, variando de 0 a 1. Até o início da década de 1990, era o
tipo de ativação padrão em redes neurais (BROWNLEE, 2019).
No entanto, a função Sigmoid tem uma limitação: ela satura, ou seja, valores
muito grandes ou pequenos convergem para 1,0 ou 0, respectivamente. Além disso,
a função é realmente sensível apenas às mudanças em torno do seu ponto médio,
como 0,5 para a Sigmoid. Este fenômeno ocorre independente da utilidade das
informações contidas na entrada fornecida ao nó de ativação. Assim que a função
satura, torna-se desafiador para o algoritmo de aprendizado continuar ajustando os
pesos e melhorar o desempenho do modelo (COURVILLE, 2016).
• Camada de Ativação ReLU
A Unidade Linear Retificada (ReLU) é um marco significativo na evolução do
aprendizado profundo. Apesar de sua simplicidade, a ReLU supera as funções de
ativação anteriores como Sigmoid ou tanh. É uma função linear por partes que produz
a entrada diretamente se for positiva, ou zero caso contrário. Tornou-se a função de
ativação padrão para muitas redes neurais, devido à facilidade de treinamento e ao
desempenho superior. Desde a sua adoção, a ReLU é utilizada na maioria das redes
neurais convolucionais ou de aprendizado profundo (BROWNLEE, 2019).
As redes neurais são treinadas usando o algoritmo de descida do gradiente,
que inclui a etapa de retro propagação. Esta etapa usa a regra da cadeia para calcular
a alteração nos pesos, com o objetivo de minimizar a perda após cada época. Nesse
processo, as derivadas desempenham um papel crucial na atualização dos pesos.
Quando usamos funções de ativação como a Sigmoid, cuja derivada tem valores
significativos apenas no intervalo de -2 a 2, o gradiente tende a diminuir conforme
aumenta o número de camadas.
25

Essa diminuição reduz o valor do gradiente para as camadas iniciais, o que


prejudica a aprendizagem. Em outras palavras, os gradientes tendem a desaparecer
à medida que a profundidade da rede aumenta, um fenômeno conhecido como o
problema do desaparecimento do gradiente. No entanto, a ReLU não enfrenta esse
problema, já que sua inclinação não satura quando a entrada é grande. Portanto, os
modelos que usam a função de ativação ReLU tendem a convergir mais rapidamente
(GREAT LEARNING TEAM, 2022).
A camada ReLU executa a função f(x) = max (0, x) a todos os valores do volume
de entrada, como mostra a figura 8. Em outras palavras, essa camada basicamente
troca todos os valores negativos de ativação na convolução, em 0 (figura 9). Essa
camada aumenta as propriedades não-lineares do modelo sem afetar as ativações da
camada de convolução. Como mostrado nas imagens a seguir.

Figura 8 - Função ReLU

Fonte: GÖRNER, (2018)


26

Figura 9 - Camada de ReLU em um mapa de ativação

Fonte: ANIEMEKA, (2017).

• Camada de Agrupamento
A camada de agrupamento, ou "pooling", tem a finalidade de reduzir a
dimensão espacial do volume de entrada. Esse processo diminui o custo
computacional da rede ao selecionar valores dentro de uma região específica do mapa
de atributos e substituí-los por uma métrica nessa região.
Uma operação comum usada para realizar essa substituição é o "max pooling".
Essa técnica tem como objetivo acelerar os cálculos necessários para as camadas
subsequentes ao eliminar valores mais baixos e, assim, reduzir a dimensão da
representação dos dados. De forma resumida, o max pooling extrai segmentos dos
mapas de recursos de entrada, gera o valor máximo em cada segmento e descarta
todos os outros valores (ARAÚJO et al., 2017).
Um exemplo de max pooling pode ser visto quando se ativa o valor máximo de
uma unidade de pooling em uma região de 2 × 2, o que resulta em redimensionar o
mapa de características pela metade. A operação de pooling facilita a tarefa de
classificação ao focar apenas nas ativações mais importantes. Entretanto, a
informação espacial que está armazenada no campo receptivo é perdida, o que pode
resultar em uma predição imprecisa do objeto a ser segmentado, como ilustrado na
imagem abaixo (NOH; HONG; HAN, 2015). A figura a seguir mostra uma
representação do método max pooling.
27

Figura 10 - Representação do método max pooling, em uma imagem 4x4 utilizando um filtro 2x2

Fonte: Korean J Radiol, (2017).

Togashi e colaboradores (2018) afirmam que o filtro 2x2 com um passo de 2 é


comumente utilizado na prática. Essa configuração tem a vantagem de reduzir a
dimensão do plano por um fator de 2, enquanto mantém inalterada a dimensão de
profundidade dos mapas de recursos.
• Camada Totalmente Conectada
A camada totalmente conectada, também conhecida como camada densa,
desempenha um papel essencial na classificação das imagens em redes neurais
convolucionais. O termo "totalmente conectada" decorre do fato de que todos os
neurônios na camada anterior estão ligados à próxima camada. Esta camada tem a
importante tarefa de analisar e interpretar as características extraídas pelas camadas
convolucionais e de pooling anteriores, traçando um percurso de decisão com base
nas respostas desses filtros (KARN, 2016).
Para realizar essa classificação, a camada totalmente conectada adiciona uma
camada de saída contendo um número de neurônios correspondente ao número de
classes existentes no experimento em questão. Nesta etapa, uma função de ativação
é aplicada para facilitar a classificação. Frequentemente, a função de ativação
Softmax é utilizada por sua capacidade de fornecer uma distribuição probabilística da
imagem de entrada em relação a cada uma das classes treinadas na rede (ARAÚJO
28

et al., 2017).
A função Softmax, representada abaixo, é capaz de transformar um vetor de
números reais em um vetor de valores probabilísticos, facilitando a decisão final de
classificação da rede.

Figura 11 - Representação da função Softmax.

Fonte: SEWAK, KARIM e PUJARI (2018).

A seguir, um exemplo de arquitetura incluindo as três camadas básicas é


apresentado para ilustrar a disposição e o funcionamento de cada uma delas.

Figura 12 - Exemplo de arquitetura, baseada na LeNet, utilizando as camadas básicas de convolução,


pooling e totalmente conectadas

Fonte: ARAÚJO et al., (2017).

2.3 U-NET
A arquitetura U-Net é uma poderosa abordagem para a segmentação de
imagens biomédicas, sendo notável por sua eficiência, precisão e capacidade de lidar
com pequenos conjuntos de dados. Isso a torna amplamente aplicável em várias
tarefas de segmentação de imagem.
A U-Net propõe uma abordagem que evita a perda de informações, permitindo
29

a troca de informações entre as camadas de amostragem ascendente do


decodificador e as camadas de amostragem descendente do codificador. Isso resulta
em detalhes mais finos com melhores resultados de segmentação. (MATCHA, 2021).
Redes convolucionais são comumente usadas em tarefas de classificação,
onde a saída é um rótulo de classe para toda a imagem. No entanto, em tarefas visuais,
como processamento de imagens biomédicas, é necessário atribuir uma etiqueta de
classe a cada pixel, incluindo informações de localização. Além disso, em tarefas
biomédicas, é difícil obter milhares de imagens de treinamento. Para lidar com isso,
Ciresan propôs treinar uma rede usando uma configuração de janela deslizante, onde
o rótulo de classe de cada pixel é previsto com base em uma região local ao redor
dele. (Ciresan, 2012)

Figura 13 - Arquitetura U-net (exemplo para 32x32 pixels na resolução mais baixa).

Cada caixa azul representa um mapa de recursos multicanal, com o número de


canais indicado acima da caixa. O tamanho x-y é fornecido na borda inferior esquerda
da caixa. Caixas brancas são mapas de recursos copiados. As setas indicam as
diferentes operações. (Ronneberger, 2015).
A estratégia proposta por Ciresan (2012) para segmentação de imagens
apresenta duas limitações: a necessidade de executar a rede separadamente para
cada patch, resultando em lentidão, e um compromisso entre a precisão da
localização e o uso do contexto. Abordagens mais recentes (Seyedhosseini; Sajjadi;
Tasdizen, 2014) propuseram uma saída classificadora que leva em conta
características de múltiplas camadas, permitindo uma boa localização e uso do
contexto simultaneamente. A rede U-Net ganhou o desafio de segmentação EM na
30

ISBI 2012 com uma margem significativa.


A arquitetura da rede U-Net (Ronneberger, 2015) consiste em um caminho
contrativo e um caminho expansivo. O caminho contrativo segue a estrutura
convolucional típica, com repetição de convoluções 3x3, ativação ReLU e max pooling
2x2 para downsampling. O caminho expansivo realiza upsampling seguido por
convoluções 2x2, concatenação com o mapa de características do caminho contrativo
e convoluções 3x3. O número de canais de recursos é dobrado a cada passo de
redução. A camada final utiliza uma convolução 1x1 para mapear os vetores de
recursos para as classes desejadas. A rede U-Net possui um total de 23 camadas
convolucionais.
31

3. PROJETO

Utilizando Deep Learning, criamos uma rede neural capaz de segmentar lesão
de pele. Decidimos fazer sobre lesão de pele, pois no Brasil, país tropical com alta
incidência solar durante todo o ano, é ainda mais frequente que tenha muitos casos
sobre câncer de pele. Histórico familiar, características da pele (pele clara é mais
propensa a desenvolver o câncer) e excesso de exposição solar são fatores de risco
para a doença.
Além disso, foi um tipo de imagem médica que possui bancos de dados mais
acessíveis e com a quantidade de dados mais vasta para pesquisas e experimentos.
Nosso objetivo é, usando essa técnica, criar uma inteligência que segmente as lesões
com a melhor previsão possível.
A seguir será demonstrado os principais detalhes da implementação, criação
da rede neural para a realização da segmentação de imagem, também iremos
apresentar as bibliotecas usadas, métricas, banco de imagens utilizadas, o preparo
da rede neural e o que foi utilizado, também será explicado um pouco mais afundo
sobre a U-net e como foi implementada no projeto.

3.1 Detalhes Da Implementação

Foi implementada a arquitetura U-net, utilizando as bibliotecas TensorFlow de


código aberto, tendo como objetivo principal o treinamento e inferência de redes
neurais profundas, além de também ser utilizada para outras tarefas, e Keras sendo
também uma biblioteca de código aberto, em suma é uma API de redes neurais escrita
em Python atuando como uma interface para o TensorFlow.
Foi utilizada a instalação do TensorFlow especifica para GPUs, levando em
consideração que desta forma a eficácia e agilidade dos treinamentos seriam mais
otimizadas. As configurações do hardware utilizado para o treinamento foram uma
Nvidia GeForce 1660 Super, AMD Ryzen 7 3700x 8-Core Processor 3.59 GHz, 16GB
de memória RAM DDR4 com 3000mhz.

3.2 Banco De Imagens

Para o treinamento da U-net, foi utilizado um conjunto de dados de imagens


32

medicinais da ISIC Challenge. A International Skin Imaging Collaborayion (ISIC) é uma


organização internacional que tem como objetivo melhorar o diagnóstico de melanoma.
A plataforma contém a maior coleção disponíveis publicamente de imagens
dermatoscópicas de qualidade, de lesões de pele. As imagens dermatoscópicas foram
coletadas dos principais centros clínicos internacionais e adquiridas de uma variedade
de dispositivos dentro de cada centro.
Todas as imagens recebidas no Arquivo ISIC são rastreadas quanto à
privacidade e garantia de qualidade. A maioria das imagens tem metadados
clínicos associados, que foram examinados por reconhecidos especialistas
em melanoma. Um subconjunto das imagens passou por anotação e
marcação por reconhecidos especialistas em câncer de pele. Essas
marcações incluem características dermatoscópicas (ou seja, elementos
morfológicos globais e focais na imagem conhecidos por discriminar entre
tipos de lesões de pele). (ISIC, 2016)

3.3 Preparando A Rede Neural

O pré-processamento dos dados e a escolha de parâmetros da rede são as


primeiras etapas a serem realizadas para o desenvolvimento da rede CNN. Um
conjunto de atividades que envolvem preparação, organização e estruturação dos
dados foram realizados com o propósito de garantir a melhor performance do
treinamento e consequentemente das previsões e análises.

3.3.1 Hiper parâmetros

Na primeira etapa do projeto prático de reconhecimento de padrões em


imagens de câncer de pele, estabelecemos uma metodologia para o ajuste dos hiper
parâmetros do modelo, os quais são determinantes para controlar o processo de
treinamento e possuem um impacto expressivo na performance do modelo.
Iniciamos o projeto com testes utilizando uma quantidade reduzida de dados
de treinamento. Essa abordagem tinha o objetivo de acelerar o processo de
experimentação e nos permitir comparar diferentes conjuntos de hiper parâmetros de
maneira mais eficiente. Ao mesmo tempo, aumentamos a frequência do
monitoramento da precisão da validação. Este procedimento forneceu feedbacks mais
frequentes sobre o progresso da rede, contribuindo significativamente para o
aperfeiçoamento do processo de treinamento.
Ao projetar a estrutura de treinamento, definimos inicialmente o número de
épocas como 5 e o tamanho do batch como 4. O número de épocas é quantas vezes
33

o modelo vê todo o conjunto de treinamento. Já o tamanho do batch é o número de


exemplos de treinamento usados de uma vez para ajustar os pesos do modelo.
Após essa fase, incorporamos a técnica de EarlyStopping em nossa estratégia
de treinamento. EarlyStopping é uma forma de regularização usada para evitar
overfitting quando o modelo não melhora mais com o aumento do número de épocas.
Em nosso caso, esta técnica monitorou a métrica 'val_loss', que representa a perda
no conjunto de validação, durante o treinamento.
Os parâmetros definidos para a função EarlyStopping foram os seguintes:
• 'monitor': Define a métrica de desempenho a ser observada. Optamos por
'val_loss'. O treinamento é interrompido quando está métrica parar de melhorar.
• 'patience': Este parâmetro determina o número de épocas sem melhoria
após as quais o treinamento será interrompido. Definimos este valor como 2, o que
significa que após duas épocas sem melhorias no 'val_loss', o treinamento será
interrompido.
• 'restore_best_weights': Quando definido como 'True', esta opção faz com
que os pesos do modelo retornem ao estado em que estavam quando obtiveram a
melhor performance. Neste caso, definimos como 'True' para garantir que, mesmo se
o modelo começar a ter overfitting depois de alcançar a melhor performance, ele
retornará ao melhor estado.
Através dessa abordagem, conseguimos estabelecer um equilíbrio eficaz entre
a captura das complexidades dos dados e o controle do overfitting, permitindo que o
modelo generalize bem para novos dados e mantenha uma alta performance.

3.3.2 Coletas de Dados

Os dados que foram utilizados para a construção da rede neural são da ISIC
Archive 2018. Das 2.594 imagens disponibilizadas, foram utilizadas 60% para
treinamento (1.556 imagens), 20% para testes (518 imagens) e 20% para validação
(518 imagens). Além da coleta das imagens, foram coletadas suas respectivas
máscaras (Ground Truth).
Vale destacar que posteriormente será realizado o Aumento de Dados, a fim de
ter mais variedade e quantidade de dados para o treinamento.
O site ISIC Challenge foi utilizado para obter o banco de dados de imagens
para testar e treinar a IA criada. Como mostra a imagem abaixo.
34

Figura 14 - Banco de dados ISIC 2018.

Fonte: ISIC, (2016).

3.3.3 Normalização

A normalização é um passo fundamental na fase de pré-processamento para


tarefas de aprendizado de máquina, como a segmentação de imagens com U-Net.
Esse procedimento é de extrema importância quando estamos trabalhando com redes
neurais. Basicamente, o que a normalização faz é ajustar os valores dos pixels das
imagens a um intervalo definido, normalmente [0,1] ou [-1,1]. Isso permite que a rede
processe todas as entradas de forma uniforme, o que, por sua vez, melhora a
eficiência do treinamento e evita possíveis distorções.
Se não aplicarmos a normalização, corremos o risco de alguns valores de
entrada ultrapassarem os limites das funções de ativação dos neurônios. Isso pode
causar a saturação dessas funções, o que, em termos simples, significa que qualquer
variação nesses valores de entrada não terá quase nenhum efeito nas saídas - ou
seja, os neurônios deixarão de "aprender" com esses dados. Ao normalizar,
garantimos que todos os dados são adequadamente processados pela rede.
Vale ressaltar que o processo de normalização não implica em uma alteração
permanente das imagens originais. O que ocorre é um ajuste temporário dos valores
de pixel para um intervalo específico (como [0,1] ou [-1,1]), adequando-os para a
entrada na rede neural. Assim, as imagens originais são preservadas em sua forma
inicial.
A fórmula para a normalização é a seguinte:
35

x' = (x - x_min) / (x_max - x_min)

Nessa fórmula, x é o valor que queremos normalizar, e x_min e x_max são,


respectivamente, os valores mínimo e máximo presentes no conjunto de dados. No
nosso caso, estamos lidando com imagens, cujos valores de pixel variam de 0 a 255.
Assim, dividindo todos os valores de pixel por 255, conseguimos trazê-los para um
intervalo de 0 a 1.
Para facilitar a compreensão desse conceito, apresentamos alguns exemplos
utilizando o conjunto de dados do ISIC Challenge 2018. As imagens representam a
mesma parte da pele, mas a imagem normalizada resulta na conversão dos valores
de pixel para o intervalo [0,1].
A imagem abaixo (Figura 1) é um exemplo de imagem não normalizada.
Fizemos um zoom para destacar a variação nos valores de pixel.

Figura 15 - Imagem sem normalização do ISIC Challenge 2018 - ISIC_0000000

A próxima imagem (Figura 2) é a mesma, só que após passar pelo processo de


normalização. Você pode notar a diferença nos valores de pixel.
36

Figura 16 - Imagem com normalização do ISIC Challenge 2018 - ISIC_0000000

Portanto, a normalização é uma etapa essencial para o sucesso do treinamento


da rede, pois garante que todos os dados sejam processados de maneira eficiente e
uniforme.

3.3.4 Aumento de Dados

Aumento de dados, ou Data Augmentation é uma técnica utilizada nesse projeto,


a fim de gerar novos exemplares de dados de treinamento, com a finalidade de
aumentar a generalidade do modelo. A baixa quantidade de amostras de entradas
coletadas nos acervos públicos (devido ao caráter confidencial das informações),
gerou a necessidade de realizar o aumento de dados para obter resultados
satisfatórios.
Nesse modelo foram aplicadas 4 funções de transformação de imagens, que
são mostradas a seguir.
Inversão Horizontal – Obtenção da imagem invertida horizontalmente ao longo
do eixo y. Tecnicamente, a função pega linhas e colunas da matriz de pixels e as
inverte horizontalmente.
37

Figura 17 - Aumento de dados (Inversão Horizontal) realizado com dado retirado do ISIC Archive
2018

Fonte: Autores (2023).

Inversão Vertical – Obtenção da imagem invertida verticalmente ao longo do


eixo x. Tecnicamente, a função pega linhas e colunas da matriz de pixels e as inverte
verticalmente.

Figura 18 - Aumento de dados (Inversão Vertical) realizado com dado retirado do ISIC Archive 2018.

Fonte: Autores (2023).

Rotação – Obtenção da imagem rotacionada no sentido anti-horário no ângulo de


45°.
38

Figura 19 - Aumento de dados (Rotação) realizado com dado retirado do ISIC Archive 2018.

Fonte: Autores (2023).

Ruído Gaussiano - Obtenção da imagem com ruído, com o limite de variação


de ruído de 4000.0, média de ruído (define o nível de brolho da imagem) de 10.

Figura 20 - Aumento de dados (Ruído Gaussiano) realizado com dado retirado do ISIC Archive 2018

Fonte: Autores (2023).

Na prática, de 1.556 imagens de treinamento, foi obtido um aumento de 7.780


após a normalização acima, sendo o resultado de 5 épocas (1.556 x 5 = 7.780).

3.4 Arquitetura
A arquitetura proposta utiliza o modelo Unet. O modelo foi selecionado por ser
uma rede convolucional que foi desenvolvida para segmentação de imagens
biomédicas, e arquitetado para trabalhar com menos imagens de treinamento e gerar
segmentações mais precisas.
39

A proposta é uma rede com 66 camadas excluindo a camada de ativação final.


A rede é composta por dois caminhos, sendo eles o caminho de contração/redução e
o caminho expansivo, respectivamente.
• Caminho de Redução
Cada bloco de redução da amostragem (sequência de codificador que dobra o
número de canais de recursos, enquanto cortar pela metade as dimensões espaciais)
tem várias camadas convolucionais, seguido por Batch Normalization e ativação ReLU.
A cada etapa de redução, uma camada de maxpooling é aplicada.
Segue abaixo a sequência de camadas resultantes em 1 bloco de redução.

Tabela 1 - Sequência de camadas resultantes em 1 bloco de redução.

N° Camada Filtro Ativação Conectado a


1 conv2d (Conv2D) (3,3) ['input_1[0][0]']
2 batch_normalization ['conv2d[0][0]']
(BatchNormalization)
3 activation (Activation) ReLU ['batch_normalization[0][0
]']
4 conv2d_1 (Conv2D) (3,3) ['activation[0][0]']
5 batch_normalization_1 ['conv2d_1[0][0]']
(BatchNormalization)
6 activation_1 (Activation) ReLU ['batch_normalization_1[0
][0]']
7 max_pooling2d(MaxPooli (2,2) ['activation_1[0][0]']
ng2D
Fonte: Autores (2023).

O exemplo anterior se trata da primeira etapa de redução aplicada ao modelo.


Observamos que 1 etapa de redução resulta em 7 camadas na rede. A rede possui o
total de 4 etapas codificadoras, resultando em 28 camadas na etapa de redução.
• Caminho de Ponte.
No centro da rede existe um bloco de convolução (composta por camada de
convolução, pooling e ativação ReLu). A ponte é composta por 6 camadas.
• Caminho Expansivo
Cada bloco de expansão da amostragem (sequência de decodificador que
reduz pela metade o número de canais de recurso, tem várias camadas
convolucionais transpostas, seguido por camada de concatenação e convolucionais.
Segue abaixo a sequência de camadas resultantes em 1 bloco de expansão.
40

Tabela 2 - Sequência de camadas resultantes em 1 bloco de expansão.

N° Camada Filtro Ativação Conectado a


1 conv2d_transpose (2,2) ['activation_9[0][0]']
(Conv2DTranspose)
2 concatenate ['conv2d_transpose[0][0]',
(Concatenate) 'activation_7[0][0]']
3 conv2d_10 (Conv2D) (3,3) ['concatenate[0][0]']
4 batch_normalization_10 ['conv2d_10[0][0]']
(BatchNormalization)
5 activation_10(Activation) Relu ['batch_normalization_10[0][0]']
6 conv2d_11 (Conv2D) (3,3) ['activation_10[0][0]']

7 batch_normalization_11 ['conv2d_11[0][0]']
(BatchNormalization)
8 activation_11(Activation) Relu ['batch_normalization_11[0][0]']

Fonte: Autores (2023).

O exemplo anterior se trata da primeira etapa de expansão aplicada ao modelo.


Observamos que 1 etapa de expansão resulta em 8 camadas na rede. A rede possui
o total de 4 etapas decodificadoras, resultando em 32 camadas na etapa de expansão.
Os novos tipos de camadas encontrados na etapa redução são representadas
abaixo.
• Camada de Convolução Transposta 2d
Utilizamos essa camada para trocar as passagens para frente e para trás de
uma convolução. O objetivo de uma Convolução Transposta é fazer o oposto de uma
Convolução regular, ou seja, aumentar a amostragem do mapa de recursos de entrada
para um mapa de recursos de saída de tamanho maior desejado. (ESTEVES, 2018)
Vamos considerar um caso básico em que os canais de entrada e saída são 1,
com 0 preenchimento e 1. A figura abaixo ilustra como a convolução transposta co-
mumkernel 2×2 é calculada na matriz de entrada 2×2.

Figura 21 - Camada de convolução transposta com um kernel 2×2.

• Camada de Concatenação
Camada que recebe como entrada uma lista de tensores, e retorna um único
41

tensor que é a concatenação de todas as entradas. Nessa camada há a concatenação


com o mapa de recursos correspondentes do caminho de contração.
• Camada de Saída (output layer)
A camada de saída da rede, utilizando filtro (1,1).

3.4.1 Arquitetura de Rede Detalhada


Na tabela a seguir é exibido a arquitetura de rede Unet detalhada. As camadas
destacadas dos índices de 2 a 29 da tabela representam o caminho de redução, já as
camadas do índice 30 a 35 da tabela representam as camadas da ponte e o as
camadas do índice 36 a 67 da tabela representam o caminho expansivo. No início e
final da rede a entrada de dados e saída de dados são exibidos, respectivamente.

Tabela 3 - Arquitetura de rede Unet detalhada.

N° Camada Formato de Sa- Parametro. Conectado a


ída
1 input_1 (InputLayer) [(None, 256, 0 []
256, 3 0)]
2 conv2d (Conv2D) (None, 256, 1792 ['input_1[0][0]']
256, 64)
3 batch_normalization (None, 256, 256 ['conv2d[0][0]']
(BatchNormalization) 256, 64)
4 activation (Activation) (None, 256, 0 ['batch_normaliza-
256, 64) tion[0][0]']
5 conv2d_1 (Conv2D) (None, 256, 36928 ['activation[0][0]']
256, 64)
6 batch_normaliza- (None, 256, 256 ['conv2d_1[0][0]']
tion_1 (BatchNorma- 256, 64 256)
lization)
7 activation_1 (Activa- (None, 256, 0 ['batch_normaliza-
tion) 256, 64 0) tion_1[0][0]']
8 max_poo- (None, 128, 0 ['activation_1[0][0]']
ling2d(MaxPoo- 128, 64)
ling2D)
9 conv2d_2 (Conv2D) (None, 128, 73856 ['max_poo-
128, 128) ling2d[0][0]']
10 batch_normaliza- (None, 128, 512 ['conv2d_2[0][0]']
tion_2 (BatchNorma- 128, 128)
lization)
11 activation_2 (Activa- (None, 128, 0 ['batch_normaliza-
tion) 128, 128) tion_2[0][0]']
12 conv2d_3 (Conv2D) (None, 128, 147584 ['activation_2[0][0]']
128, 128)
42

13 batch_normaliza- (None, 128, 512 ['conv2d_3[0][0]']


tion_3 (BatchNorma- 128, 128)
lization)
14 activation_3(Activa- (None, 128, 0 ['batch_normaliza-
tion) 128, 128) tion_3[0][0]']
15 max_pooling2d_1 (None, 64, 64, 0 ['activation_3[0][0]']
(MaxPooling2D) 128)
16 conv2d_4 (Conv2D) (None, 64, 64, 295168 ['max_poo-
256) ling2d_1[0][0]']
17 batch_normaliza- (None, 64, 64, 1024 ['conv2d_4[0][0]']
tion_4 (BatchNorma- 256)
lization)
18 activation_4 (Activa- (None, 64, 64, 0 ['batch_normaliza-
tion) 256) tion_4[0][0]']
19 conv2d_5 (Conv2D) (None, 64, 64, 590080 ['activation_4[0][0]']
256)
20 batch_normaliza- (None, 64, 64, 1024 ['conv2d_5[0][0]']
tion_5 (BatchNorma- 256)
lization)
21 activation_5 (Activa- (None, 64, 64, 0 ['batch_normaliza-
tion) 256) tion_5[0][0]']
22 max_pooling2d_2 (None, 32, 32, 0 ['activation_5[0][0]']
(MaxPooling2D) 256)
23 conv2d_6 (Conv2D) (None, 32, 32, 1180160 ['max_poo-
512) ling2d_2[0][0]']
24 batch_normaliza- (None, 32, 32, 2048 ['conv2d_6[0][0]']
tion_6 (BatchNorma- 512)
lization)
25 activation_6 (Activa- (None, 32, 32, 0 ['batch_normaliza-
tion) 512) tion_6[0][0]']
26 conv2d_7 (Conv2D) (None, 32, 32, 2359808 ['activation_6[0][0]']
512)
27 batch_normaliza- (None, 32, 32, 2048 ['conv2d_7[0][0]']
tion_7 (BatchNorma- 512)
lization)
28 activation_7 (Activa- (None, 32, 32, 0 ['batch_normaliza-
tion) 512) tion_7[0][0]']
29 max_pooling2d_3 (None, 16, 16, 0 ['activation_7[0][0]']
(MaxPooling2D) 512)
30 conv2d_8 (Conv2D) (None, 16, 16, 4719616 ['max_poo-
1024) ling2d_3[0][0]']
31 batch_normaliza- (None, 16, 16, 4096 ['conv2d_8[0][0]']
tion_8 (BatchNorma- 1024)
lization)
32 activation_8 (Activa- (None, 16, 16, 0 ['batch_normaliza-
tion) 1024) tion_8[0][0]']
33 conv2d_9 (Conv2D) (None, 16, 16, 9438208 ['activation_8[0][0]']
1024)
43

34 batch_normaliza- (None, 16, 16, 4096 ['conv2d_9[0][0]']


tion_9 (BatchNorma- 1024)
lization)
35 activation_9 (Activa- (None, 16, 16, 0 ['batch_normaliza-
tion) 1024) tion_9[0][0]']
36 conv2d_transpose (None, 32, 32, 2097664 ['activation_9[0][0]']
(Conv2DTranspose) 512)
37 concatenate (Conca- (None, 32, 32, 0 ['conv2d_trans-
tenate) 1024) pose[0][0]', 'activa-
tion_7[0][0]']
38 conv2d_10 (None, 32, 32, 4719104 ['concatenate[0][0]']
(Conv2D) 512)
39 batch_normaliza- (None, 32, 32, 2048 ['conv2d_10[0][0]']
tion_10 (BatchNor- 512)
malization)
40 activation_10(Activa- (None, 32, 32, 0 ['batch_normaliza-
tion) 512) tion_10[0][0]']
41 conv2d_11 (None, 32, 32, 2359808 ['activa-
(Conv2D) 512) tion_10[0][0]']
42 batch_normaliza- (None, 32, 32, 2048 ['conv2d_11[0][0]']
tion_11 (BatchNor- 512)
malization)
43 activation_11(Activa- (None, 32, 32, 0 ['batch_normaliza-
tion) 512) tion_11[0][0]']
44 conv2d_transpose_1 (None, 64, 64, 524544 ['activa-
(Conv2DTranspose) 256) tion_11[0][0]']
45 concatenate_1(Con- (None, 64, 64, 0 ['conv2d_trans-
catenate) 512) pose_1[0][0]', 'acti-
vation_5[0][0]']
46 conv2d_12 (None, 64, 64, 1179904 ['concate-
(Conv2D) 256) nate_1[0][0]']
47 batch_normaliza- (None, 64, 64, 1024 ['conv2d_12[0][0]']
tion_12 (BatchNor- 256)
malization)
48 activation_12(Activa- (None, 64, 64, 0 ['batch_normaliza-
tion) 256) tion_12[0][0]']
49 conv2d_13 (None, 64, 64, 590080 ['activa-
(Conv2D) 256) tion_12[0][0]']
50 batch_normaliza- (None, 64, 64, 1024 ['conv2d_13[0][0]']
tion_13 (BatchNor- 256)
malization)
51 activation_13(Activa- (None, 64, 64, 0 ['batch_normaliza-
tion) 256) tion_13[0][0]']
52 conv2d_transpose_2 (None, 128, 131200 ['activa-
(Conv2DTranspose) 128, 128) tion_13[0][0]']
53 concatenate_2(Con- (None, 128, 0 ['conv2d_trans-
catenate) 128, 256) pose_2[0][0]', 'acti-
vation_3[0][0]']
44

54 conv2d_14 (None, 128, 295040 ['concate-


(Conv2D) 128, 128) nate_2[0][0]']
55 batch_normaliza- (None, 128, 512 ['conv2d_14[0][0]']
tion_14 (BatchNor- 128, 128)
malization)
56 activation_14(Activa- (None, 128, 0 ['batch_normaliza-
tion) 128, 128) tion_14[0][0]']
57 conv2d_15 (None, 128, 147584 ['activa-
(Conv2D) 128, 128) tion_14[0][0]']
58 batch_normaliza- (None, 128, 512 ['conv2d_15[0][0]']
tion_15 (BatchNor- 128, 128)
malization)
59 activation_15(Activa- (None, 128, 0 ['batch_normaliza-
tion) 128, 128) tion_15[0][0]']
60 conv2d_transpose_3 (None, 256, 32832 ['activa-
(Conv2DTranspose) 256, 64) tion_15[0][0]']
61 concatenate_3(Con- (None, 256, 0 ['conv2d_trans-
catenate) 256, 128) pose_3[0][0]', 'acti-
vation_1[0][0]']
62 conv2d_16 (None, 256, 73792 ['concate-
(Conv2D) 256, 64) nate_3[0][0]']
63 batch_normaliza- (None, 256, 256 ['conv2d_16[0][0]']
tion_16 (BatchNor- 256, 64)
malization)
64 activation_16(Activa- (None, 256, 0 ['batch_normaliza-
tion) 256, 64) tion_16[0][0]']
65 conv2d_17 (None, 256, 36928 ['activa-
(Conv2D) 256, 64) tion_16[0][0]']
66 batch_normaliza- (None, 256, 256 ['conv2d_17[0][0]']
tion_17 (BatchNor- 256, 64)
malization)
Fonte: Autores (2023).

Segue o resultado das informações das camadas do modelo gerado. Total de


Parâmetros aprendidos nas etapas - 31,055,297, Parâmetros treináveis - 31,043,521,
Parâmetros não treináveis - 11,776.

3.4.2 Compilação do Modelo

Após a criação do modelo, a compilação é necessária levando em conta os


parâmetros de otimização, perda e métricas. Os parâmetros escolhidos e utilizados
estão representados a seguir.
45

• Otimização
O parâmetro otimizador controlará a taxa de aprendizado do treinamento. O
otimizador utilizado para o nosso cenário é o ‘Adam’, pelo fato de ser muito utilizado
e adequado para muitos dados.
Esse otimizador se baseia na estimativa adaptativa de momentos de primeira
e segunda ordem, ajustando a taxa de aprendizado ao longo do treinamento. Quanto
maior a taxa de aprendizado, menor a precisão dos pesos e o tempo de aprendizado.
• Perda
O parâmetro utilizado foi o Loss, ele controlará a distância entre o valor de
saída/previsto de uma função de aprendizado que se desvia/difere da verdade/valor
real. É utilizado para julgar o desempenho e otimização. Uma pontuação mais baixa
de perda indica que o modelo está tendo um desempenho melhor.
A função de perda utilizada foi a Binary Crossentropy, que é uma classificação
binária que calcula a perda de entropia cruzada (diferença entre duas distribuições de
probabilidade p e q sobre o mesmo conjunto de eventos) entre rótulos verdadeiros e
rótulos previstos, ela compara cada uma das probabilidades previstas com a saída da
classe real, que pode ser 0 ou 1. Em seguida, calcula a pontuação que penaliza as
probabilidades com base na distância do valor esperado, significando quão perto ou
longe do valor real.
A função de perda de entropia cruzada binária calcula a perda de um exemplo
calculando a seguinte média:

Equação - Função matemática de Cross entropia binária.

𝑜𝑢𝑡𝑜𝑢_
𝑠𝑒𝑧𝑒
1
𝐿𝑜𝑠𝑠 = 𝑜𝑢𝑡𝑜𝑢 ∑ 𝑌𝑒𝑛 . 𝑙𝑜𝑔𝒴̂ 𝑒𝑛 + (1 − 𝒴̂ en) . log (1 − 𝒴̂ 𝑒𝑛)
_
𝑠𝑒𝑧𝑒 𝑒𝑢=1
Fonte: PELTARION, (2019).

Onde 𝑌𝑒𝑛 é o 𝑒𝑢 -th valor escalar na saída do modelo, 𝒴en,é o valor de destino
correspondente e output size é o número de valores escalares na saída do modelo.
Isso é equivalente ao resultado médio da função de perda de entropia cruzada
categórica aplicada a muitos problemas de classificação independentes, cada
problema tendo apenas duas classes possíveis com probabilidades. (PELTARION,
2019)
46

• Métricas
Uma Métrica de avaliação, também conhecida como " Critério " é um método
de avaliação/comparação do desempenho de uma função de aprendizagem. É como
um quantificador com o qual você pode julgar se uma função de aprendizado para um
determinado problema de aprendizado (ou classe de hipóteses) é boa ou ruim, com
base em padrões. A seguir os tipos de métricas que foram implementadas na rede do
projeto para avaliar a performasse:
• Precision
É a métrica que calcula a razão entre o número de
amostras Positivas corretamente classificadas e o número total de amostras
classificadas como positivas (correta ou incorretamente). É uma métrica da própria
biblioteca Tensorflow e foi utilizada pois reflete a confiabilidade do modelo,
desconsiderando falsos positivos.
A precisão tende a ser alta quando o modelo faz muitas classificações
Positivas corretas e menos classificações Positivas incorretas. Dando como um
exemplo um modelo de 5 amostras, que classificou 4 corretamente como positivas, e
classificou 1 incorretamente negativa como positiva. A precisão desse modelo é 4/(4+1)
= 0.8 = 80%.
• Recall
A métrica Recall é uma métrica do próprio Tensorflow e mede a capacidade do
modelo de detectar amostras Positivas. Quanto maior a Recall, mais amostras
positivas detectadas. Sua fórmula é a seguinte.

𝑇𝑟𝑢𝑒𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑒
𝑅𝑒𝑐𝑎𝑙𝑙 =
𝑇𝑟𝑢𝑒𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑒 + 𝐹𝑎𝑙𝑠𝑒𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑒
Métrica Recall

• IOU (Intersection Over Union)


É um número que quantifica o grau de sobreposição entre duas caixas. No caso
de detecção e segmentação de objetos, a IoU avalia a sobreposição da região Ground
Truth e Prediction.
Vale ressaltar que a IoU na detecção de objetos é uma métrica auxiliar. Porém,
na segmentação de imagens ela é a principal métrica para avaliar a precisão do
modelo.
47

No caso de Segmentação de Imagem, a área não é necessariamente retangular.


Pode ter qualquer forma regular ou irregular. Isso significa que as previsões são
máscaras de segmentação e não caixas delimitadoras. Portanto, a análise pixel a pixel
é feita aqui. Além disso, a definição de TP, FP e FN é ligeiramente diferente, pois não
é baseada em um limite predefinido.
True Positive: A área de interseção entre Ground Truth (GT) e máscara de
segmentação (S). Matematicamente, esta é a operação lógica AND de GT e S, ou
seja,
TP = GT.S
False Positive: A área prevista fora do Ground Truth. Este é o OR lógico de GT
e segmentação menos GT.
FP = (GT + S) - GT
False Negative: Número de pixels na área Ground Truth que o modelo não
conseguiu prever. Este é o OR lógico de GT e segmentação menos S.
FN = (GT + S) - S
Sabemos pela Detecção de Objetos que IoU é a razão entre a área de
interseção e a área combinada de previsão e verdade do terreno. Como os valores de
TP, FP e FN nada mais são do que áreas ou número de pixels; podemos escrever IoU
da seguinte forma (KUKIL, 2022).
IoU = TP / (TP + FP + FN)
A imagem a seguir mostra a máscara de segmentação feita pela IoU:

Figura 22 - Máscaras de segmentação feitas pela IoU

Fonte: Autores (2023).

• Coeficiente de dados
Contamos os pixels semelhantes (tomando interseção, presentes em ambas
as imagens) nas duas imagens que estamos comparando e multiplicamos por 2. E
48

dividimos pelo total de pixels em ambas as imagens.

3.4.3 Callback
Um callback é uma função que é chamada repetidamente durante um
processo (por exemplo, o treinamento de uma rede neural) e que geralmente serve
para validar ou corrigir determinados comportamentos.
No aprendizado de máquina, podemos usar retornos de chamada para definir
o que acontece antes, durante ou no final de uma época de treinamento. Isso é
especialmente útil para registrar o desempenho ou interromper o treinamento se
nossa métrica de desempenho atingir um determinado limite. Esse mecanismo é
chamado de parada antecipada (Andrew, 2022).
As funções que foram aplicadas nos estágios de treinamento da rede tiveram
as seguintes regras.
Haverá a redução de taxa de aprendizado quando o aprendizado fica
estagnado, isto é, não gera mais resultados. A partir da quinta época de treinamento
é aplicada essa regra no fator de taxa de redução de 0.1.
O treinamento encerrará quando uma métrica monitorada para de gerar
resultados. Essa regra é válida a partir da segunda época de treinamento em que a
taxa de perda não possui melhoria.
O modelo será salvo em cada intervalo(época), a fim de evitar perdas de
treinamento.
49

4. RESULTADOS

Após o treinamento da rede neural que conteve os dados pré-processados e


os parâmetros mapeados, apresentamos os resultados obtidos de acordo com as
métricas estipuladas.
• Validação de Componente
A rede após treinamento no conjunto de 7.780 imagens e validação nas 1.556
imagens de treinamento produziu os resultados que são observados ao longo das 5
épocas. Os gráficos de treinamento da rede correspondentes ao conjunto de
treinamento, bem como ao conjunto de validação também foram analisados e exibidos.
Esses gráficos englobam a curva de perda e a curva de precisão, ambas em
relação ao número de épocas (eixo horizontal), assim como as curvas da métrica IoU,
do coeficiente de dados e do recall. Esta representação gráfica nos oferece uma visão
clara do desempenho do modelo durante cada época, permitindo uma melhor
compreensão do processo de aprendizado e ajuste dele, onde o treinamento mede o
desempenho durante a fase de treinamento, e a validação valida como o modelo se
sai em dados não vistos durante o treinamento.

Figura 23 - Gráfico de Precisão.

Fonte: Autores (2023).

Observa-se no gráfico acima que a precisão do conjunto de treinamento é de


0.8685 (primeira época) a 0.9301 (quinta época), já o conjunto de validação, vai de
0.8380 (primeira época) a 0.9162 (quinta época). À medida que a taxa de aprendizado
aumenta, a precisão dos pesos e tempo de aprendizado diminui.
50

Figura 24 - Gráfico de Perda de Treinamento e Validação.

Fonte: Autores (2023).

Em relação a perda no conjunto de treinamento, ela diminuiu de 0.2289


(primeira época) a 0.1219 (quinta época). Já no conjunto de validação, foi de 0.2077
(primeira época) a 0.1759 (quinta época), como já dito na Compilação do Modelo, uma
pontuação mais baixa de perda indica que o modelo está tendo um desempenho
melhor.

Figura 25 - Gráfico do Recall da Validação e Treinamento.

Fonte: Autores (2023).

Sobre a relação de Época e Recall, que mede a capacidade do modelo de


detectar amostras Positivas, é perceptível o aumento de recall de 0.7053 (primeira
51

época) a no 0.8308 (quinta época) treinamento e na validação 0.7701 (primeira


época) a 0.7638 (quinta época).

Figura 26 - Gráfico do Coeficiente da Validação e Treinamento.

Fonte: Autores (2023).

Para o gráfico da relação entre as épocas e coeficiente de dados, observa-se


o aumento de 0.6673 (primeira época) a 0.8181 (quinta época) no treinamento e
0.6991 (primeira época) e 0.7341 (quinta época) na validação, onde ele conta os
pixels semelhantes nas duas imagens, multiplica por 2 e dividi pelo total de pixels
em ambas as imagens.
52

Figura 27 - Gráfico da IoU de Validação e Treinamento.

Fonte: Autores (2023).

Por fim, a relação entre as épocas e a IoU utilizada que é uma métrica que
quantifica o grau de sobreposição entre duas regiões delimitadas, é possível perceber
o aumento no conjunto de treinamento e validação, sendo respectivamente de 0.5710
(primeira época) a 0.6993 (quinta época) e 0.5710 (primeira época) a 0.6042 (quinta
época).
Estatísticas de Desempenho após 1 época:

Tabela 4 - Desempenho após a primeira época do treinamento.

Dataset Precision Recall Loss IoU Coef.


Dados
Treinamento 0.8685 0.7053 0.2289 0.5710 0.6673
Validação 0.8380 0.7701 0.2077 0.5710 0.6991
Fonte: Autores (2023).

Estatística de Desempenho ao final das 5 épocas, é possível perceber que a IA teve


uma notável melhoria de desempenho comparada a primeira época:

Tabela 5 - Desempenho após a quinta época do treinamento.

Dataset Precision Recall Loss IoU Coef. Dados

Treinamento 0.9301 0.8308 0.1219 0.6993 0.8181

Validação 0.9162 0.7638 0.1759 0.6042 0.7341

Fonte: Autores (2023).


53

Log de Desempenho ao final das 5 épocas:

Figura 28 - Log de Treinamento da rede neural

Fonte: Autores (2023)

• Previsão na base de dados ISIC 2018


A etapa conclusiva do processo envolveu a gravação do modelo já treinado e a
execução de previsões visuais. Submetemos à análise um total de 518 imagens, e os
resultados obtidos podem ser visualizados a seguir. Nas comparações, as imagens
localizadas à esquerda são as originais usadas no teste, enquanto as do meio
representam as máscaras de referência, conhecidas como Ground Truth. As imagens
à direita, por sua vez, exibem as previsões geradas pela inteligência artificial.

Figura 29 - Resultado da segmentação da imagem 185 da validação.

Fonte: Autores (2023).

Figura 30 - Resultado da segmentação da imagem 4 da validação.


54

Fonte: Autores (2023).

Figura 31 - Resultado da segmentação da imagem 63 da validação.

Fonte: Autores (2023).

Figura 32 - Resultado da segmentação da imagem 144 da validação.

Fonte: Autores (2023).

Figura 33 - Resultado da segmentação da imagem 518 da validação.

Fonte: Autores (2023).


55

• Considerações de desempenho
A implementação da estratégia de Parada Antecipada (EarlyStopping) na fase
de pré-processamento se mostrou eficaz, resultando em economia substancial de
recursos computacionais. Definimos originalmente um total de 10 épocas nos
hiperparâmetros, no entanto, o processo de treinamento parou automaticamente após
a 5ª época. Essa parada ocorreu porque a partir desse ponto, não houve melhora
significativa nos resultados, indicando que o modelo atingiu um estado de equilíbrio e
não necessitou de mais épocas para aprimorar sua precisão.
Essa estratégia foi crucial para prevenir o ajuste excessivo, ou overfitting, ao
conjunto de treinamento, e resultou em um modelo que generaliza eficientemente a
novos dados. Esta eficácia foi comprovada pelo desempenho do modelo na
segmentação de um conjunto de teste de 518 imagens. As previsões geradas pelo
modelo demonstraram uma forte coerência com as respectivas máscaras do Ground
Truth, confirmando a acurácia e a eficiência da nossa abordagem.
56

5. CONCLUSÃO

No início do trabalho, um dos grandes objetivos era apresentar a relevância do


uso das técnicas de Machine Learning, Deep Learning e Inteligência Artificial
aplicadas a segmentação das lesões. Constata-se, após a realização da pesquisa,
que o uso destas novas tecnologias tem proporcionado grandes avanços na área de
reconhecimentos de padrões.
Diante da metodologia definida, ou seja, uma pesquisa com abordagem
qualitativa e executada por meio de levantamento bibliográfico, nos deparamos com
a dificuldade em encontrar publicações literárias relacionadas ao tema em língua
portuguesa. O tempo também foi um grande limitador para o treinamento e
desenvolvimento do projeto de software, visto que, o desenvolvimento de uma rede
neural utilizando deep learning pode demandar muitas horas de processamento e
experimentos.
Estabeleceu-se também como objetivo, avaliar o grau de exatidão dos
algoritmos. Percebe-se que todos os objetivos foram atingidos para tais fins. O
presente trabalho apresentou um rico estudo bibliográfico, assim como o
desenvolvimento de uma rede com a capacidade de segmentar lesão de pele com a
arquitetura U-net, a partir do pacote de imagens medicinais da ISIC Challenge.
Tendo como objetivo principal alcançado que era explorar e aplicar uma solução
baseada em redes neurais convolucionais (CNN) para a classificação de imagens.
57

REFERÊNCIAS BIBLIOGRÁFICAS

AI Winter: os altos e baixos da inteligência artificial. In: História da Ciência de Dados.


[S. l.], 1 set. 2021. Disponível em: <https://www.historyofdatascience.com/ai-winter-
the-highs-and-lows-of-artificial-intelligence/>. Acesso em: 29 maio 2022.

ANIEMEKA, Ifu. Uma introdução amigável às redes neurais convolucionais.


Hashrocket blog. 22 ago. 2017. Disponível em:
<https://hashrocket.com/blog/posts/afriendly-introduction-to-convolutional-neural-
networks>. Acesso em: 3 nov. 2022.

ARAÚJO, Flávio H.D; CARNEIRO, Allan C; SILVA, Romuere R.V; MEDEIROS,


Fátima N.S; USHIZIMA, Daniela M; Redes Neurais Convolucionais com Tensorflow:
Teoria e Prática. III Escola Regional de Informática do Piauí, 2017.

AREL, I.; ROSE, D.; KARNOWSKI, T. Deep machine learning - uma nova fronteira
na pesquisa de inteligência artificial [research frontier]. Revista de Inteligência
Computacional, IEEE, v. 5, n. 4, p. 13–18, 2010. ISSN 1556-603X.

ARNAB, Anurag. Campos aleatórios condicionais encontram redes neurais


profundas para segmentação semântica. IEEE SIGNAL PROCESSING MAGAZINE,
[S. l.], n. 35, p. 37-52, 17 jan. 2018.

BEM-VINDO ao Desafio ISIC. In: ISIC. Welcome to the ISIC Challenge. [S. l.],
2016. Disponível em: <https://challenge.isic-archive.com/>. Acesso em: 12 set. 2022.

BUDUMA, Nikhil. Fundamentos de Deep Learning: Projetando Algoritmos de


Inteligência de Máquina de Próxima Geração. Primeira edição. ed. [S. l.]: O'reilly,
2017.

CASTAÑÓN, Jorge. 10 Métodos de aprendizado de máquina que todo cientista de


dados deve conhecer: impulsione suas habilidades em ciência de dados. In: 10
métodos de aprendizado de máquina que todo cientista de dados deve saber:
impulsione suas habilidades em ciência de dados. [S. l.], 2019. Disponível em:
<https://towardsdatascience.com/10-machine-learning-methods-that-every-data-
scientist-should-know-3cc96e0eeee9>. Acesso em: 1 maio 2019.

CECCON, Denny. Estruturas de dados e aprendizado de máquina: impulsione suas


habilidades em ciência de dados. In: Estruturas de dados e aprendizado de
máquina: impulsione suas habilidades em ciência de dados. [S. l.], 2020.

CHOLLET, FRANÇOIS. Aprendizado Profundo com Python. Fundamentos da


aprendizagem profunda: Fundamentos da aprendizagem profunda, [s. l.], 2018.
Disponível em:
<http://silverio.net.br/heitor/disciplinas/eeica/papers/Livros/[Chollet]Deep_Learning_w
ith_Python.pdf>. Acesso em: 30 maio 2022.

CIABURRO, Giuseppe; VENKATESWARAN, Balaji. Redes Neurais com R. In: Redes


Neurais RECORRENTES e Convolucionais. [S. l.: s. n.], 2017. p. 195-224.
Disponível em: <https://cloudflare-
58

ipfs.com/ipfs/bafykbzacea5lxruxzjmbpz46wv6zf76kosrdzwgd4f2pcn6gghvsijiynrfm2?f
ilename=Balaji%20Venkateswaran_%20Francesco%20Ciabuschi%20-%20Neural%2
0networks%20with%20R%20_%20smart%20models%20using%20CNN%2C%20RN
N%2C%20deep%20learning%2C%20and%20artificial%20intelligence%20principles
%20%282017%29.pdf>. Acesso em: 30 maio 2022.

CIRESAN, Dan. Redes Neurais Profundas Segmentam Membranas Neuronais em


Imagens de Microscopia Eletrônica. Um guia de 2021 para segmentação semântica,
[S. l.], p. 1-9, 3 dez. 2012. Disponível em:
<https://www.semanticscholar.org/paper/Deep-Neural-Networks-Segment-Neuronal-
Membranes-in-Ciresan-Giusti/09193e19b59fc8f05bee9d6efbfb1607ca5b6501>.
Acesso em: 29 maio 2022.

CONTROLE o treinamento de sua rede neural no Tensorflow com callbacks. [S. l.], 3
maio 2022. Disponível em: <https://towardsdatascience.com/control-the-training-of-
your-neural-network-in-tensorflow-with-callbacks-
ba2cc0c2fbe8#:~:text=A%20callback%20is%20a%20function,end%20of%20a%20tra
ining%20epoch>. Acesso em: 25 ago. 2022.

CORTES, Dana; VAPNIK, Vladimir. Redes de vetores de suporte. Suporte-Vector, [S.


l.], p. 273–297, 10 set. 1995.

COURVILLE, Aaron. Deep Learning (série Computação Adaptativa e Aprendizado de


Máquina). [S. l.: s. n.], 2016. 800 p.

DATA SCIENCE ACADEMY (EUA). Livro de Aprendizagem Profunda. Dentro:


Capítulo 3 – O Que São Redes Neurais Artificiais Profundas ou Deep Learning?. [S.
l.], 2018. Disponível em: <https://www.deeplearningbook.com.br/o-que-sao-redes-
neurais-artificiais-profundas/>. Acesso em: 29 maio 2022.

ESTEVES, Toni. Uma introdução aos diferentes tipos de convoluções. Convolução


Transposta, [S. l.], p. 1-10, 15 fev. 2018. Disponível em:
<https://estevestoni.medium.com/uma-introdu%C3%A7%C3%A3o-aos-diferentes-
tipos-de-convolu%C3%A7%C3%B5es-d3ce7cd81759>. Acesso em: 7 ago. 2022.

FINLAY, Steven. Inteligência artificial e aprendizado de máquina para negócios: um


guia prático para tecnologias baseadas em dados: um guia prático para tecnologias
baseadas em dados (segunda edição). In: Inteligência ARTIFICIAL e aprendizado
de máquina para negócios: um guia prático para tecnologias baseadas em dados:
estrutura de aprendizado de máquina. [S. l.: s. n.], 2017. Inteligência artificial e
aprendizado de máquina para negócios: um guia prático para tecnologias baseadas
em dados.

Folha de dicas de redes neurais recorrentes. [S. l.], 2018. Disponível em:
<https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-recurrent-neural-
networks>. Acesso em: 29 maio 2022.

FUKUSHIMA, Kunihiko. Cognitron: uma rede neural multicamadas auto-organizada.


Rede neural multicamadas, [S. l.], p. 121–136, 1 set. 1975.
GONZALEZ, Rafael C.; WOODS, Richard E. Digital Image Processing. 3. ed. [S. l.: s.
59

n.], 2007. Disponível em:


<http://sdeuoc.ac.in/sites/default/files/sde_videos/Digital%20Image%20Processing%
203rd%20ed.%20-%20R.%20Gonzalez%2C%20R.%20Woods-ilovepdf-
compressed.pdf>. Acesso em: 12 abr. 2022.

GÖRNER, Martin. Modern Convolutional Neural Nets. 2018. Apresentação de slides.


Disponível em: <https://github.com/GoogleCloudPlatform/tensorflow-without-aphd>
Acesso em: 3 ago. 2022.

GRAUMAN, Kristen; LEIBE, Bastian. Reconhecimento de objetos visuais. 1. ed. [S.


l.: s. n.], 2011. 172 p. Disponível em: <https://cs.gmu.edu/~kosecka/cs482/grauman-
recognition-draft-27-01-11.pdf>. Acesso em: 18 abr. 2022.

HOCHREITER, Sepp; SCHMIDHUBER, Juergen. LONGA MEMÓRIA DE CURTO


PRAZO. Computação Neural, [S. l.], p. 1735–1780, 1 dez. 1997.

HOCHREITER, Sepp. LONGA MEMÓRIA DE CURTO PRAZO. Em: ImageNet. [S. l.],
2009. Disponível em: <https://image-net.org/>. Acesso em: 29 maio 2022.

HOCHREITER, Sepp. LONGA MEMÓRIA DE CURTO PRAZO. In: História do


segundo inverno da IA. [S. l.], 2019. Disponível em:
<https://towardsdatascience.com/history-of-the-second-ai-winter-406f18789d45>.
Acesso em: 29 maio 2022.

IBM (EUA). Redes Neurais Recorrentes. In: Redes Neurais Recorrentes. [S. l.], 14
set. 2020. Disponível em: <https://www.ibm.com/cloud/learn/recurrent-neural-
networks>. Acesso em: 29 maio 2022.

INTELIGÊNCIA Artificial: Definição, Tipos, Exemplos, Tecnologias. [S. l.], 31 ago.


2018. Disponível em: <https://chethankumargn.medium.com/artificial-intelligence-
definition-types-examples-technologies-962ea75c7b9b>. Acesso em: 12 set. 2022.

IVAKHNENKO, Alexey G; LAPA, Valentin G. Cibernética e Técnicas de Previsão.


Cibernética e Previsão, [S. l.], p. 210-215, 1 out. 1971.

KARN, U. Uma explicação intuitiva de redes neurais convolucionais. 2016.


Disponível em: . Acesso em: 17 nov. 2018.

KELLEY, Henry J. Gradient Teoria das Trajetórias de Voo Ótimas. Gradient Theory,
[S. l.], p. 947-954, 10 out. 1960.

KRIZHEVSKY, Alex; SUTSKEVER, Ilya; HINTON, Geoffrey E. Classificação


ImageNet com Redes Neurais Convolucionais Profundas. ImageNet, [S. l.], p. 1-8, 5
jun. 2012. Disponível em:
<https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c4
5b-Paper.pdf>. Acesso em: 29 maio 2022.

LECUN, Y.; KAVUKCUOGLU, K.; FARABET, C. Redes convolucionais e aplicações


em visão. In: Circuitos e Sistemas (ISCAS), Anais do Simpósio Internacional IEEE
2010 sobre. [S.l.: s.n.], 2010. p. 253–256.
60

LECUN, Yann. Yann LeCun Backpropagation aplicado ao reconhecimento de código


postal manuscrito. Aplicado ao reconhecimento de código postal manuscrito, [S. l.],
p. 541-551, 16 ago. 1989.

M. Leshno , VY Lin , A. Pinkus , S. Schocken Redes feedforward multicamadas com


uma função de ativação não polinomial podem aproximar qualquer função Neural
Netw , 6 ( 1993 ) , pp. 861-867
MATCHA, Anil C. N. A 2021 guia para segmentação semântica. [S. l.], 2021.
Disponível em: <https://nanonets.com/blog/semantic-image-segmentation-2020/.>
Acesso em: 29 maio 2022.

MATEUS, Flora Mello Quintão; MENDONÇA, Mariana de Carvalho. MACHINE


LEARNING NA MELHORIA DE PROCESSOS INTERNOS: ESTUDOS DE CASO NA
INDÚSTRIA DE VAREJO BRASILEIRA: Técnicas de Machine
Learning. In: MACHINE LEARNING NA MELHORIA DE PROCESSOS INTERNOS:
ESTUDOS DE CASO NA INDÚSTRIA DE VAREJO BRASILEIRA. [S. l.], 2020.

MOU, Lili; JIN, Zhi. Tree-based Redes Neurais Convolucionais: Princípios e


Aplicações. [S. l.]: Springer, 2018.

NIELSEN, M. Redes Neurais e Deep Learning. 2015. Disponível


em:<http://neuralnetworksanddeeplearning.com/chap6.html> . Acesso em: 01
novembro de 2022.

NOH, H.; HONG, S.; HAN, B. Rede de deconvolução de aprendizado para


segmentação semântica. In: Conferência Internacional IEEE sobre Visão
Computacional (ICCV). [S.l.: s.n.], 2015.

O QUE é Detecção de Objetos? [S. l.], 2022. Disponível em:


<https://didatica.tech/deteccao-de-objetos/>. Acesso em: 18 maio 2022.

O QUE é Unidade Linear Retificada (ReLU)? | Introdução à função de ativação


ReLU. [S. l.], 22 mar. 2022. Disponível em:
<https://www.mygreatlearning.com/blog/relu-activation-function/>. Acesso em: 3 ago.
2022.

O’SHEA, Keiron; NASH, Ryan. Uma introdução às redes neurais convolucionais:


arquitetura geral. Redes neurais convolucionais baseadas em árvore: princípios e
aplicações, [s. l.], 2015. Disponível em: <https://arxiv.org/pdf/1511.08458.pdf>.
Acesso em: 26 maio 2022.

PACHECO, César Augusto Rodrigues; PEREIRA, Natasha Sophie. Deep Learning


Conceitos e Utilização nas Diversas Áreas do Conhecimento: Machine Learning ou
Aprendizado de Máquina. In: Deep Learning Conceitos e Utilização nas Diversas
Áreas do Conhecimento. [S. l.], 2018. Disponível em:
<http://anais.unievangelica.edu.br/index.php/adalovelace/article/view/4132/2770>.
Acesso em: 12 fev. 2019.

PITTS, Walter; MCCULLOCH, Warren. Um Cálculo Lógico das Idéias Imanentes na


Atividade Nervosa. Um Lógico, [S. l.], p. 115-133, 15 mar. 1943.
61

RAWAT, W.; WANG, Z. Redes neurais convolucionais profundas para classificação


de imagens: uma revisão abrangente. computação neural, MIT Press, v. 29, n. 9, p.
2352–2449, 2017.

Redes Neurais RECORRENTES (RNN). [S. l.], 2020. Disponível em:


<https://www.educative.io/edpresso/what-are-the-types-of-rnn>. Acesso em: 29 maio
2022.

RONNEBERGER, Olaf. U-Net: Redes Convolucionais para Segmentação de


Imagens Biomédicas. U-Net, [S. l.], p. 2168–2175, 15 maio 2015. Disponível em:
<https://arxiv.org/pdf/1505.04597.pdf>. Acesso em: 29 maio 2022.

SEWAK, M.; KARIM, M. R.; PUJARI, P. Redes neurais convolucionais práticas:


implemente modelos avançados de aprendizado profundo usando Python.
Publicação Packt Ltd, 2018.

SEYEDHOSSEINI, Mojtaba; SAJJADI, Mehdi; TASDIZEN, Tolga. Segmentação de


Imagens com Modelos Hierárquicos em Cascata e Redes Logísticas Disjuntivas
Normais. Bioinformática, [S. l.], p. 2168–2175, 8 jun. 2014. Disponível em:
<https://openaccess.thecvf.com/content_iccv_2013/papers/Seyedhosseini_Image_S
egmentation_with_2013_ICCV_paper.pdf>. Acesso em: 29 maio 2022

SHARMA, Sagar. Funções de ativação em redes neurais. [S. l.], 2017. Disponível
em: <https://towardsdatascience.com/activation-functions-neural-networks-
1cbd9f8d91d6>. Acesso em: 3 ago. 2022.

SHARMA, Sagar. Uma introdução suave à unidade linear retificada (ReLU). [S. l.], 9
jan. 2019. Disponível em: <https://machinelearningmastery.com/rectified-linear-
activation-function-for-deep-learning-neural-networks/>. Acesso em: 3 ago. 2022.

SILVEIRA, Guilherme; BULLOCK, Bennett. Machine Learning. Introdução e


classificação: O caminho com machine learning. In: Machine Learning. Introdução e
classificação: O caminho com machine learning. [S. l.], 2018.

TOGASHI, Kaori; GIAN DO, Richard; NISHIO, Mizuho; YAMASHITA, Rikiya. Redes
neurais convolucionais: uma visão geral e aplicação em radiologia: Camada de
convolução. Redes neurais convolucionais baseadas em árvore: princípios e
aplicações, [s. l.], 2018.

Um guia para iniciantes para entender as redes neurais convolucionais. [S. l.], 2016.
Disponível em: <https://adeshpande3.github.io/A-Beginner's-Guide-To-
Understanding-Convolutional-Neural-Networks/>. Acesso em: 19 maio 2022.

Uma introdução às redes neurais recorrentes e à matemática que as alimenta. [S. l.],
24 set. 2021. Disponível em: <https://machinelearningmastery.com/an-introduction-
to-recurrent-neural-networks-and-the-math-that-powers-them/>. Acesso em: 29 maio
2022.

VARGAS, Ana; CARVALHO, Aline; VASCONCELOS, Cristina. Um estudo sobre


Redes Neurais Convolucionais e sua aplicação em detecção de pedestres. Redes
62

Neurais Convolucionais: REDES NEURAIS CONVOLUCIONAIS, [s. l.], 2016.


Disponível em: http://gibis.unifesp.br/sibgrapi16/eproceedings/wuw/7.pdf. Acesso
em: 1 jun. 2022.
56

Você também pode gostar