Carregando
0x80Lição 9 de 16

Construa intuição para redes convolucionais

Empilhe filtros aprendidos e operações de pooling para transformar pixels em características e calcular o tamanho de cada camada.

22 min Questionário com 7 perguntas 2 exercícios de código
Ao final desta lição, você saberá
  • Descreva como uma CNN aprende filtros e combina características camada por camada
  • Calcule o tamanho de saída de uma convolução a partir de padding e stride
  • Aplique max pooling e average pooling

Uma rede neural convolucional (CNN) empilha a convolução que você já conhece - mas seus pesos de kernel são aprendidos a partir de imagens rotuladas em vez de escolhidos manualmente. Cada camada aplica muitos kernels, produzindo uma pilha de mapas de características (um por kernel).

As primeiras camadas tendem a aprender detectores simples - bordas, manchas de cores, texturas. As camadas posteriores combinam-nos em partes (olhos, rodas) e depois em objetos inteiros. Estas são intuições úteis, em vez de regras fixas: o que cada filtro aprende depende dos dados e do treinamento.

Qual é o tamanho da saída?

Três configurações decidem o tamanho de saída de uma camada de convolução (das notas CS231n):

  • tamanho do kernel F (por exemplo, 3),
  • preenchimento P: zeros adicionados ao redor da borda para que o kernel possa ficar nos pixels da borda,
  • stride S: quantos pixels o kernel salta a cada passo.

Para uma entrada de largura W: output = (W − F + 2P) / S + 1. Uma entrada de 32 larguras com um kernel 3×3, preenchimento 1 e passo 1 permanece com 32 larguras; com a passada 2 diminui para 16.

output_size.py
1def output_size(width, kernel, padding, stride):
2    return (width - kernel + 2 * padding) // stride + 1
3
4print(output_size(32, 3, 1, 1), output_size(32, 3, 1, 2), output_size(7, 3, 0, 1))
Saída
32 16 5

Pooling

Pooling reduz os mapas de características resumindo pequenas janelas. Max pooling mantém a resposta mais forte em cada janela (“o padrão estava em algum lugar aqui?”); average pooling mantém a média. A redução economiza computação e torna a rede menos sensível a um padrão que se move em um ou dois pixels.

Experimente

Até 15 XP

Explorador de pool

Clique nas células do mapa após pooling para ver de qual janela 2×2 cada uma veio. Compare max pooling e average pooling: qual preserva a ativação 9? Como muda o tamanho do mapa?

Mapa de características: 6 × 6
Após o pooling (2×2, stride 2): 3 × 3 - clique em uma célula

max(1, 3, 4, 2) = 4

Principais conclusões

  • Uma CNN empilha filtros de convolução aprendidos; os recursos crescem das bordas às peças e aos objetos.

  • Tamanho de saída = (W − F + 2P) / S + 1; o preenchimento preserva o tamanho, o passo o diminui.

  • Pooling resume janelas (máx. ou média) para reduzir mapas de características.

Quiz da aula

7 perguntas · aprovação com 5 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Pratique: aplique visão computacional com Python

Use pequenas matrizes de pixels para explorar conceitos de visão, execute seu código com imagens de exemplo e relacione cada resultado à ideia maior de visão computacional.

Exercício 1

Faça pooling de um mapa de características

+25 XP

Leia uma lista JSON 2×2 de números e imprima seu valor máximo. Esta operação de pooling máximo didático resume a ativação mais forte na região.

  • Uma forte ativação
  • Todos os valores negativos
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Exercício 2

Aplique max pooling a um mapa completo

+25 XP

Leia um mapa de características JSON cuja altura e largura sejam iguais. Aplique pooling máximo 2×2 com passo 2 e imprima o resultado como uma lista de linhas.

  • Mapa 4×4
  • Mapa 2×4
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…