Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

RECONHECIMENTO 
DE PADRÕES
Marcelo da Silva dos Santos
Convolução
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Definir convolução e seus tipos.
  Reconhecer as principais operações de convolução.
  Explicar a extração de características em imagens.
Introdução
A convolução é uma operação matemática empregada em processa-
mento de imagens digitais. Consiste em sobrepor a imagem original e 
um filtro específico, passando em seguida à convolução em si: a soma da 
multiplicação de cada pixel pelo valor do elemento do filtro de mesma 
posição espacial. Para destacar determinada caraterística, como bor-
das, compensar uma eventual redução inicial no tamanho ou alterar a 
disposição dos pixels, podemos empregar operações de convolução 
específicas, como padding, flattening, pooling, entre outras.
Neste capítulo, você vai conhecer o processo de cálculo convolucional 
e seus tipos, além das principais operações de convolução e extração de 
características de imagens.
1 Conceitos de convolução
Convolução é um conceito da matemática, com aplicações recorrentes entre vá-
rias áreas de conhecimento computacional, como redes neurais, processamento 
de imagens digitais e processamento de sinais, por exemplo (GONZALEZ; 
WOODS, 2010). Matematicamente, podemos compreender a convolução 
como uma operação linear, cujo resultado deriva da soma do produto entre 
duas funções do mesmo contexto. É, portanto, uma superposição de duas 
funções ao longo de toda sua área, tecnicamente defi nida como integral de 
superposição, com número de operações fi nitas. Assim, a convolução pode ser 
expressa discretamente, substituindo a operação integral (de caráter contínuo) 
pelo operador somatório, como apresentado na Equação 1:
O símbolo * simboliza a operação de convolução; já a operação de multiplicação 
é representada por um ponto.
Em processamento de imagens digitais, são aplicados dois conceitos matemáticos 
importantes e que estão relacionados com a filtragem espacial: correlação e convolução. 
Ambos executam o mesmo procedimento de soma de produtos, exceto que o kernel 
(filtro) é antes espelhado antes do cálculo (rotacionada em 180º).
O que a operação de convolução faz, em termos práticos, é inverter uma 
das funções, rotacionando-a a 180º (Equação 2: g(n - i)) e movendo-a 
(repetir para cada posição na iteração do somatório) ao longo de toda a área 
(todos os valores da função) da outra (f(i)) e somar o resultado dos produtos 
a cada passo (f(i).g(n – i)) da movimentação. Equação 2:
Podemos ver um passo da iteração na Figura 1.
Figura 1. Cálculo da convolução: somatório dos produtos entre os elementos da função 
f e função g.
Fonte: Wikipedia (2020, documento on-line).
No caso de duas imagens, sendo que ambas serão expressas na forma de 
matrizes de pixels, a convolução inverteria a menor matriz e a moveria do pri-
Convolução2
meiro ao último pixel da matriz maior. Em cada momento seriam computados 
os resultados do produto escalar entre eles (Equações 3 e 4). Contudo, cada 
elemento da matriz f não corresponde aos pixels da imagem em sua devida 
posição — a imagem ainda está expressa em forma de matriz. Assim, para 
garantir um produto escalar que seja equivalente ao somatório da Equação 2, 
a matriz f é transformada em uma matriz e preenchida com nulos e índices 
suficientes de valores da função f a fim de igualar em tamanho as matrizes 
f e g. Do mesmo modo, a matriz g é preenchida com valores nulos para que 
tenha o mesmo comprimento da matriz original f (NORVIG; RUSSELL, 2013).
Equação 3:
h = f . g
Equação 4:
Na literatura sobre processamento de imagens digitais, você provavelmente 
encontrará os termos filtro de convolução, máscara de convolução ou kernel 
de convolução para denominar essa segunda função, a matriz menor. Como 
regra, esses termos são utilizados para expressar um filtro espacial. Também 
a expressão “realizar a convolução de uma máscara com uma imagem” cos-
tuma ser utilizada para expressar esse processo de deslocamento e soma dos 
produtos que você acabou de acompanhar (GONZALEZ; WOODS, 2010).
O kernel, normalmente, trata-se de uma matriz menor com valores para-
metrizados, com a finalidade de buscar por determinados padrões na imagem 
de entrada. O processo é executado sobrepondo as matrizes, alinhadas com 
seus pixels iniciais e, depois, efetua-se o cálculo anteriormente apresentado, 
em que cada elemento do kernel é multiplicado pelo elemento de mesma 
posição na região da imagem original naquele instante. Observe na Figura 2 
a operação de convolução entre as funções de entrada e kernel. O resultado 
é a função de saída, a imagem filtrada.
3Convolução
Figura 2. Operação de convolução entre as funções de entrada e kernel. 
Ao final de cada movimento, também chamado de stride, somam-se os 
resultados dessas multiplicações para ter um único valor como saída. Esse 
valor será o pixel correspondente na imagem filtrada. Normalmente, o stride 
possui o valor 1, o que significa que a transformação será aplicada em todos 
os pixels da imagem, pulando uma posição a cada movimento.
Dependendo da necessidade, podemos controlar a velocidade, a precisão e 
o tipo de padrão detectado na imagem alterando as características da função 
de convolução e utilizando diferentes kernels. Por exemplo, a velocidade da 
filtragem pode ser controlada alterando a quantidade de pixels deslocados em 
cada avanço, aumentando o stride, conforme a Figura 3.
Convolução4
Figura 3. Aumento no stride da convolução.
Na Figura 3, você pode ver uma demonstração de operação de convolução 
com stride diferente de 1. Na segunda imagem, é apresentada a camada de 
entrada e dois passos de uma convolução com kernel de 3×3 e um stride de 
duas posições. Já as bordas em vermelho são perdidas devido à natureza 
dessa operação.
O uso de diferentes valores para um kernel vai depender do objetivo final 
para a filtragem. Dentre as diversas funções, podemos citar como recorrentes 
a detecção de bordas (edge detection), o desfoque (blur), a nitidez (sharpen), 
como podemos observar na Figura 4.
5Convolução
Figura 4. Diferentes construções de kernel e seu resultado no processamento da imagem.
Fonte: Adaptada de Wikipedia (2020).
Na escolha destes parâmetros, devem ser pesados o custo e o benefício. Em 
alguns casos, um resultado rápido pode ser interessante, especialmente para 
os ambientes em que há muita variação entre uma imagem e outra, ou entre 
os tipos de características buscadas a cada momento. Em outros, a precisão e 
os detalhes do que se pretende encontrar em uma imagem serão a prioridade 
e, portanto, é interessante que o avanço (stride) seja o menor possível.
Já a camada de atributos resultante da operação de convolução terá, para 
cada dimensão da matriz, um tamanho igual à Equação 5:
Convolução6
onde:
  DI: dimensão da imagem;
  DK: dimensão do kernel;
  P: padding;
  S: stride.
