Buscar

Ecossistema Hadoop Tema 2 Redes Neurais Convolucionais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 67 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 67 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 67 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 1/67
Redes neurais convolucionais
Prof. Sérgio Assunção Monteiro
false
Descrição
Conceitos sobre as redes neurais de convolução e suas aplicações no
contexto de aprendizado de máquina profundo.
Propósito
Compreender os fundamentos das redes de convolução ou
convolucionais (CNN – Convolutional Neural Networks) e as principais
arquiteturas e aplicações para classificação de imagens em
aprendizado de máquina profundo.
Preparação
É necessário criar uma conta no Google Colab para executar os
exemplos desenvolvidos na linguagem Python.
Objetivos
Módulo 1
Fundamentos de redes
convolucionais
https://colab.research.google.com/notebooks/welcome.ipynb?hl=pt-BR
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 2/67
Identificar fundamentos de redes convolucionais e suas aplicações.
Módulo 2
Arquiteturas de redes
convolucionais
Distinguir as principais variações de arquiteturas de redes
convolucionais e suas aplicações.
Módulo 3
Classi�cação de imagens com
rede convolucional
Empregar rede convolucional para classificação de imagens.
As redes neurais artificiais são aplicadas com sucesso em
diferentes contextos. De modo geral, elas simulam aspectos da
biologia que são representados por meio de modelos
computacionais. Recentemente, elas ganharam mais destaque com
a utilização do termo “Aprendizado Profundo” em que as
arquiteturas das redes possuem camadas ocultas que se conectam
para extrair características dos dados de treinamento.
As redes de aprendizado profundo possuem categorias que são
mais adequadas para determinadas situações, como é o caso das
redes neurais de convolução ou convolucionais (CNN –
Convolutional Neural Networks). As redes CNN têm sido
empregadas com sucesso para aplicações de visão computacional.
São estruturas elaboradas com diversos aspectos que devem ser
parametrizados. Felizmente, existem frameworks e bibliotecas
computacionais que facilitam o trabalho de desenvolvimento. Essa
área é muito relevante e tem crescido bastante nos últimos anos e
ainda tem muito espaço para avançar.
Introdução
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 3/67
1 - Fundamentos
de redes convolucionais
Ao �nal deste módulo, você será capaz de identi�car fundamentos de
redes convolucionais e suas aplicações.
Ligando os pontos
Você sabe o que é aprendizado de máquina profundo? Sabia que
existem modelos computacionais voltados para visão computacional?
Para respondermos a essas perguntas, vamos analisar algumas
situações práticas.
A Enxergue Mais S.A. (empresa fictícia) atua no ramo de segurança
privada. Ela desenvolve soluções de software utilizados para aumentar
os controles de proteção de pessoas e recursos patrimoniais. Entre as
soluções desenvolvidas, estão:
detecção de movimentos suspeitos;
identificação de pessoas em imagens estáticas e dinâmicas;
detecção de objetos que ofereçam riscos à segurança.
Essas aplicações constituem apenas uma parte das suas soluções,
pois, depois que quaisquer uma delas é acionada, são enviados alertas
para os responsáveis por garantir que a segurança seja mantida.
Hoje, as soluções da Enxergue Mais possuem um altíssimo padrão de
qualidade, mas no início não foi bem assim. Seus sócios fundadores
foram colegas de um curso de aprendizado profundo no qual estudaram
alguns modelos muito interessantes, mas o que mais lhes chamou a
atenção foi o modelo de rede neural de convolução, conhecido como
rede CNN em referência à expressão em inglês convolutional neural
network. Essa rede tem vários casos de sucesso aplicados para visão
computacional.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 4/67
Então, após dominarem os conceitos da CNN, os dois colegas
enxergaram uma oportunidade de negócio: aplicar a CNN para visão
computacional voltada para segurança. No entanto, ao realizar as
implementações, não foram bem-sucedidos inicialmente, pois as redes
CNN, semelhante aos demais tipos de redes neurais, têm um
comportamento fortemente influenciado por sua arquitetura, seus
valores dos parâmetros e dos dados fornecidos para treinamento. A
estratégia que adotaram foi aprofundar mais os estudos desses
modelos computacionais e realizar mais testes. Como consequência,
fundaram a Enxergue Mais S.A. e, hoje, estão à procura de pessoas para
compor os quadros da empresa e ajudá-la a evoluir ainda mais.
E você, o que acha do caminho que os fundadores da Enxergue Mais
tomaram?
Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos
ligar esses pontos?
Questão 1
Como visto, a Enxergue Mais S.A. encontrou nas redes CNN uma
oportunidade de melhorar a qualidade de suas soluções. O que
essas redes têm de especial que você poderia aplicar em sua
empresa?
Parabéns! A alternativa A está correta.
As redes CNNs são aplicadas para problemas de visão
computacional com muito sucesso. No caso da Enxergue Mais S.A.,
A
Funcionam muito bem para aplicações de visão
computacional.
B
São redes modernas que ajudam a fortalecer a
marca da empresa.
C São muito simples de serem usadas.
D Foi uma tentativa da empresa que deu certo.
E
São o único modelo computacional adequado para o
tipo de problema da empresa.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 5/67
os tomadores de decisão aprenderam isso e tiveram de trabalhar
bastante para viabilizar o uso no dia a dia da empresa.
Questão 2
Considere a seguinte situação: você é responsável por demonstrar
a eficácia de uma rede CNN sobre outros modelos existentes na
Enxergue Mais S.A. Como faria essa tarefa?
Parabéns! A alternativa C está correta.
Para testar a eficácia de um modelo em relação a outros, é preciso
utilizar uma métrica comum. No caso da Enxergue Mais S.A., é
necessário realizar testes em massas de dados aleatórios que
combinem situações muito simples e muito complexas para
verificar qual a resposta que os modelos produzem.
Questão 3
Considere a seguinte situação: você foi convidado para participar de um
treinamento da Enxergue Mais S.A. cujo objetivo é qualificar
profissionais para trabalhar nas soluções dela. Como você se
comportaria nesse curso para conseguir se destacar?
A
Através de métricas específicas de qualidade
específica para cada modelo.
B
Com a aplicação de testes em um conjunto
específico de dados.
C
Através de testes que utilizassem uma medida de
qualidade comum para os modelos.
D
Não é possível realizar esse tipo de teste, pois cada
modelo tem seus pontos fortes e fracos.
E
Os modelos devem ser testados através das
soluções oferecidas por bibliotecas de linguagens
de programação.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 6/67
Digite sua resposta aqui
Chave de resposta
Uma empresa como a Enxergue Mais S.A. está à procura,
constantemente, de pessoas talentosas e que possam contribuir
para a expansão dos negócios. Portanto, um curso de qualificação
deve ser visto como uma ótima oportunidade de demonstrar
interesse por redes CNN aplicadas aos problemas da empresa.
Estudar, fazer os exercícios e apresentar propostas de soluções é
uma excelente forma de se destacar.
Introdução às redes neurais
convolucionais (CNN)
As redes neurais artificiais são modelos computacionais baseados na
estrutura de uma rede de neurônios biológicos. Elas são usadas com
bastante sucesso no reconhecimento de padrões e, por isso, são
utilizadas para resolver muitos problemas práticos.
Com o avanço das aplicações das redes neurais, foram feitas
adaptações das arquiteturas dos modelos que tinham como objetivo
tratar, de forma mais especializada, determinadosdomínios de
problemas.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 7/67
Um desses domínios de problemas é a visão computacional, a qual trata
das técnicas para que um sistema computacional possa distinguir
objetos em cenários que podem ser estáticos ou dinâmicos e, dessa
maneira, fornecer dados para que outras estruturas sistêmicas possam
analisar as propriedades desses objetos ou, ainda, acionar outras ações.
Nesse sentido, surgiram as redes neurais de convolução, mais
conhecidas pela sigla CNN, que é uma abreviação do termo original em
inglês: Convolutional Neural Network.
As CNN são uma classe de redes neurais artificiais que é
aplicada com sucesso para visão computacional.
O projeto da CNN foi desenvolvido para que ela extraia características
dos objetos de forma automática e adaptativa, por meio de algoritmo de
treinamento de retropropagação, usando, para isso, vários blocos de
construção como:
Camadas de convolução;
Camadas de pool;
Camadas totalmente conectadas em estruturas de
hierarquias espaciais.
Vamos abordar esses conceitos para entendermos, com mais clareza,
os fundamentos das CNN.
Arquitetura do córtex visual
Veja agora como surgiu essa arquitetura.
 A origem das redes convolucionais está nos
