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.
- 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.
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))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 XPExplorador 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?
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.
Faça pooling de um mapa de características
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
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.
Aplique max pooling a um mapa completo
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
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…