Em uma convolução convencional, a quantidade de parâmetros e operações 
para processar todos os canais ou os mapas de atributos é igual à Equação 6:
operações
conv
 = N
K
.L
M
.A
M
.L
K
.A
K
.M 
onde:
  N
K
: quantidade de kernels utilizados;
  L: largura;
  A: altura;
  L
M
: quantidade de iterações na direção do comprimento da imagem ou 
do mapa de atributos resultante das convoluções.
  A
M
: quantidade de iterações na direção da altura da imagem ou do mapa 
de atributos resultante das convoluções.
  M: profundidade da matriz de entrada (canais da imagem ou quantidade 
de mapas de atributos).
Já para matrizes ou imagens quadradas, os valores de A e L serão iguais 
tanto para o kernel e o mapa de atributos resultante como para a imagem. 
Nesse caso, pode-se utilizar a Equação 7:
operações
conv
 = N
K
.D2M.D
2
K.M
onde:
  D
M
: tamanho das dimensões/lados do mapa de atributos resultante;
  D
K
: tamanho das dimensões/lados do kernel.
Para um processo de convolução convencional, a quantidade de canais ou 
de mapas deatributos convolucionados em camadas mais profundas aumentará 
consideravelmente a quantidade de operações de soma e multiplicação execu-
tadas. Desse modo, a quantidade de parâmetros (pesos e vieses) será elevada.
7Convolução
Até aqui, você conheceu os conceitos básicos do cálculo convolucional e 
seus principais elementos. A próxima seção tratará dos tipos de convolução 
e algumas das suas principais operações.
2 Tipos e operações de convolução
Agora que você conhece o cálculo convolucional e os conceitos básicos, como 
kernel, stride e matrizes de convolução, o próximo passo é abordar os tipos 
de convolução e algumas das principais operações. 
Convolução bidimensional
Dentre os tipos de convolução, esse é o tipo mais comum. Seu processo é 
exatamente o mesmo descrito na seção anterior. Trata-se de uma convolução 
de duas dimensões, que varia no tamanho do kernel e stride, processando uma 
matriz de pixels de entrada de apenas um canal (somente uma cor). A função 
de convolução bidimensional também é conhecida como convolução 2D.
Pode-se utilizar a convolução 2D para processar imagens coloridas, com 
três ou mais canais; a diferença é que, em vez de usar os mesmos kernels para 
todos esses canais, cada cor deve ter um kernel desenhado especificamente 
para ele, ainda que tenha a função de buscar características iguais ao outro 
kernel utilizado para outra cor. Portanto, cada característica precisa ter um 
impacto diferente nos diversos canais de cor, e o mesmo ocorre com o kernel, 
mas, infelizmente, isso implica no cálculo de mais pesos e vieses.
A convolução 2D costuma exigir bastante processamento, o que geralmente 
é compensado ao reduzir o tamanho do kernel e aumentar o tamanho do stride, 
mas o resultado terá uma precisão menor, porque a quantidade de informação 
na entrada dos filtros é menor. Outra solução é utilizar imagens na escala de 
cinza, reduzindo a quantidade de canais e o número de kernels diferentes, o 
que implica na redução da sua eficiência.
Convolução tridimensional
Em vez de realizar a convolução para apenas um canal, a convolução tridi-
mensional (3D) a relaciona com a camada seguinte, entre os pixels vizinhos 
vertical, horizontal e profundamente, conectando os pixels de mesma posição 
em outros canais.
Convolução8
Convolução dilatada
Quando é necessário aumentar a área coberta pelo kernel, mas não se pode 
elevar o tamanho deste porque a quantidade adicional de parâmetros impac-
taria muito na performance do treinamento ou na execução da rede neural, 
expande-se a matriz de convolução adicionando um espaço entre os elementos 
do kernel, chamado de taxa de dilatação. A quantidade de parâmetros envolvi-
dos ainda seria a mesma do tamanho original do kernel, mas seu contexto de 
abrangência a cada iteração na imagem será maior, uma vez que cada célula 
do kernel está associada a uma posição mais distante da matriz que o pixel 
imediatamente vizinho.
Convolução dilatada é o nome dado a esse processo, em que toda a matriz 
será mapeada, porque o kernel ainda se move ao longo da matriz de entrada; 
a diferença é que a abrangência dele foi ampliada e mais detalhes do contexto 
foram absorvidos na mesma iteração. Esse procedimento será especialmente 
útil para as imagens de alta definição, em que um kernel pequeno seria insufi-
ciente para extrair as características necessárias, ao passo que aumentar o seu 
tamanho impactaria em mais parâmetros a serem calculados. Da mesma forma, 
reduzir a resolução da imagem desperdiçaria uma quantidade significativa 
de informação e a possibilidade de obter um resultado mais satisfatório. Na 
prática, a convolução dilatada cria um campo receptivo maior que a área do 
kernel, que obedecerá a Equação 8:
p = [n + d. (n + 1)]2
onde:
  p: quantidade de pixels do campo receptivo;
  n: tamanho do kernel. Por exemplo, para um kernel 3×3, o tamanho é 3;
  d: taxa de dilatação, a distância entre cada elemento do kernel.