trabalhos de David H. Hubel e Torsten Wiesel, nos
anos de 1958 e 1959, quando fizeram vários
i t t l d i
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 8/67
Dentro dos aspectos diretamente relacionados às redes CNN modernas,
está o fato de que muitos neurônios no córtex visual têm um pequeno
campo receptor local.
E o que isso implica?
Resposta
A reação desses neurônios é limitada a estímulos visuais localizados
em determinada região do campo visual. Entre os fatos importantes que
David H. Hubel e Torsten Wiesel descobriram, está a capacidade de os
campos receptivos de diferentes neurônios poderem se combinar por
meio de sobreposição e, juntos, revestirem todo o campo visual.
Além disso, eles conseguiram mostrar que alguns neurônios reagem
apenas a imagens de linhas horizontais, enquanto outros reagem
apenas a linhas com outras orientações. Dessa maneira, a arquitetura
do córtex visual é capaz de detectar quaisquer tipos de padrões
complexos do campo visual. Esses estudos e, em especial, um trabalho
sobre a rede neocognitron (FUKUSHIMA, 1980), evoluíram para as redes
convolucionais modernas.
Camada de convolução
A camada de convolução é responsável por mapear as características
da imagem que vamos fornecer para a CNN.
Cabe ressaltar que a camada de convolução é referida
pela expressão CONV.
Então, a camada CONV faz uso de filtros que realizam operações de
convolução enquanto ela processa a imagem de entrada. Veja um
exemplo de uma camada de convolução.
experimentos com gatos e, alguns anos depois,
com macacos (HUBEL; WIESEL, 1968).
 Por trabalhos nesse campo de conhecimento, ou
seja, sobre a estrutura do córtex visual, os autores
receberam o Prêmio Nobel de Medicina e Fisiologia
em 1981.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 9/67
Camada de convolução.
Vamos entender melhor?
Temos uma imagem de entrada que é representada por uma matriz de
valores binários (valores 0 ou 1) de seis linhas e seis colunas.
Em seguida, selecionamos um bloco da imagem para aplicar um filtro. O
operador “*” representa a operação de convolução.
No caso, o valor “25” na matriz de resultado foi obtido a partir do
seguinte cálculo:
O processo deve continuar até que todos os quadros da imagem sejam
tratados.
Esses deslocamentos na imagem de entrada são chamados de
tamanho do passo, que, em inglês, é referenciado como stride.
Atenção
A camada de convolução tem como hiperparâmetros os tamanhos do
filtro e do passo. A saída resultante é chamada de mapa de
características, ou mapa de ativação.
Camada de preenchimento
(Padding)
Um aspecto que a CNN trata é que o centro de cada kernel possa se
sobrepor ao elemento mais externo da submatriz de entrada. Isso é feito
por meio de uma técnica chamada de preenchimento, mais conhecida
pelo nome original em inglês (padding), sendo mais comumente usada a
de preenchimento com zeros.
Na imagem a seguir, apresentamos um exemplo de padding.
f = 1 × 1 + 0 × 2 + 0 × 3 + 1 × 4 + 1 × 5 + 1 × 6 + 0 × 7 + 0 × 8 + 1 × 9
= 1 + 4 + 5 + 6 + 9 = 25
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 10/67
Exemplo de padding.
Comentário
As arquiteturas CNN utilizam o preenchimento zero para manter as
dimensões da matriz de entrada e aplicar mais camadas no modelo.
Sem o preenchimento de zero, cada mapa de características sucessivo
ficaria menor após a aplicação da operação de convolução.
Função de ativação
Após a aplicação da operação de convolução, os resultados são
passados como entrada para uma função de ativação não linear.
Existem algumas funções não lineares suaves que representam bem um
comportamento de neurônio biológico.
A seguir, apresentamos algumas das funções mais comumente
aplicadas:
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 11/67
Função sigmoide
A função, também chamada de função logística, é dada pela fórmula:
Função Tanh
A função tangente hiperbólica utiliza a função sigmoide na sua
composição. Sua fórmula é dada por:
Função ReLU
A função de ativação linear retificada é dada por:
A função ReLU é a mais utilizada na prática como função
de ativação na camada de convolução.
Outra função de ativação muito importante é a Softmax, utilizada no
final da CNN. Ela é definida como:
Em que:
 representa o i-ésimo resultado da função Softmax;
 representa o resultado para o i-ésimo neurônio de saída;
 representa a quantidade de neurônios de saída.
Comentário
A função Softmax pode ser vista como uma função logística
generalizada que toma como entrada um vetor de pontuações z e
produz um vetor de probabilidade de saída p.
σ(s) =
1
1 + e−s
tanh(s) = 2σ(2s) − 1
ReLU(s) = max{0, s}
pi =
ezi
∑nj=1 ezj
pi
zi
n
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 12/67
Camada de aglomeração (Pooling
layer)
A camada de aglomeração – normalmente referenciada por (POOL) – é
uma operação que tem por objetivo a redução da quantidade de
neurônios para as camadas posteriores.
A POOL, em geral, é aplicada após uma camada de
convolução.
A ideia da redução da imagem de entrada é diminuir a carga
computacional, o uso de memória e o número de parâmetros. É uma
forma de se prevenir em relação a um problema dos modelos de
aprendizado de máquina supervisionado: o risco de sobreajuste, mais
conhecido como overfitting, que ocorre quando o modelo fica
superespecializado nos dados de treinamento e não consegue
generalizar os resultados.
As duas principais operações pooling são:
Max pooling
Obtém o maior valor de uma submatriz. Ela preserva os recursos
detectados.
Average pooling
Obtém a média dos valores de uma submatriz. Logo, ela não preserva
os recursos detectados.
Na imagem a seguir, mostramos um exemplo das duas operações de
pooling.
Camada de pooling.
No caso da imagem de exemplo, observe o seguinte:
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 13/67
Da mesma forma que tivemos que definir o parâmetro do tamanho do
passo da camada de convolução, também precisamos fazer o mesmo
para a camada de aglomeração, além de definir as dimensões da matriz
de saída.
Comentário
Então, pelo que vimos, cabe destacar que um neurônio de pooling não
tem pesos. O que ele faz é agregar as entradas por intermédio de uma
função de agregação, como o máximo ou a média.
Camada totalmente conectadaCamada que, normalmente, é aplicada no final de uma CNN. Ela opera
sobre uma entrada plana e cada uma das entradas é conectada a todos
os nós da camada consecutiva de neurônios. Veja:
 Para calcular o max pooling, tivemos que verificar
quem era o maior elemento dentro de uma
submatriz e colocar o valor na saída
correspondente.
 No caso do average pooling, tivemos que calcular a
média dos elementos de cada submatriz e associá-
la à respectiva posição de saída.
 Devemos notar que a matriz de entrada possuía
quatro linhas e quatro colunas, ou seja, dezesseis
elementos.
 Agora, a matriz resultante de cada operação de
aglomeração possui duas linhas e dois elementos,
ou seja, um total de quatro elementos em cada
matriz.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 14/67
Camada totalmente conectada.
Analisando a imagem da esquerda para a direita, vemos uma imagem
retangular que é transformada para uma matriz coluna. Em seguida,
cada célula de entrada é conectada a todos os neurônios da camada
seguinte.
As camadas totalmente conectadas também são
chamadas de camadas densas.
Parâmetros e
hiperparâmetros da rede
CNN
Como vimos até agora, quando trabalhamos com redes CNN,
precisamos nos preocupar com diversos aspectos, tais como a
quantidade de camadas de convolução e o dimensionamento das
matrizes de deslocamento para aplicar a operação de convolução, por
exemplo.
Como diferenciar parâmetro de hiperparâmetro?
Parâmetro
Quando uma variável é
otimizada
automaticamente
durante o processo de
treinamento.
Hiperparâmetro
Quando uma variável
precisa ser definida
com antecedência.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 15/67
É importante dedicarmos um pouco mais de atenção para essas
variáveis, para dimensionarmos corretamente a rede e
compreendermos quais são os recursos que vamos precisar para o
funcionamento adequado do modelo.
Entre os principais parâmetros da rede CNN, temos
(ASZEMI; DOMINIC, 2019):
As matrizes de filtros, chamada de kernels, que ficam na
camada de convolução;
Os pesos sinápticos que ficam na camada totalmente
conectada.
Já nos hiperparâmetros da rede, temos as seguintes situações:
Dimensões das matrizes de filtro (kernel), quantidade de filtros,
dimensões do deslocamento (stride), tipo de preenchimento
(padding) e funções de ativação.
Método de agrupamento, tamanho do filtro, deslocamento
(stride) e tipo de preenchimento.
Quantidade de pesos e função de ativação.
Arquitetura de modelo, método de otimização, taxa de
aprendizagem, função de perda, tamanho do lote (batch size),
épocas, regularização, método de pesos iniciais e forma de
divisão de conjunto de dados.
Os hiperparâmetros podem ser divididos em duas categorias:
Camada de convolução 
Camada de aglomeração 
Camada totalmente conectada 
Outros aspectos 
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 16/67
Os que determinam a estrutura da rede;
Os que caracterizam o treinamento da rede.
Vamos analisar essas categorias com mais detalhes.
Hiperparâmetros que determinam
a estrutura da rede
Trata-se dos parâmetros que são usados para construir o modelo
computacional da rede. Os principais hiperparâmetros são:
Dimensionamento da matriz de filtros (kernel): a matriz
de filtros é aplicada na camada de convolução. Por meio
da operação de convolução entre a matriz de entrada
(imagem) e o kernel é que serão extraídas características
da imagem e repassadas para a próxima camada;
Tipo de kernel: as características que o kernel pode
extrair de uma imagem se referem à borda, detecção,
nitidez;
Stride: é a distância, ou número de pixels, que o kernel se
move sobre a matriz de entrada. Quanto maior for o stride
– ou, ainda, quanto maiores forem as dimensões do
stride –, menor será a sobreposição das entradas de uma
imagem e, além disso, menor será a matriz de
características resultante;
Preenchimento (padding): é a adição de camadas com
valores de zero (0) para garantir que o kernel passe além
da borda da imagem.
Observe que o preenchimento pode ser de três tipos:
Preenchimento válido (Valid
Padding)
Esta opção não faz preenchimento de zeros na imagem, o que implica,
ao longo da operação de convolução, a redução das dimensões do
mapa de características em relação à imagem de entrada.
Opção
O preenchimento válido também é chamado de “sem
preenchimento”.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 17/67
Mesmo preenchimento (same
padding)
Este preenchimento garante que a camada de saída tenha o mesmo
tamanho que a camada de entrada.
Preenchimento completo (full
padding)
É o tipo de preenchimento que aumenta o tamanho da saída
adicionando zeros à borda da entrada.
Agora, podemos calcular as dimensões da saída, ou seja, do mapa de
características. A fórmula é dada por:
Em que:
 representa a dimensão largura (ou comprimento) da
