Redes Convolucionais (2/4)

Convolução

Quando uma imagem é recebida, a Rede Convolucional não sabe exatamente quais as Caracteristicas ou posições exatas dos pixels brancos e pretos. É durante o processamento que a rede aplica o cálculo em todas as posições possíveis até encontrar um resultado que se encaixa no padrão aceitável. Esse processo é chamada de Convolução.

A matemática por trás da convolução é bem simples: Multiplique o valor do pixel da Caracteristica pelo correspondente na imagem. Em seguida, some todos os valores e divida pelo número total de pixels. Se ambos os pixels são brancos (um valor de 1), então 1 * 1 = 1. Se ambos são pretos, então (-1) * (-1) = 1. Cada pixel correto sempre  resulta em 1, e os errados em -1.

Esses cálculos são repetidos exaustivamente com todos os pixels da imagem,  alinhando-se sempre a Característica com todos os possíveis valores na matriz. Podemos obter o resultado de parcial cada convolução e criar uma nova matriz bidimensional para mapear as Caracteristicas. Este mapa de correspondências é uma versão “filtrada” da imagem original e mostra o local específico na imagem (posição exata do pixel) onde a Característica foi encontrada. Valores próximos a 1 mostram correspondências fortes, valores próximos a -1 mostram fortes correspondência inversas, e os valores próximos a zero não mostram nenhuma correspondência.

Em seguida, o processo de convolução é repetido para cada uma outras Características restantes. Este grupo de operações de convolução pode ser vista como uma única etapa de processamento., normalmente chamada de Camada de Convoluçãoo. O nome camada vem da possibilidade de empilhar as camadas (como cartas em um baralho), uma em cima da outra, de forma a aumentar a capacidade da rede de inferir resultados.

Esse empilhamento de camadas requer alto grau de processamento e consequentemente um hardware à altura. Apesar da simplicidade de operações, o número de adições, multiplicações e divisões aumentam linearmente de acordo com o número de pixels. Aproveitando a oportunidade, fabricantes de hardware agora produzem chips especializados em atender as demandas das CNNs. As típicas CPUs são deixadas de lado e usuários de Redes Convulucionais optam por usar as bem mais poderosas GPUs.

 

Subamostragem

Subamostragem é uma outra ferramenta poderosa utilizada pelas Redes Convolucionais. Essa técnica permite a redução de resolução da imagem sem que haja perda de informação. A matemática por trás da subamostragem é simples. Ela consiste em criar uma pequena janela em uma imagem e obter o valor máximo da janela em cada etapa.

Uma vez que a subamostragem é processada, uma imagem pode ter seu tamanho reduzido a meros 25% do original sem que suas caracteristas sejam perdidas. Como o valor máximo de cada janela é mantido, os melhores ajustes de cada Caracteristica dentro daquela janela são mantidos. Isso significa que não importa onde exatamente Caracteristica se encaixa, desde que ele se encaixe em algum lugar dentro da janela. O resultado é que as CNNs conseguem verificar se uma determinada característica está presente em uma imagem sem se preocupar com sua localização exata. Novamente, isso é algo extremamente útil e bem mais eficiente do que a comparação literal pixel a pixel.


O subagrupamento ajuda também a reduzir o processamento através da redução do numero de Caracteristicas. No exemplo acima uma imagem de 8 megapixels será reduzida a 2 megapixels o que, consequentemente, agilizará o processo tremendamente.

 

Proxima parte ->