Convolução separável
A convolução separável, por sua vez, divide o processo em duas etapas: entre ca-
madas de profundidade dos diferentes mapas de atributos ou canais de entrada 
(depthwise) e entre pontos (pointwise). Assim, há dois momentos de convolução: 
um executa a convolução convencional para cada canal individualmente, e 
o outro executa uma convolução para cada pixel do mapa de atributos em 
conjunto com o pixel de mesma posição de mapas dos demais canais. Para que 
9Convolução
as camadas se relacionem entre si da mesma forma que ocorria na convolução 
convencional, executam-se vários kernels, de dimensão unitária, tanto para a 
largura quanto para o comprimento. 
Espera-se ainda que sejam obtidos os mesmos resultados, mas em vez de 
mesclar os canais com o kernel maior usado para detectar diferentes carac-
terísticas e com pesos diferentes entre cada canal, o mesmo kernel pode ser 
utilizado para esses canais e ponderado ao final por diversos kernels unitários 
que os interligam. A diferença na quantidade de operações entre a convolução 
convencional e a separável será proporcional à quantidade de kernels e ao 
tamanho deles. Quanto maiores forem esses parâmetros, maior será a economia 
computacional obtida pela convolução separável.
Convolução transposta
Ao executar uma convolução, haverá uma redução no tamanho da matriz de 
saída, se comparada à matriz de entrada. Ampliar novamente o tamanho da 
saída necessitaria de uma camada de unpooling, ou se poderia efetuá-la de 
maneira direta utilizando uma convolução transposta.
Na convolução transposta, a entrada é ampliada nas extremidades para 
compensar o tamanho do kernel e do stride, que reduziriam a saída. Na prática, 
essa convolução tem alguns passos a mais para compensar a quantidade de 
linhas e colunas que seriam perdidas.
Operações de convolução
As operações de convolução são utilizadas em conjunto com outras técnicas 
para ativação de determinada tarefa, extração de características, redução 
do mapa de atributos, entre outras fi nalidades que permitem a extração de 
melhores características da imagem. O principal objetivo dessas operações é 
o aumento da efi ciência no processo de classifi cação.
Agora você vai conhecer algumas das principais operações de convolução: 
pooling, flattening, padding e ReLU. Tais funções são utilizadas em conjunto 
com o cálculo da convolução.
Pooling
A função de pooling é utilizada para simplifi car a informação de uma matriz 
reduzindo o seu tamanho, dividindo-a em regiões de tamanho pré-determinado, 
geralmente uma matriz de 2×2, realizando o movimento de convolução com 
Convolução10
stride de 2 (considerando as dimensões do kernel). A cada movimento, apenas 
um dos pixels é selecionado para representar a região. Isso causa um efeito 
imediato na dimensão do mapa de caraterísticas. Por exemplo, para uma 
entrada de 24×24, a saída será 12×12. 
A seleção do pixel resultante do pooling pode considerar diferentes critérios. 
Entre eles, os mais comuns são o critério de máximo (max pooling) e o critério 
da média (average pooling). Observe a Figura 5.
Figura 5. Matrizes resultantes do processo de max pooling e average pooling.
A operação de max pooling retira o pixel de maior intensidade (maior 
valor) do local onde o kernel se encontra a cada movimento (considerando o 
tamanho desse kernel). Já no average pooling, o valor que representa cada 
região como a única célula na nova matriz fica igual à média dos elementos 
na região original (MAZZA, 2017). 
Flattening
Já a função de fl attening transforma a matriz de entrada em um vetor no 
qual cada elemento é empilhado. Essa operação costuma ser utilizada em 
aplicações de rede neural, por exemplo, que em sua entrada recebem os dados 
nesse formato, oriundos da saída da última camada de pooling para ligar o 
resultado das camadas convolucionais que serão interligadas a uma rede neural 
totalmente conectada, a fi m de que a imagem seja classifi cada acionando as 
respectivas saídas (MAZZA, 2017). Por exemplo, uma matriz de 6×6 gerará 
um vetorde 36 posições. Observe a Figura 6.
11Convolução
Figura 6. Matriz resultante do processo de flattening.
Padding
O processo de padding adiciona pixels ao redor da imagem antes de iniciar a 
convolução. Esse passo tem a intenção de manter as proporções da imagem ao 
fi nal do processo. O emprego dessa técnica evita a possível perda de detalhes 
importantes para a classifi cação do mapa de características, resultante do 
processo de convolução. Observe a Figura 7.
Figura 7. Matriz resultante do processo de padding.
Convolução12
ReLU
ReLU (Rectifi ed Linear Unit) é uma função de ativação muito utilizada tam-
bém em classifi cadores de rede neural. Sua principal função é transformar os 
pixels do mapa de atributos utilizando uma função não linear, com o objetivo 
de evitar que o aprendizado se torne demasiadamente lento por dispersar 
bastante o sinal após sua passagem entre as camadas. Para efeito de cálculo, 
diferentes funções podem ser usadas, dependendo das necessidades, como a 
sigmoide e a tangente. A ReLU, matematicamente, é descrita pela expressão:
y = max(0, x)
3 Extração de características
Características são informações relevantes para o processamento de imagem 
digitais. São regiões que representam informações, como bordas, variações de 
intensidade ou padrões, que podem servir de base para classifi car e comparar 
diferentes imagens. Tais características podem ser utilizadas em diversas 
aplicações, como identifi car uma pessoa em um local público, catalogar fotos 
em uma rede social ou auxiliar um veículo a estacionar de forma autônoma. A 
identifi cação biométrica (Figura 8) é amplamente utilizada, desde o registro 
de documentação civil até destravar o telefone celular.
Figura 8. Reconhecimento biométrico.
Fonte: Zuccherato (2019, documento on-line).
13Convolução
Geralmente, a extração das características é uma etapa de uma arquitetura 
maior, aplicando técnicas de inteligência artificial (IA) para classificar e comparar 
os padrões catalogados. A extração de características pode servir de base para 
a classificação das imagens em classes, como no reconhecimento de texto, seja 
na tentativa de evitar fraudes em assinaturas, seja para identificar a placa de um 
veículo com documentação atrasada. Para que as características sejam extraídas, 
as aplicações de IA devem ser treinadas a fim de parametrizar as camadas de 
filtro. Observe na Figura 9 um exemplo de extração de padrões de placas de 
veículos. Vemos, primeiramente, a imagem original; abaixo, a aplicação de filtros 
para destaque de padrões (neste caso, os caracteres); e, ao lado, um exemplo de 
seu histograma usado para a separação entre o fundo e os objetos de interesse.
Figura 9. Extração de padrões de placas de veículos.
Fonte: Conci e Monteiro ([2004], documento on-line).
As características são inúmeras e dependem das tarefas realizadas, bem 
como do tipo de imagem tratada. Por exemplo, para reconhecer impressões 
digitais, pode-se trabalhar com descritores, como contorno, arcos e bifurca-
ções. Já para reconhecimento facial, é melhor trabalhar com dimensionais, 
como as distâncias entre os olhos, entre os olhos e o nariz, comprimento da 
boca, entre outras. A quantidade de características e seu tamanho em pixels 
dependem da tarefa e do grau de acerto desejados.
Portanto, apenas uma característica não deve ser suficiente para classificar 
adequadamente uma imagem. Identificar olhos em uma imagem não seria 
indício suficiente de ter encontrado um rosto humano; somente com a análise 
de um conjunto de características seria possível obter tal precisão. Por esse 
motivo, as redes convolucionais não criam apenas um mapa de atributos, mas 
vários deles, cuja quantidade é proporcional ao número de kernels utilizados, 
cada qual com um objetivo específico (NIELSEN, 2015). Veja a Figura 10.
Convolução14
Figura 10. Exemplo de identificação de pedestres para navegação de veículos autônomos.
Fonte: Diaz (2017, documento on-line).
Neste capítulo, você conheceu os fundamentos do cálculo convolucional 
aplicado ao processamento de imagens digitais. A implementação de fi ltros 
convolucionais é bastante ampla e abrange variadas áreas do conhecimento 
humano. Seu emprego nas tarefas cotidianas cresce cada vez mais, e seu 
potencial está apenas no início em aplicações com realidade aumentada, 
realidade virtual e inteligência artifi cial. 
CONCI, A.; MONTEIRO, L. H. Reconhecimento de placas de veículos por imagem. [S. l.: s. 
n., 2004]. Disponível em: http://www.ic.uff.br/~aconci/CONENPLACAS.pdf. Acesso 
em: 27 jul. 2020.
DIAZ, J. Conduite autonome: Deux chercheurs d’Apple dévoilent leurs travaux sur la 
détection et reconnaissance d’objets 3D. Actualité, 23 nov. 2017. Disponível em: https://
www.actuia.com/actualite/conduite-autonome-deux-chercheurs-dapple-devoilent-
-leurs-travaux-detection-reconnaissance-dobjets-3d/. Acesso em: 11 ago. 2020.
GONZALEZ, R. C.; WOODS, R. E. Processamento digital de imagens. 3. ed. São Paulo: 
Pearson, 2010.
MAZZA, L. O. Aplicação de redes neurais convolucionais densamente conectadas no 
processamento digital de imagens para remoção de ruído gaussiano. 2017. Trabalho Aca-
dêmico (Graduação) — Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2017. 
Disponível em: http://www.monografias.poli.ufrj.br/monografias/monopoli10019807.
pdf. Acesso em: 17 jul. 2020.
15Convolução
NIELSEN, M. Neural networks and deep learning. San Francisco: Determination, 2015. 
Disponível em: http://neuralnetworksanddeeplearning.com. Acesso em: 17 jul. 2020.
NORVIG, P.; RUSSELL, S. J. Inteligência artificial. 3. ed. Rio de Janeiro: Elsevier, 2013.
WIKIPEDIA. Kernel (image processing). [S. l.]: Wikipedia, 2020. Disponível em: https://
en.wikipedia.org/wiki/Kernel_(image_processing). Acesso em: 11 ago. 2020.
ZUCCHERATO, G. Seu rosto, sua chave: reconhecimento facial no controle de acesso. 
Digital Secutiry, 19 fev. 2019. Disponível em: https://revistadigitalsecurity.com.br/artigo-
-seu-rosto-sua-chave-reconhecimento-facial-no-controle-de-acesso. Acesso em: 11 
ago. 2020.
Leitura recomendada
KRIZHEVSKY, A.; SUTSKEVER, I.; HINTON, G. E. ImageNet classification with deep con-
volutional neural networks. In: ADVANCES IN NEURAL INFORMATION PROCESSING 
SYSTEMS, 25., 2012. Proceedings... [S. l.]: NIPS, 2012. Disponível em: https://papers.nips.
cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.
pdf. Acesso em: 17 jul. 2020.
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
Convolução16

Mais conteúdos dessa disciplina