imagem de entrada;
 representa a dimensão largura (ou comprimento) da
matriz de filtro (kernel);
 representa a dimensão largura (ou comprimento) do
preenchimento (padding);
 representa a dimensão largura (ou comprimento) do
passo (stride).
Vamos entender melhor com um exemplo:
O =
(I − K + 2P)
S
+ 1
 I 
K
P
S
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 18/67
Exemplo para dimensionar a matriz de saída.
Temos as seguintes dimensões:
Stride: 
Padding: 
Kernel: 
Imagem: 
Concluímos, portanto, que a dimensão horizontal da matriz resultante é
dada por:
Seguimos vendo outros hiperparâmetros:
Camadas e unidades ocultas: entre as camadas de
entrada e saída, podemos adicionar camadas e unidades
ocultas. Para encontrar a quantidade ideal de camadas e
unidades ocultas, precisamos realizar testes. Trabalhar
com uma quantidade inadequada pode reduzir a
capacidade da rede de fazer classificações corretas, ou
aumentar o custo computacional para treinar a rede.
Funções de ativação: como vimos, essas funções
introduzem não linearidade ao modelo. Ao final da
camada de convolução, normalmente, aplicamos a
função ReLU por produzir melhores resultados, mas
também podemos usar as funções sigmoide e tanh, por
Sh = 2, Sv = 2
Ph = 1, Pv = 1
Kh = 2, Kv = 2
Ih = 4, Iv = 4
oh =
(4 − 2 + 2)
2
+ 1 = 3
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 19/67
exemplo. Já na camada de saída do modelo, aplicamos a
função de ativação Softmax.
Camada dropout: é uma técnica de regularização usada
para aumentar a precisão da rede no processo de
validação. Isso implica que a rede aumente sua
capacidade de generalização, evitando a
superespecialização, que é o problema conhecido por
overfitting. A ideia é que, no processo de treinamento,
alguns nós serão “esquecidos”, ou seja, não serão
levados em consideração no processo de aprendizado.
Esse hiperparâmetro é indicado para redes de grandes
dimensões, pois o efeito esperado é que o modelo tenha
mais oportunidade de aprender representações
independentes.
Hiperparâmetros que determinam
o treinamento da rede
As redes CNN são utilizadas, principalmente, para
aplicações de visão computacional.
Isso significa que elas são treinadas para reconhecer padrões
complexos de imagens. Para poderem ser aplicadas com essa
finalidade, elas precisam passar por um processo de treinamento que
seja eficiente, que inclui os ajustes de diversos parâmetros, sendo os
mais comuns: taxa de aprendizagem, momentum, quantidade de
épocas, tamanho do lote e pesos iniciais para rede.
Vejamos, a seguir, detalhes sobre cada um deles.
Taxa de aprendizagem
Define a velocidade com que a rede faz a atualização dos seus
parâmetros. É um valor numérico pertencenteao conjunto dos números
reais positivos. Quando a taxa de aprendizagem é baixa, o processo de
aprendizagem é lento, porém o algoritmo de treinamento converge
suavemente. Por outro lado, quando a taxa de aprendizagem é alta, ela
acelera o aprendizado, mas o algoritmo de treinamento pode não
convergir.
A formulação matemática para atualização dos pesos sinápticos é dada
por:
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 20/67
Em que:
: representa o peso sináptico na iteração t;
: representa o peso sináptico na iteração t-1, ou
seja, é o peso para a conexão (i,j) na iteração anterior à
iteração t;
: representa o incremento do peso sináptico na
iteração t-1. Sendo que sua fórmula é dada por:
: é a função erro, ou seja, ela mede a diferença entre os
resultados esperados e obtidos para o conjunto de
treinamento;
: é a taxa de aprendizagem positiva e constante.
Momentum
É um valor numérico positivo. Ele ajuda a atualizar os pesos sinápticos
da rede fazendo uso das informações das iterações anteriores, como
uma maneira de prevenir que eles tenham grandes oscilações.
A fórmula para incremento dos pesos com o Momentum é dada por:
Sendo que é o Momentum. O valor usado na prática varia entre 0,5 e
0,9.
Quantidade de épocas
wtji = w
t−1
ji + Δw
t−1
ji
wtji
wt−1ji
Δwt−1ji
Δwt−1ji = η ∂E∂wji
E
η
Δwtji = η
∂E
∂wji
+ γΔwt−1ji
γ
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 21/67
É a quantidade de vezes que todos os dados de treinamento são
fornecidos para a rede durante o treinamento. Dependendo da
quantidade de épocas, podem ocorrer duas situações:
Under�tting
Expressão utilizada para
indicar que a rede não
foi capaz de extrair as
características dos
dados de treinamento.
Uma quantidade
pequena de épocas
pode ser insuficiente
para que a rede
aprenda, levando a uma
situação de underfitting.
Over�tting
Termo que indica uma
superespecialização da
rede para os dados de
treinamento, o que
significa que a rede está
muito ajustada para os
dados de treinamento,
mas não é capaz de
generalizar os
resultados.
A utilização de muitas
épocas no treinamento
pode causar a situação
de overfitting.
Tamanho do lote
Esse hiperparâmetro é mais conhecido pelo termo em inglês: batch size,
que define a quantidade de amostras que serão propagadas pela rede.
Por exemplo, imagine que tenhamos 1000 amostras de treinamento e
configuremos o batch size igual a 100. O algoritmo de treinamento
trabalhará com as primeiras 100 amostras do conjunto de dados de
treinamento e treinará a rede. Em seguida, processará as segundas 100
amostras e, novamente, treinará a rede. Esse processo será repetido até
que todos os dados de treinamento sejam processados pela rede. Ainda
nesse exemplo, devemos observar que, para completar uma época com
o batch size igual a 100, o algoritmo precisa de dez iterações.
Pesos iniciais para rede
A rede precisa de pesos iniciais para começar a ser treinada. E essa
escolha pode influenciar a convergência do algoritmo de treinamento.
No entanto, é difícil definir qual a melhor estratégia. O mais comum é
escolher um esquema para obter valores iniciais de acordo com a
função de ativação usada em cada camada. Normalmente, é aplicada a
distribuição uniforme.

14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 22/67
Treinamento da rede CNN
O treinamento de uma rede neural, geralmente, é um processo que tem
como objetivo fazer com que a rede extraia informações dos dados de
treinamento e, desse modo, generalize seus resultados. No caso das
redes CNN, para atingir esse objetivo, o treinamento precisa encontrar:
Os kernels das camadas de convolução, ou seja, o
resultado da aplicação dos filtros de convolução nas
entradas de dados e das funções de ativação –
normalmente, é a função ReLU, como já mencionamos.
Os pesos sinápticos nas camadas totalmente conectadas
que minimizam as diferenças entre as previsões de saída
– que são os dados rotulados – e os resultados obtidos
para um conjunto de dados de treinamento.
O método mais utilizado para treinar redes neurais é o algoritmo de
retropropagação de erro, mais conhecido pelo termo em inglês
backpropagation. Esse algoritmo consiste em duas etapas distintas:
Etapa de avanço
Nesta etapa, as ativações são propagadas da camada de entrada para a
camada de saída.
Etapa de retrocesso
Nesta etapa, os pesos sinápticos são atualizados. O erro (a diferença)
entre os valores obtidos e o de referência da camada de saída é
propagado para trás.
Comentário
Uma informação interessante a respeito do valor de referência é que ele
pode receber outros nomes: valor nominal e valor alvo.
Função de perda
A função de perda é usada para medir a compatibilidade entre as
previsões de saída da rede e os valores obtidos. Ela também é
conhecida como função de custo. A ideia básica é bem simples:
Quanto menor for o erro, significa que a rede está bem
treinada para o conjunto de treinamento.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 23/67
Infelizmente, isso não significa que a qualidade de generalização da
rede é garantida.
Mas por que isso acontece?
Resposta
Porque podem ocorrer diversos problemas com os dados de
treinamento, levando ao overfitting.
Devemos lembrar, ainda, que a função de perda é aplicada depois da
função de ativação da camada de saída. Como aplicamos a função
Softmax, os valores de saída estarão entre 0 e 1.
As funções de perda são escolhidas conforme o seu contexto de
aplicação. Veja a seguir os dois casos mais comuns:
A entropia cruzada para classi�cação
multiclasse
Cuja fórmula é dada por:
O erro quadrático médio para regressão de
valores contínuos
Cuja fórmula é dada por:
Sendo MSE um acrônimo para o nome em inglês do erro quadrático
médio: mean square error. Além disso, , e são definidos
H(y, ŷ) = −
1
N
N
∑
i=1
yi ⋅ log (ŷi)
MSE(y, ŷ) =
1
N
N
∑
i=1
(yi − ŷi)
2
ŷ γ N
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 24/67
exatamente como no caso do erro de entropia cruzada.
Algoritmos de otimização
No treinamento da rede, precisamos aplicar um algoritmo de otimização
para minimizar a função de erro. Entre os algoritmos de otimização mais
comuns, estão:
Aplicações das redes CNN
A combinação de todos os aspectos que apresentamos até agora é a
base para o sucesso da aplicação das redes de convolução para tratar
problemas de visão computacional.
Podemos encontrar, então, exemplos de aplicações de redes CNN para
os seguintes domínios de visão computacional:
Classi�cação
 Gradiente de descida
