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