Filtros Espaciais (Convolução)

programador
1.1.2.4 – Redes Neurais – Visao Computacional
1.1.2.4.0 – Processamento de Imagens (Pre-processamento)
1.1.2.4.0.1 – Filtros Espaciais (Convolução)
LEGENDA
Principal
Ramo
Metodo
Problemas
Modelo
Arquitetura

A filtragem espacial é uma ferramenta fundamental no processamento de imagens. Basicamente, ela modifica o valor de cada pixel. Esta modificação considera os valores dos seus vizinhos. Um pequeno arranjo de números, chamado kernel, controla esta operação. O kernel desliza por toda a imagem. A cada posição, calcula-se a soma dos produtos ponderados. Este processo é chamado de convolução. Por exemplo, um kernel pode suavizar ou realçar bordas. A escolha do kernel determina o efeito final na imagem. Portanto, a filtragem espacial é extremamente versátil.

suavização com filtros passa-baixas (lowpass filters)

Filtros passa-baixas atenuam as altas frequências da imagem. Altas frequências correspondem a bordas e ruídos. Consequentemente, estes filtros suavizam e desfocam a imagem. O filtro da média (box filter) é o exemplo mais simples. Ele substitui cada pixel pela média da vizinhança. Outro exemplo poderoso é o filtro Gaussiano. Ele utiliza uma função Gaussiana para ponderar os vizinhos. Os pesos diminuem suavemente com a distância ao centro. Por exemplo, usa-se suavização para reduzir ruído antes da detecção de bordas. Ademais, ela é útil para eliminar detalhes pequenos e irrelevantes. Contudo, a suavização excessiva borra características importantes da imagem.

aguçamento com filtros passa-altas (highpass filters)

Filtros passa-altas fazem exatamente o oposto da suavização. Eles realçam as altas frequências da imagem. Portanto, bordas e detalhes finos tornam-se mais nítidos. O filtro Laplaciano é um exemplo clássico. Ele aproxima a segunda derivada da imagem. Este filtro realça descontinuidades e cria um duplo contorno. A técnica de máscara de desfoque (unsharp masking) é outra abordagem popular. Primeiro, borra-se a imagem original. Em seguida, subtrai-se o borrado do original. Finalmente, adiciona-se esta diferença de volta à imagem. Por exemplo, utiliza-se aguçamento para melhorar a definição de imagens médicas. Contudo, ele também pode amplificar ruídos presentes na imagem.

filtros de mediana e outros filtros não-lineares

Filtros lineares, como a média, são baseados em soma de produtos. Contudo, eles não são ideais para todos os tipos de ruído. O filtro de mediana é um filtro não-linear muito eficaz. Ele substitui o pixel central pelo valor mediano da vizinhança. Diferentemente da média, a mediana preserva bordas enquanto remove ruído. Este filtro é excelente contra ruído do tipo “sal e pimenta”. Os pixels isolados e extremamente claros ou escuros são eliminados. Outros filtros não-lineares incluem o máximo e o mínimo. O filtro máximo dilata regiões claras, enquanto o mínimo escurece. Por exemplo, a mediana é frequentemente aplicada em imagens de documentos digitalizados. Ela remove pequenas manchas sem destruir o texto.

Arquiteturas CNN Profundas (Deep CNNs)

programador
1.1.2.4 – Redes Neurais – Visao Computacional
1.1.2.4.4 – Arquiteturas CNN Profundas (Deep CNNs)
1.1.2.4.4.1 – LeNet-5
1.1.2.4.4.2 – AlexNet
1.1.2.4.4.3 – VGGNet
1.1.2.4.4.4 – ResNet
1.1.2.4.4.5 – GoogLeNet (Inception)
1.1.2.4.4.6 – MobileNet
1.1.2.4.4.7 – Vision Transformer (ViT)
1.1.2.4.4.8 – Tecnicas de Treinamento
LEGENDA
Principal
Ramo
Metodo
Problemas
Modelo
Arquitetura

Redes Neurais Convolucionais profundas (Deep CNNs) revolucionaram o reconhecimento de imagens. Diferentemente de redes rasas, elas possuem muitas camadas escondidas. Cada camada aprende características cada vez mais abstratas da imagem. Primeiramente, camadas iniciais detectam bordas e texturas simples. Em seguida, camadas intermediárias reconhecem partes de objetos, como olhos ou rodas. Finalmente, as camadas finais combinam estas partes em conceitos complexos. Este aprendizado hierárquico é a grande força das CNNs profundas. Elas dispensam a engenharia manual de características. Consequentemente, alcançam desempenho superior em tarefas desafiadoras. A escolha da arquitetura certa depende do problema específico. Fatores como tamanho do conjunto de dados e poder computacional influenciam esta decisão.

lenet-5: a arquitetura pioneira para dígitos

A LeNet-5 foi desenvolvida por Yann LeCun nos anos 1990. Ela se tornou famosa pelo reconhecimento de dígitos manuscritos. Esta arquitetura possui duas camadas convolucionais intercaladas com pooling. Primeiramente, ela usa kernels pequenos de tamanho 5×5. Em seguida, aplica camadas totalmente conectadas ao final. A ativação utilizada é a tangente hiperbólica ou sigmoide. Por exemplo, a LeNet-5 processava imagens de 32×32 pixels da base MNIST. Seu uso é recomendado para problemas simples com poucas classes. Ademais, ela serve como excelente ponto de partida para iniciantes. Portanto, a LeNet-5 é uma prova de conceito fundamental na área.

alexnet: o marco da revolução do deep learning

A AlexNet venceu o desafio ImageNet em 2012. Ela foi um divisor de águas na visão computacional. Primeiramente, sua arquitetura é muito mais profunda que a LeNet-5. Ela possui oito camadas com pesos treináveis. Inovações importantes incluem o uso da ReLU como ativação. Além disso, ela introduziu o dropout para evitar overfitting. A AlexNet também utilizou aumento de dados (data augmentation) extensivamente. Por exemplo, ela classificava imagens em 1000 categorias diferentes. Recomenda-se a AlexNet para problemas com grande variabilidade de objetos. Seu uso em imagens naturais complexas é particularmente eficaz.

resnet: resolvendo o problema do gradiente vanishing

A ResNet (Residual Network) introduziu conexões residuais inovadoras. O problema do gradiente vanishing afligia redes muito profundas. Basicamente, a ResNet permite que a informação flua diretamente por atalhos. A cada duas camadas convolucionais, ela soma a entrada original à saída. Este mecanismo é chamado de “bloco residual”. Consequentemente, é possível treinar redes com mais de 100 camadas. A ResNet-50 e a ResNet-101 são versões muito populares. Por exemplo, ela é amplamente usada como base para transfer learning. Recomenda-se a ResNet quando a precisão máxima é necessária. Seu uso é ideal para conjuntos de dados grandes e diversos.

vision transformer (vit): a alternativa aos convnets

O Vision Transformer (ViT) adaptou o mecanismo de atenção aos dados visuais. Diferentemente das CNNs, ele não usa convoluções. Primeiramente, a imagem é dividida em pequenos patches quadrados. Estes patches são linearmente projetados em sequências de vetores. Em seguida, um transformer padrão processa estas sequências. A grande vantagem é capturar relações globais na imagem. Por exemplo, o ViT supera CNNs em conjuntos de dados gigantes (ImageNet-21k). Contudo, ele necessita de muito mais dados para generalizar bem. Recomenda-se o ViT quando há disponibilidade massiva de dados. Portanto, ele representa uma alternativa promissora às arquiteturas tradicionais.