É o método que calcula o gradiente da função de
custo e o utiliza para atualizar os pesos sinápticos
da rede.
 Gradiente de descida estocástico
O método é semelhante ao gradiente de descida
que usa apenas um subconjunto dos exemplos de
treinamento de cada vez.
 Gradiente acelerado de Nesterov
Este método dá um “salto” na direção do gradiente
acumulado anterior e depois faz uma correção
antes de atualizar os pesos.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 25/67
Destaca categorias de objetos em uma imagem.
Localização
Destaca o objeto alvo da imagem dentro de uma moldura.
Detecção
Faz a localização de múltiplos objetos em uma imagem.
Segmentação
Classifica e localiza o objeto de interesse dentro da imagem.
Sabemos que as redes CNN são aplicações de
aprendizado supervisionado, portanto, a classificação
atribui um objeto de entrada a uma categoria das que
foram fornecidas como alvo (ou rótulo) para a rede.
Fundamentos das redes de
convolução
No vídeo a seguir, abordamos os aspectos fundamentais das redesde
convolução.
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1

14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 26/67
As redes neurais convolucionais são um exemplo da aplicação de
redes neurais para aprendizado profundo. Elas são utilizadas,
especialmente, para aplicações de visão computacional. Em
relação ao princípio de funcionamento das redes convolucionais,
selecione a opção correta.
Parabéns! A alternativa A está correta.
Os neurônios do córtex visual têm a capacidade de reconhecer
imagens através da combinação entre eles. Os pesquisadores David
H. Huber e Torsten Wiesel observaram em alguns animais que os
neurônios responsáveis pelo campo de visão reagiam de forma
especializada para determinadas características das imagens.
Questão 2
As redes neurais convolucionais são muito conhecidas. Isso se
justifica devido ao seu sucesso para resolver muitas situações
práticas, como o reconhecimento de imagens. Por outro lado,
implementar uma rede neural convolucional implica ajuste de
diversos hiperparâmetros. Em relação aos hiperparâmetros das
redes convolucionais, selecione a opção correta.
A
São baseadas no comportamento dos neurônios do
córtex visual de se combinarem para visualizar uma
imagem.
B
São baseadas nos neurônios artificiais, consistindo
no uso de mais camadas ocultas.
C
As redes convolucionais foram desenvolvidas no
ano de 1958 por pesquisadores que realizavam
trabalhos sobre a arquitetura do córtex visual.
D
São abstrações da arquitetura do córtex visual dos
animais.
E
São representações do comportamento
probabilístico das redes neurais artificiais que,
quando aplicadas para reconhecimento de imagens,
são chamadas de redes convolucionais.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 27/67
Parabéns! A alternativa B está correta.
Existem duas categorias para os hiperparâmetros: os estruturais e
os de treinamento. Os estruturais dão forma à arquitetura da rede,
enquanto os hiperparâmetros de treinamento são relacionados às
características dos algoritmos de aprendizado. A camada dropout
faz parte da categoria dos hiperparâmetros estruturais. Ela é
aplicada como uma tentativa de prevenir o overfitting da rede.
A
O batch size é usado para limitar a quantidade de
iterações que o algoritmo de treinamento vai utilizar
para treinar a rede.
B
A camada dropout é usada para prevenir que a rede
fique superespecializada nos dados de treinamento.
C
Os hiperparâmetros são limitados à camada
completamente conectada, uma vez que é nela que
ficam os pesos sinápticos.
D
Os filtros de convolução são utilizados para evitar a
sobreposição de informações dos dados de
entrada.
E
O hiperparâmetro de tipo de preenchimento é
utilizado para preservar as características dos dados
de entrada.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 28/67
2 - Arquiteturas
de redes convolucionais
Ao �nal do módulo, você será capaz de distinguir as principais
variações de arquiteturas de redes convolucionais e suas aplicações.
Ligando os pontos
Você já ouviu falar sobre arquitetura de rede neural? Sabia que essas
arquiteturas são construídas para melhorar o tratamento de um
problema? Para respondermos a essas perguntas, vamos analisar
algumas situações práticas.
A Estrutura Neural S.A. (empresa fictícia) trabalha em um ramo muito
específico: elaborar e testar a eficiência das arquiteturas de redes
neurais. Essa área de atuação surgiu de maneira bastante curiosa. O
fundador da empresa trabalhava como professor universitário. Uma de
suas atividades era orientar os estudantes na condução dos trabalhos
de projetos finais de curso. Um dos assuntos recorrentes desses
projetos era aplicação de redes neurais para visão computacional. E o
tipo de rede mais comum era a rede neural de convolução, mais
conhecida como rede CNN.
O professor observou que os resultados obtidos por essas redes eram
muito influenciados pela forma como eram estruturadas e pelos valores
dados aos seus parâmetros. Esse processo sempre foi muito complexo,
pois possui muitos detalhes e exige bastante experimentação. Então,
depois de ver esse cenário se repetir continuamente, ele teve a seguinte
percepção: “da mesma forma que essas dificuldades ocorrem com
meus alunos e alunas de projeto final, também deve ocorrer com muitas
empresas que utilizam essas redes para resolver problemas de visão
computacional”.
A conclusão do professor estava certa, pois é bastante comum que as
pessoas utilizem funções de bibliotecas como caixas pretas,
especialmente, para resolver problemas do dia a dia. Obviamente, é
importante usar os recursos oferecidos pelas bibliotecas, mas, no caso
das redes neurais, é essencial entender como as engrenagens
funcionam. E foi isso que o professor fez. Ele elaborou um processo
para arquitetar, parametrizar e testar as redes CNNs para trabalhar com
problemas práticos relacionados às empresas interessadas em
aplicações de visão computacional. Hoje em dia, a Estrutura Neural S.A.
tem um portfólio de clientes engajados e possui no seu corpo funcional
muitos dos ex-orientandos do professor.
E você, o que achou do caminho que o professor trilhou até fundar a
Estrutura Neural S.A.?
Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos
ligar esses pontos?
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 29/67
Questão 1
Como visto, a arquitetura de uma rede CNN faz toda a diferença
sobre o desempenho dela. Pensando na importância da arquitetura
para essas redes e considerando o texto, qual a oportunidade de
negócio que você vislumbra para a Estrutura Neural S.A. em relação
às redes CNNs?
Parabéns! A alternativa B está correta.
A oportunidade que a Estrutura Neural S.A. encontrou foi a de
melhorar a qualidade das redes CNNs e aperfeiçoar os testes para
construir parametrizações eficientes. Isso é fundamental, pois
essas redes são muito sensíveis à forma como são estruturadas e
aos valores iniciais de seus parâmetros.
Questão 2
Como visto, o processo de criação da Estrutura Neural S.A. não foi
trivial, e sim foi consistente. Na sua opinião como membro da
equipe da referida empresa, qual foi a grande ideia que o fundador
teve?
A Realizar aplicações de visão computacional.
B
Desenvolver arquiteturas e parametrizações
eficientes.
C
Agregar valor para o negócio dos clientes através de
técnicas de inteligência artificial.
D Encontrar novas oportunidades de negócio.
E
Desenvolver projetos de pesquisa em parceria com
instituições de ensino.
A
As redes CNNs são excelentes para aplicações de
visão computacional.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 30/67
Parabéns! A alternativa E está correta.
O fundador da empresa era um professor que trabalhava com as
redes CNN com objetivos acadêmicos, mas, ainda assim, percebeu
que as dificuldades pelas quais passava não eram triviais e que era
muito provável que outros também as tivesse.
Questão 3
Considere o seguinte cenário: você foi um dos orientandos do fundador
da Estrutura Neural S.A. e, ao desenvolver o seu projeto, percebeu a
oportunidade de acrescentar uma solução que pode ser útil para a
empresa do professor. Nesse cenário, você faria para mostrar o
potencial do seu projeto?
Digite sua resposta aqui
Chave de resposta
Um bom projeto passa por diversas etapas, sendo a primeira delas
uma boa documentação. A ideia do que o projeto faz e como pode
ser útil precisa estar bem documentada, para que a pessoa que vai
avaliá-lo possa entender bem. No caso de uma rede CNN, é
fundamental, além da documentação, apresentar exemplos
práticos que demonstre a eficiência do projeto.B
As redes CNNs são úteis para questões de
segurança.
C
Uma das aplicações das redes CNN é para
identificação de objetos.
D
Muitas empresas ainda vão investir no uso de redes
CNNs, portanto é muito importante ser pioneiro.
E
Que outros tinham as mesmas dificuldades para
construir redes CNN.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 31/67
Arquiteturas de redes
neurais de convolução
A arquitetura básica da rede neural de convolução (CNN) é composta
por várias camadas:
Camadas de convolução;
Camadas de pooling;
Camadas totalmente conectadas.
Vejamos a representação geral da arquitetura da CNN.
Esquema conceitual de uma CNN.
As camadas de convolução, normalmente, são seguidas por uma
camada ReLU, ou seja, a função de ativação ReLU é aplicada para cada
entrada resultante da aplicação da operação de convolução para a
entrada de dados.
Em seguida, vem a camada de pooling, com a aplicação de uma função
de max pooling, ou average pooling.
Na sequência, é aplicada outra camada de convolução com aplicação
da função de ativação e, depois, outra camada de pooling.
Veja, a seguir, os detalhes de cada etapa de processamento.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 32/67
Banco de dados de dígitos
manuscritos
Um dos fatores que influenciaram o avanço das arquiteturas das redes
CNN foi a disponibilidade de banco de dados, no qual os pesquisadores
pudessem realizar testes e comparar resultados de modo confiável.
Uma dessas bases de dados muito utilizadas para aplicações de visão
computacional é a MNIST (THE MNIST DATABASE).
Vejamos um exemplo do banco de dados MNIST.
 A imagem diminui à medida que é processada pela
rede
 No final da rede, são adicionadas uma ou mais
camadas totalmente conectadas, em que os pesos
sinápticos são calculados.
 Ao final de cada camada totalmente conectada
estão as funções de ativação, geralmente, as
ReLUs.
 Por fim, a camada final produz a predição com a
aplicação de uma função de ativação que, nesse
caso, comumente é a função Softmax.
 Por fim, a camada final produz a predição com a
aplicação de uma função de ativação que, nesse
caso, usualmente é a função Softmax.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 33/67
Exemplo de banco de dados MNIST.
A MNIST é uma base formada por um conjunto de dados
de imagens em tons de cinza de caracteres numéricos
escritos à mão.
Cada imagem é formada por um caractere no centro com 28 × 28 pixels.
O conjunto de dados possui um total de 70.000 imagens que cobrem os
dígitos de 0 a 9. Desse total, 50.000 imagens são usadas para
treinamento, 10.000 para teste e 10.000 para validação.
Dica
Devido à padronização de como os dados são armazenados, ou seja,
tamanhos constantes, escalas e escrita das imagens, esse banco de
dados é um ótimo recurso para estudar e testar algoritmos de
aprendizado de máquina, em especial, os que utilizam redes CNN.
Variações da arquitetura
das redes CNN
Ao longo dos anos, as arquiteturas das redes CNN evoluíram bastante.
Além de muita pesquisa sobre o assunto, o que ajudou bastante nessa
evolução foram competições como o ILSVRC (ImageNet Large Scale
Visual Recognition Challenge), que faz a avaliação dos algoritmos para
detecção de objetos e classificação de imagens (IMAGENET). Vamos
explorar algumas dessas arquiteturas para entendermos suas variações
e aplicações.
Especificamente, vamos abordar as arquiteturas:
LeNet-5, AlexNet, GoogLeNet, VGGNet, ResNet, Xception e SENet.
LeNet-5
A arquitetura LeNet-5 foi desenvolvida por Yann LeCun em 1998. Ela faz
a classificação de dígitos e foi aplicada para reconhecer números
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 34/67
escritos à mão em cheques digitalizados em imagens de entrada em
escala de cinza de 32 × 32 pixels. Essa arquitetura é composta pelas
camadas mostradas na tabela a seguir.
Número da camada
Dimensões da
entrada de dados
Dimensões do
kernel
1 32 × 32 -
2 28 × 28 5 × 5
3 14 × 14 2 × 2
4 10 × 10 5 × 5
5 5 × 5 2 × 2
6 1 × 1 5 × 5
7 84 -
8 10 -
Tabela: Arquitetura da LeNet-5.
Adaptada de Lecun et al., 1998.
Os dados da tabela referem-se às imagens da base de dados MNIST.
Devemos lembrar que as imagens do MNIST possuem 28 × 28 pixels,
então, para aplicar a LeNet-5, elas são preenchidas com zeros até 32 ×
32 pixels, que é o que ocorre na Camada 1. Além disso, elas precisam
ser normalizadas. A normalização consiste em transformar os valores
de entrada para uma escala de números entre 0 e 1 que, no caso da
base MNIST, basta dividir os valores por 255, uma vez que as imagens
estão em tons de cinza. Em seguida, os dados são fornecidos para a
rede. Nas próximas etapas, a LeNet-5 não faz uso nenhum de
preenchimento e, por isso, o tamanho da imagem diminui à medida que
avança pela rede.
De forma resumida, as demais camadas (de 2 a 8) têm a seguintes
funções:
 Camada 2
Camada de convolução com seis kernels de
convolução de dimensões 5 × 5, e as dimensões do
d t í ti ã d 28 28
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 35/67
mapa de características são de 28 × 28.
 Camada 3
Camada de agrupamento (pooling) que faz a
subamostragem dos dados de entrada por meio do
método Average pooling.
 Camada 4
Camada de convolução que abrange dezesseis
kernels de convolução de dimensões 5 × 5.
 Camada 5
Semelhante à camada 3 com os kernels de
dimensões 2 × 2 e uma saída de dezesseis mapas
de características 5 × 5.
 Camada 6
Também é uma camada de convolução com cento
e vinte kernels de convolução de dimensões 5 × 5.
 Camada 7
É uma camada totalmente conectada.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 36/67
Devemos observar ainda mais alguns pontos sobre essa arquitetura
LeNet-5:
Das camadas de 2 a 8, as funções de ativação aplicadas são do
tipo ReLU;
Na camada de saída, é aplicada a função de ativação Softmax.
AlexNet
A arquitetura AlexNet foi desenvolvida por Alex Krizhevsky, Ilya
Sutskever e Geoffrey Hinton, e venceu, em 2012, o desafio ImageNet
ILSVRC, obtendo uma taxa de erro de 17%, enquanto o segundo lugar
obteve uma taxa de 26%.
Comentário
Em muitos aspectos, ela é parecida com a LeNet-5. Entre as diferenças,
estão o fato de a AlexNet ser mais profunda – ter mais camadas ocultas
– e empilhar camadas convolucionais diretamente umas sobre as
outras.
Na tabela a seguir, podemos ver a arquitetura da AlexNet.
Número da camada
Dimensões do
kernel
Stride
1 - -
2 11 × 11 4
3 3 × 3 2
4 5 × 5 1
5 3 × 3 2
6 3 × 3 1
7 3 × 3 1
 Camada 8
É a camada de saída também do tipo totalmente
conectada.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 37/67
Número da camada
Dimensões do
kernel
Stride
8 3 × 3 1
9 - -
10 - -
11 - -
Tabela: Arquitetura da AlexNet.
Adaptada de Krizhevsky et al., 2012.
A arquitetura da AlexNet consiste em:
Camadas de convolução de dimensões 11 × 11, 5 × 5, 3 × 3;
Camadas com pooling máximo;
Camadas com dropout;
Aumento de dados;
Funções de ativação ReLU após cada camada convolucional e
totalmente conectada;
Método de otimização SGD (Gradiente de Descida Estocástico) com
momentum.
Comentário
Uma rede semelhante à AlexNet, chamada ZF Net, foi desenvolvida por
Matthew Zeiler e Rob Fergus, e venceu o desafio ILSVRC de 2013.
Basicamente, ela é AlexNet com alguns hiperparâmetros ajustados,
como:
Quantidade de mapas de características;
Dimensões do kernel etc.
GoogLeNet
Na competição ILSVRC 2014, o vencedor foi GoogLeNet. Essa
arquitetura também é conhecida como Inception V1 do Google.
Desenvolvidapor Christian Szegedy, obteve um desempenho muito
próximo do nível humano, com uma taxa de erro abaixo de 6,67%.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 38/67
Um dos fatores que influenciou o ótimo desempenho da rede
GoogLeNet foi o fato de ser muito mais profunda do que as CNN
anteriores, o que possibilitou a utilização mais eficiente de parâmetros
por meio de sub-redes chamadas de módulos de iniciação – mais
conhecidos pelo termo original em inglês, inception modules.
Vejamos a arquitetura básica de um módulo de iniciação na imagem a
seguir.
Módulo de iniciação.
Atenção
A notação “3 × 3” significa que a camada usa um kernel de dimensões 3
× 3. Todas as camadas convolucionais usam a função de ativação
ReLU.
Precisamos observar algumas questões importantes nessa arquitetura:
Ponto 1
No segundo conjunto de camadas convolucionais, a rede usa kernels de
dimensões diferentes: 1 × 1, 3 × 3 e 5 × 5. O objetivo é que eles capturem
padrões em escalas diferentes.
Ponto 2
As camadas utilizam o tipo de preenchimento (padding) igual a “mesmo”
e stride igual a 1. Isso significa que todas as suas saídas têm as
mesmas dimensões de suas entradas.
VGGNet
A VGGNet é um modelo de rede neural convolucional proposto por
Simonyan e Zisserman. Essa arquitetura obteve o segundo lugar na
competição ILSVRC 2014 e alcançou a precisão de 92,7% no ImageNet.
Sua arquitetura é considerada muito simples, seguindo padrão com uma
sequência com 2 ou 3 camadas convolucionais, e uma camada de
aglomeração (pooling) com um total de 16 camadas convolucionais
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 39/67
mais 2 camadas ocultas completamente conectadas e a camada de
saída.
A VGGNet utiliza muitos filtros, mas apenas com
dimensões 3 × 3.
ResNet
No desafio ILSVRC 2015, a ResNet, ou, ainda, rede residual, foi a grande
vencedora. Com isso, foi dado mais um passo na evolução das redes
CNN. Ela foi desenvolvida por pesquisadores da Microsoft e obteve uma
taxa de erro abaixo de 3,6%, usando uma CNN composta por 152
camadas. Com essa taxa de erro tão baixa, ficou confirmada uma
tendência geral: cada vez mais, os modelos de sucesso possuem
menos parâmetros e mais camadas.
Comentário
A principal característica dessa rede são as conexões de salto —
também chamadas de conexões de atalho — que compõem os blocos
residuais. A ideia é simples: o sinal que entra em uma camada também
é adicionado à saída de uma camada localizada um pouco mais acima
na pilha.
Vejamos a seguir um diagrama de um bloco residual.
Bloco residual.
A conexão de salto previne que alguma camada
prejudique o desempenho da arquitetura.
Xception
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 40/67
O Xception é uma evolução da arquitetura GoogLeNet. Ele explora a
ideia de convolução separável em profundidade. Desenvolvida por
François Chollet, a arquitetura Xception possui 36 camadas
convolucionais que formam a base de extração de características da
rede. Essas camadas convolucionais, por sua vez, são estruturadas em
14 módulos, todos com conexões residuais lineares ao seu redor, exceto
o primeiro e o último módulos.
Resumindo
O Xception é uma arquitetura baseada no empilhamento linear de
camadas de convolução separáveis em profundidade com conexões
residuais.
SENet
A arquitetura que venceu o desafio ILSVRC 2017, obtendo uma taxa de
erro de 2,25%, foi a SENet – acrônimo do termo: Squeeze-and-Excitation
Network, que em tradução literal significa “rede de compressão e
excitação”. A SENet faz uma extensão das arquiteturas existentes, como
as das redes ResNets.
A ideia principal da arquitetura dela é adicionar parâmetros a cada canal
de um bloco convolucional, a fim de que a rede possa fazer ajustes para
ponderar, de forma adaptativa, cada mapa de características.
Curiosidade
Os blocos convolucionais da arquitetura SENet são chamados de
“blocos SE”, sendo S = Squeeze e E = Excitation.
Modelos pré-treinados para
transferência de
aprendizado
Vimos vários exemplos de arquiteturas de redes convolucionais, sendo
impressionante notarmos como elas continuam evoluindo. Basta
acompanharmos algumas competições, como a do ILSVRC
(IMAGENET).
Um ponto bastante interessante do ponto de vista prático
é que podemos utilizar redes pré-treinadas nessas
arquiteturas para desenvolvermos nossos projetos. É o
que chamamos de transferência de aprendizado.
Isso não significa que não vamos precisar treinar nossos modelos, mas
facilita bastante a etapa inicial do projeto. Em especial, quando
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 41/67
trabalhamos com ciclos ágeis de desenvolvimento como no RAD (Rapid
Application Development), no qual temos que fazer entregas com curtos
ciclos de desenvolvimento.
As principais arquiteturas
de redes de convolução
No vídeo a seguir, apresentamos as principais arquiteturas das redes de
convolução, com destaque para a rede LeNet-5.
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
As redes neurais convolucionais (CNN) são compostas por diversas
camadas. Essas camadas têm finalidades distintas e o modo como
podem ser estruturadas caracteriza a arquitetura de uma rede CNN.
Em relação à arquiteturas das redes CNN, selecione a opção
correta.

A
As camadas têm objetivos distintos, mas podem ser
combinadas e mudar sua funcionalidade básica.
B
As camadas podem ser organizadas de diferentes
formas, inclusive camadas do mesmo tipo podem
aparecer mais de uma vez.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 42/67
Parabéns! A alternativa B está correta.
A arquitetura das redes CNN possuem camadas de convolução, de
pooling e totalmente conectadas, além das camadas de entrada e
de saída. Essas camadas têm objetivos distintos e bem
determinados e podem aparecer diversas vezes ao longo do
modelo.
Questão 2
Cada vez mais a demanda por aplicações de visão computacional
aumenta, como nas áreas de segurança, saúde e entretenimento.
As redes neurais de convolução (CNN) são aplicadas com sucesso,
especialmente para visão computacional, e possuem diversas
arquiteturas que estão em constante evolução. Em relação às
arquiteturas das redes CNN, selecione a opção correta.
C A arquitetura das redes convolucionais é dinâmica,
o que siginifica que as camadas podem mudar as
ligações entre si durante a execução.
D
O treinamento das redes neurais CNN pode reduzir o
tamanho dos dados de uma entrada, por isso é
necessário aplicar a camada de preenchimento.
E
A quantidade de camadas de uma arquitetura de
rede CNN é limitada a oito níveis, pois, do contrário,
seria necessário muito tempo para serem treinadas.
A
As arquiteturas das redes de convolução dependem
de informações dos dados de entrada, nesse
sentido, as competições contribuem para a
padronização desses dados.
B
As arquiteturas das redes neurais de convolução
têm evoluído para modelos de camadas lineares,
uma vez que são mais semelhantes com o córtex
visual.
C
As redes de convolução podem ter diferentes
arquiteturas, mas todas precisam utilizar a função
de ativação ReLU na camada de convolução.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 43/67
Parabéns! A alternativa D está correta.
As redes de convolução são bastante conhecidas como modelos de
aprendizado profundo devido ao seu sucesso para aplicações de
visão computacional. Os desafios organizados sobre essa área
ajudam a divulgar novas arquiteturas e a atrair profissionais que, ao
longo dos anos, têm conseguido melhorar a taxa de acerto dos
modelos.
3 - Classi�cação de imagenscom rede
convolucional
Ao �nal deste módulo, você será capaz de empregar rede
convolucional para classi�cação de imagens.
Ligando os pontos
Você sabia que a rede de convolução é usada com sucesso para
problemas de visão computacional? Sabe que existem bibliotecas que
D
As competições de visão computacional são um
dos fatores que auxiliam na padronização de bases
de dados que são usadas para testar as arquiteturas
das redes CNN.
E
Um dos importantes fatores que influenciaram o
avanço das arquiteturas das redes CNN foi a
limitação de camadas ocultas.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 44/67
podem ajudar bastante para construção de soluções práticas? Para
entendermos sobre os conceitos na prática, vamos analisar uma
situação.
A Enxergue Mais S.A. (empresa fictícia) utiliza redes neurais de
convolução (CNNs) como a base de suas soluções de visão
computacional. Essas redes fazem parte de uma área conhecida como
aprendizado profundo (deep learning). O portfólio de clientes da
empresa é formado, principalmente, por companhias que possuem lojas
físicas que atuam na área de vendas de vestuário, acessórios e
utensílios para casa e escritório. Os clientes da Enxergue Mais utilizam
as aplicações dela de um modo muito interessante.
Quando o público-alvo da Enxergue Mais entra nas lojas, o sistema
identifica e classifica cada uma das peças vestidas tanto pelos clientes
e quanto por quem os acompanha. Em seguida, traça um perfil dessas
pessoas e constrói uma lista de opções de peças que melhor se
adequam a elas.
O próximo passo é oferecer para esses clientes ofertas personalizadas.
Obviamente, isso não extingue o processo de um cliente experimentar
uma roupa ou um acessório, mas, agora, isso ocorre de um modo que
aumenta as chances de satisfazer o cliente e concretizar as vendas.
A escolha da Enxergue Mais pelas redes CNNs foi realizada devido a
alguns motivos, entre os quais estão:
O fato conhecido de que essas redes têm um excelente
desempenho para aplicações de visão computacional.
A flexibilidade da estrutura da rede que permite que ela possa
produzir respostas muito rapidamente.
A convicção dos tomadores de decisão da empresa que utilizar as
redes CNNs pode ajudar a empresa a expandir sua área de
atuação.
Um dos grandes investimentos atualmente da Enxergue Mais é a
captação de pessoas ainda nas salas de aula para aprender como seus
sistemas funcionam e, claro, colaborar para a expansão da empresa.
E você, o que pensa sobre os planos de expansão da Enxergue Mais?
Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos
ligar esses pontos?
Questão 1
Como visto, a Enxergue Mais S.A. utiliza as redes CNNs para
construir suas soluções. Imagine que você é um integrante da
equipe de engenharia de software dessa empresa. Como justificaria
o motivo dessa escolha?
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 45/67
Parabéns! A alternativa E está correta.
A escolha da Enxergue Mais S.A. pelas redes CNNs deve-se ao fato
de que elas funcionam bem para aplicações de visão
computacional e são suficientemente adaptáveis para situações
práticas que fazem parte do negócio da empresa.
Questão 2
Como visto, o tipo de serviço oferecido pela Enxergue Mais S.A. é
muito interessante, mas bastante complexo de ser realizado. Como
você justificaria o emprego das redes CNNs na identificação das
roupas que as pessoas estão usando?
A As redes CNNs são o único tipo de modelo
computacional que pode ser aplicado para
problemas de visão computacional.
B
Para se posicionar no mercado como uma empresa
inovadora.
C
Por ser o modelo computacional que as pessoas da
empresa dominam.
D
Devido à grande popularização dos métodos de
aprendizado de máquina.
E
As redes CNNs são adequadas para visão
computacional e oferecem flexibilidade.
A
As redes CNNs utilizam um grande banco de dados
de imagens das roupas que os clientes possam vir a
utilizar.
B
As redes CNNs precisam ser treinadas para
reconhecer características que auxiliem na
identificação das roupas.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 46/67
Parabéns! A alternativa B está correta.
Semelhante ao que ocorre com as demais redes neurais, as redes
CNNs devem ser treinadas com vários tipos de imagens a respeito
das possíveis roupas que os clientes podem utilizar. De fato, essa
etapa de treinamento foi um grande desafio enfrentado pela
Enxergue Mais S.A.
Questão 3
Considere o seguinte cenário: você foi contratado pela Enxergue Mais
S.A. para encontrar novas aplicações das redes CNNs e, assim, auxiliar a
empresa a expandir os negócios dela. Com base em sua experiência,
como você cumpriria essa missão?
Digite sua resposta aqui
Chave de resposta
A Enxergue Mais S.A. possui excelência na identificação de peças
de vestuário. Mais do que isso, ela identifica as peças enquanto os
clientes as vestem, o que torna a situação muito mais complexa.
Portanto, a proposta de expansão dos negócios tem de estar
relacionada às competências que a empresa já possui e manter o
mesmo padrão de qualidade. Um exemplo de área de atuação é na
C
Através de técnicas de processamento de imagens
que permitem destacar características específicas
das roupas dos clientes.
D
As redes CNNs utilizam elementos de uma base
histórica de imagens dos clientes para traçar perfis.
E
As redes CNNs são utilizadas em conjunto com
especialistas que identificam as roupas dos clientes
e auxiliam na classificação do perfil deles.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 47/67
de segurança patrimonial, que poderia ajudar a identificar objetos
usados por pessoas mal-intencionadas para cometer crimes.
Redes CNN na prática
Como vimos, as redes de convolução são excelentes para aplicações
em projetos de visão computacional. Para podermos desenvolver
projetos com elas, temos à disposição alguns recursos computacionais
que nos ajudam bastante nesse processo.
Aqui, vamos desenvolver um exemplo completo da arquitetura LeNet-5
usando, para isso, a linguagem de programação Python e o framework
TensorFlow.
Python é uma linguagem de uso geral bastante utilizada
para aplicações de Ciência de Dados e Aprendizado de
Máquina.
Essa linguagem tem muita documentação disponível na internet e
diversas comunidades ativas que participam de fóruns onde
compartilham informações. Outro fator muito atrativo do Python é a
disponibilidade de plataformas on-line como o Google Colab, que facilita
muito o trabalho, pois nos poupa de fazer configurações locais que,
normalmente, são trabalhosas.
Junto com o Python, vamos utilizar o framework TensorFlow, muito
utilizado para a criação de aplicações de aprendizado de máquina, pois
disponibiliza diversos recursos, algoritmos e funções que nos ajudam a
colocar foco no projeto e nos libera de preocupações de como
implementar detalhes de tratamento de dados e dos algoritmos.
Google Colab
Plataforma que utilizamos para desenvolver o nosso projeto.
Atenção
O Tensorflow não fará escolhas do projeto por nós! Para implementar
um projeto de rede de convolução, precisamos ter conhecimento sobre
as camadas, os hiperparâmetros e toda a teoria que estudamos.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 48/67
Implementação da
arquitetura LeNet-5
Agora, vamos estudar o passo a passo de uma implementação da
arquitetura LeNet-5, aplicada a reconhecer imagens na base de dados
MNIST, que é uma das mais utilizadas para testes de algoritmos de
aprendizado de máquina.
Comentário
Como estamos utilizando o Google Colab, o projeto está dividido em
blocos, o que facilita a compreensão de cada etapa.
Na nossa implementação,optamos por importar as bibliotecas nos
blocos de programação em que elas são necessárias, pois fica mais
claro entendermos a necessidade de utilizá-las.
O projeto está dividido da seguinte maneira:
Carregamento dos dados
Fazemos a importação dos dados da base MNIST.
Visualização dos dados
Apresentamos as imagens que carregamos no passo anterior.
Separação dos conjuntos de dados
Fazemos a divisão dos dados que serão usados para treinamento,
validação e teste do modelo.
Preenchimento (padding)
Fazemos ajustes no preenchimento dos dados.
Normalização dos dados
É um ajuste importante para evitar erros.
Arquitetura LeNet
É a implementação da arquitetura, conforme a especificação.
Visualização da arquitetura do
modelo
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 49/67
Apresentamos a arquitetura implementada.
Treinamento do modelo
Fazemos a implementação do treinamento do modelo com os dados
que fornecemos.
Avaliação do modelo
Verificamos a qualidade do modelo.
Predição de dados
Aplicamos o modelo na prática para fazer classificações.
Recuperação do modelo
Recuperamos o modelo que salvamos depois do treinamento.
Impressão do treinamento
Mostramos como a função de erro se comportou ao longo do
treinamento.
Carregamento dos dados
A base de dados MNIST já está disponível no Tensorflow, inclusive, com
a separação dos dados para treinamento e teste. O que precisamos é
importar o Tensorflow e, depois, carregar os dados.
O código que implementamos para visualização dos dados é expresso
por:
Python 
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 50/67
Perceba que, quando carregamos os dados, temos dois pares
ordenados: um de treinamento e outro de testes. Outro ponto a se
observar é que as variáveis “x_treino” e “x_teste” se referem aos dados
das imagens, enquanto as variáveis “y_treino” e “y_teste” se referem
aos rótulos das variáveis.
Visualização dos dados
Agora que já temos nossos dados carregados na memória, podemos
visualizá-los para verificar se tudo aconteceu corretamente até
determinado momento. Para isso, vamos utilizar a biblioteca
“matplotlib.pyplot” para imprimir os dados.
O código que implementamos para visualização dos dados é fornecido
por:
Python 
Logo no início do código, importamos a biblioteca “matplotlib.pyplot”.
Em seguida, usamos um laço para imprimir os cinco primeiros registros
do conjunto de dados de treinamento.
Veja a seguir a saída do programa, onde são apresentados o rótulo e a
imagem.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 51/67
Cinco registros da base de treinamento.
Separação dos conjuntos de dados
O próximo passo consiste em organizar os dados em três subconjuntos.
Veja a seguir quais são eles.
Dados de treinamento
São usados para o modelo extrair as características dos dados e fazer
generalizações.
Dados de validação
São usados (ainda na fase de treinamento) para que o modelo possa se
ajustar.
Dados de testes
São utiizados para verificarmos a qualidade do modelo para fazer
predições.
O código para separação dos conjuntos de dados é fornecido por:
Python 
Logo no início do código, importamos o pacote “numpy” que faz a
manipulação de vetores. A base MNIST possui um total de 70.000
registros, sendo que 60.000 são separados para treinamento e 10.000
para testes. Aqui, nós separamos os dados de treinamento em duas
partes: 55.000 registros para treinamento e 5.000 para validação do
modelo.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 52/67
O resultado da execução do código é:
Formato da Imagem: (28, 28, 1);
Conjunto de Treinamento: 55000 registros;
Conjunto de Validação: 5000 registros;
Conjunto de Testes: 10000 registros.
Preenchimento (padding) dos
dados de entrada
Agora, precisamos fazer um ajuste nos dados de entrada. A camada de
entrada da arquitetura LeNet-5 consiste em imagens com dimensões de
32 × 32. Como vimos da execução do bloco anterior, as imagens do
MNIST têm dimensões 28 × 28.
Então, para aplicar a LeNet-5, precisamos preencher a entrada com
zeros (0) a fim de torná-la 32 × 32. Para isso, vamos usar a função “pad”
da biblioteca numpy.
O código para preenchimento dos dados fica assim:
Python 
Veja a seguir como é dado o resultado da execução do código.
Informações sobre as mudanças dos dados de entrada:
Conjunto de Treinamento: (55000, 32, 32, 1).
Conjunto de Validação: (5000, 32, 32, 1).
Conjunto de Testes: (10000, 32, 32, 1).
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 53/67
Normalização dos dados
Os dados de entrada do MNIST estão em escalas de cinza, ou seja, vão
de 0 a 255. Então vamos transformá-los para dados no intervalo de 0 a
1. Para isso, basta dividirmos os valores das variáveis por 255.
O código para normalização dos dados é:
Python 
No início do código, usamos uma função “lambda” que recebe um
parâmetro “t” de entrada e retorna os valores divididos por 255.
Arquitetura LeNet
Até o momento, o que fizemos foi manipular os dados de entrada:
carregar, visualizar, separar e fazer ajustes. Agora, vamos implementar a
arquitetura da rede de convolução LeNet-5.
Lembre-se de que a LeNet tem 8 camadas: 1 de entrada, 3
de convolução, 2 de aglomeração (pooling) e 2 totalmente
conectadas, sendo uma delas a de saída.
Como se trata de uma arquitetura de modelo sequencial, precisamos
importar o pacote “Sequential” do tensorflow.keras. Em seguida,
precisamos importar os pacotes para cada camada do modelo.
O código que implementamos é dado por:
Python 
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 54/67
Fizemos a implementação de uma função:

Ela recebe como parâmetro o nome da função de ativação que
utilizamos nas camadas. Como podemos ver, cada trecho do código
precedido por “modelo.add” é responsável pela implementação de uma
camada.
Para ficar mais claro:
Conv2D
No caso das camadas de convolução.
AveragePooling2D
No caso das camadas de aglomeração (pooling).
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 55/67
Dense
No caso das camadas completamente conectadas.
Ainda há a situação em que precisamos “vetorizar” a camada de
convolução para poder se conectar com a penúltima camada
completamente conectada que é dada por Flatten.
Agora, vem uma parte muito importante! Precisamos lembrar que o
cálculo das dimensões da saída de uma camada é dado pela fórmula:
Assim, temos:
Camada 1
Recebe uma imagem de dimensões 32 × 32, kernel com dimensões 5 ×
5, padding igual a válido – que numericamente é igual a zero – e stride
igual a 1. Portanto, temos:
Camada 2
Recebe uma entrada de dimensões 28 × 28, kernel com dimensões 2 × 2,
padding igual a válido e stride igual a 1. Logo:
Camada 3
Recebe uma entrada de dimensões 14 × 14, kernel com dimensões 5 × 5,
padding igual a válido e stride igual a 1. Então, temos:
Camada 4
O =
(I − K + 2P)
S
+ 1
O1 =
(32 − 5 + 2(0))
1
+ 1 = 28
o2 =
(28 − 2 + 2(0))
1
+ 1 = 14
o3 =
(14 − 5 + 2(0))
1
+ 1 = 10
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 56/67
Recebe uma entrada de dimensões 10 × 10, kernel com dimensões 2 × 2,
padding igual a válido e stride igual a 1. Assim:
Da camada anterior temos 400 (= 5 × 5 × 16) nós com 120 filtros.
Conectamos esses 400 nós da camada anterior a 84 nós da próxima
camada. Por fim, temos uma camada de saída com dez neurônios, já
que os dados da base MNIST possuem dez categorias.
Atenção
Lembre-se de que as categorias dos dados da base MNIST se referem
aos dígitos 0, 1, 2,3, 4, 5, 6, 7, 8 e 9.
Visualização da arquitetura do
modelo
Agora, podemos visualizar a arquitetura da nossa implementação do
LeNet.
Primeiro, precisamos chamar a função “arquitetura_LeNet_5” e, em
seguida, solicitar ao Python que queremos ver um resumo do modelo.
O código é dado por:
Python 
Perceba que passamos o nome ‘relu’ como parâmetro para a função
que vai montar a arquitetura do modelo.
O resultado da execução do código é dado pela imagem a seguir.
O4 =
(10 − 2 + 2(0))
2
+ 1 = 5
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 57/67
Arquitetura da nossa implementação do LeNet-5.
Treinamento do modelo
Depois de estruturar a arquitetura do modelo, podemos iniciar a etapa
de treinamento.
Para isso, precisamos compilar o modelo por meio da função “compile”
e, em seguida, treiná-lo com a função “fit”.
A seguir, apresentamos o código de compilação e treinamento do
modelo.
Python 
Vamos destacar alguns aspectos da implementação:
Os parâmetros de compilação: da função de perda, otimizador e
a métrica para validação do modelo;
No treinamento do modelo, guardamos o histórico para analisá-
lo posteriormente;
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 58/67
E, ainda, salvamos o modelo para poder carregá-lo em outro
momento.
Atenção
Salvar o modelo é importante quando queremos armazenar os dados de
treinamento.
A saída do treinamento é dada por:

Atenção
Perceba algumas informações muito importantes em cada iteração da
saída: época, valor da função de perda e valor da métrica de avaliação,
no caso, acurácia.
Avaliação do modelo
Já fizemos o treinamento do modelo, então, precisamos testá-lo. Para
isso, vamos chamar a função “evaluate”, passando para ela os valores
de teste como parâmetros. O código que implementamos é dado por:
Python 
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 59/67
Após a execução do código, obtemos:

Isso significa que o modelo tem um erro de “0.0845” e acurácia de
“0.9742”.
Um modelo de boa qualidade vai produzir um erro
próximo de zero e acurácia perto de um.
Predição de dados
O nosso modelo já está treinado e fizemos uma avaliação da qualidade
dele. Agora, queremos ver na prática como ele faz a predição dos dados.
Vamos usar um dos dados que separamos para fazer o teste e ver como
o modelo se comporta.
O código que fizemos é dado por:
Python 
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 60/67
Como resultado, o programa mostra o vetor de predição a seguir.

Perceba que o maior valor do vetor é o da posição 4: 9.9373490e-01.
Quer dizer que o modelo tem maior confiança nessa categoria para
fazer a predição da entrada.
Atenção
Devemos notar que cada posição do vetor corresponde a uma categoria:
posição 1 corresponde ao dígito 0, posição 2 corresponde ao dígito 1 e
assim por diante.
Na imagem a seguir, mostramos a entrada que fornecemos para o
modelo e como o modelo fez a predição.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 61/67
Imagem usada para teste.
Recuperação do modelo
Aqui, mostramos como recuperar o modelo que salvamos
anteriormente. Para isso, carregamos o modelo com o nome que
usamos para salvá-lo.
Veja o nosso código.
Python 
Impressão do treinamento
Já treinamos e testamos nosso modelo. Agora, vamos visualizar como
ele se comportou ao longo do treinamento. Para isso, vamos trabalhar
com a variável “historico_treinamento” que utilizamos para guardar as
informações do histórico do modelo durante a fase de treinamento.
Veja, a seguir, o nosso código.
Python 
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 62/67
Vamos detalhar um pouco mais os dados que escolhemos exibir:
val_loss:
É o valor da função de custo para os dados de validação cruzada.
Perda (loss)
É o valor da função de custo para os dados de treinamento.
Veja a seguir o resultado da execução do programa.
Gráfico do histórico de treinamento.
Redes de convolução na
prática
Um exemplo prático de redes de convolução usando a linguagem de
programação Python e o framework Tensorflow é apresentado no vídeo
a seguir.

14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 63/67
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
Existem muitos pontos que devem ser considerados no
desenvolvimento de um projeto que utiliza redes de convolução
(CNN). Um dos fatores que facilita esse processo é o uso de
frameworks, como o Tensorflow. Em relação ao desenvolvimento de
um projeto de redes CNN, selecione a opção correta:
Parabéns! A alternativa C está correta.
A
O principal aspecto que deve ser considerado em
um projeto de redes CNN é a organização das
camadas.
B
Frameworks como o Tensorflow evitam que o
desenvolvedor tenha que se preocupar com a
organização dos dados.
C
É fundamental fazer a separação dos dados para
avaliar a qualidade do modelo.
D
Existe uma proporção ideal para a separação dos
dados de treinamento e testes.
E
As redes CNN possuem estruturas rígidas quanto à
sua arquitetura, o que reduz as possibilidades de
erro ao longo do desenvolvimento.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 64/67
As redes de convolução, como as demais redes neurais, são
modelos probabilísticos. Portanto, para que possam extrair as
características dos dados de treinamento e fazer generalizações, é
preciso separar os dados para treinamento, validação e teste.
Questão 2
As funções de ativação são um dos aspectos de um projeto que
utiliza redes de convolução (CNN). O framework Tensorflow já
disponibiliza essas funções, o que facilita bastante o trabalho de
desenvolvimento. Em relação às funções de ativação de redes CNN,
selecione a opção correta.
Parabéns! A alternativa E está correta.
As redes de convolução podem utilizar funções ReLu e tanh ao
longo do modelo, porém, na camada de saída, precisamos utilizar a
função de ativação SoftMax. O que vai definir qual é a melhor
função que deve ser aplicada é o contexto em que aplicamos o
modelo.
A
As funções de ativação devem ser escolhidas
levando em consideração as camadas
completamente conectadas do modelo.
B
A escolha da função de ativação está relacionada
aos hiperparâmetros do modelo, como stride e
padding.
C
As camadas das redes CNN estão habilitadas para
trabalhar apenas com determinadas funções de
ativação.
D
As funções de ativação não influenciam o tempo de
treinamento de um modelo.
E
As camadas ao longo do modelo podem combinar
funções ReLU e tanh.
14/02/2024, 19:44 Redes Neurais Convolucionais
https://stecine.azureedge.net/repositorio/00212ti/04164/index.html# 65/67
Considerações �nais
Ao longo do texto, abordamos conceitos sobre as redes neurais de
convolução e vimos aspectos sobre suas camadas de convolução,
preenchimento (padding), aglomeração (pooling) e totalmente
conectadas. Em especial, estudamos como as operações de
convolução, os filtros e outros hiperparâmetros são importantes para o
funcionamento dos modelos.
Focamos ainda as arquiteturas das redes CNN, que, ao longo dos anos,
evoluíram para modelos mais elaborados com taxas de erros muito
baixas, tornando mais evidente o potencial de aplicação dessas redes
para visão computacional.
Por fim, abordamos um exemplo prático com o uso da linguagem de
programação Python e o framework Tensorflow para implementar a
arquitetura LeNet-5. É importante tentar executar os exemplos e fazer
neles modificações para estudar o comportamento do modelo. Como
estudamos

Continue navegando