Class Activation Map — CAM

Este artigo explica a matemática por trás de uma técnica de interpretação em redes neurais para classificação de imagens, este tipo de algoritmo é comumente chamado de interpretable machine learning.

Adriano Moala
Porto
4 min readAug 19, 2020

--

Escrito por Adriano Moala.

A rede neural treinada para classificar uma imagem retorna as probabilidades dela pertencer a cada classe (carro, pessoa, bicicleta etc). Como esse cálculo envolve muitas camadas, os pesquisadores buscam formas de tornar essa matemática complexa um pouco mais transparente. Uma pergunta seria: “quais áreas da imagem foram relevantes para essa classificação?” E é nessa pergunta que o CAM pode ajudar.

Essa técnica apresenta quais áreas dos features maps são mais ativadas ao predizer uma classe específica. O CAM é uma soma ponderada de todos os mapas da última convolução. No diagrama a seguir é possível observar como cada mapa é ativado para predizer a classe Terrier Australiano. Então, é feita uma média ponderada para obter o mapa final.

É importante lembrar que o mapa terá a mesma dimensão da convolução e dependerá de qual rede foi utilizada. Por exemplo, a última camada de convolução da VGG16 é formada por 512 mapas de dimensão 14×14 (block5_conv3). Por isso, ao final o mapa é redimensionado para o tamanho original da imagem de entrada.

O autor sugere, ainda, o CAM como um localizador de objeto, no qual a caixa delimitadora (bounding-box) seria obtida por meio de limite (threshold). Ele sugere que toda região 20% abaixo do valor máximo do mapa seja uma região de interesse. A partir disso, é construído um retângulo que englobe a maior área conectada.

Outra forma de obter esse mapa de forma mais objetiva, obtendo novos pesos para uma resposta desejada, é a proposta do Grad-CAM.

Os pesos, agora, utilizam o gradiente da função de ativação da resposta em relação aos mapas da última convolução, onde os mapas são representados por A, cujos índices indicam o k-ésimo mapa e i,j indicam a posição espacial no grid.

Depois, a função ReLU é aplicada para manter apenas as influências que ativam a classe c, valores negativos indicam ativação de outras classes.

Vejamos alguns exemplos:

Exemplo #1: nela é possível observar que a região mais expressiva para identificar o elefante corresponde aos olhos e parte da orelha, sendo que apenas um pedaço da tromba aparece com destaque.

Exemplo #2: interessante notar que a região dos olhos, listras da cabeça e focinho são mais ativas para a classe Gato Malhado (índice 281, segundo o ImageNet), com maior destaque para o lado esquerdo.

Exemplo #3: no banner a seguir, podemos ver que os pixels mais ativados para a classe Border Collie correspondem ao cão que está no centro da imagem, classificando-o corretamente. Já para o Cocker Spaniel, os pixels mais ativados classificam o cão na parte inferior, que pertence a essa raça, e o cão maior à esquerda que apresenta características semelhantes, como orelhas caídas e largas, porém trata-se de outra raça canina.

Exemplo #4: nesta outra imagem com dois elementos, podemos ver quais regiões são mais ativadas quando pedimos a classe 281 do ImageNet (gato malhado) e 208 (Labrador, mesmo não sendo). O banco de dados do ImageNet detalha as raças, por isso estou adotando uma aproximada como exemplo.

Considerações Finais

A primeira versão do CAM permite um cálculo bem simples e nos mostra quais áreas ficam mais ativadas em uma classificação. A segunda versão nos permite algo ainda mais interessante que é estimular a função de ativação e ver como os features maps se comportam. Ou seja, dada uma imagem, é possível saber como as mil categorias de respostas ativam os mapas.

Agradecimentos:

Revisão: Fernanda Ribeiro e Comunicação Institucional Porto Seguro

Referências

B. Zhou, A. Khosla, L. A., A. Oliva, and A. Torralba. Learning
Deep Features for Discriminative Localization. In CVPR, 2016.

Selvaraju, R.R., Cogswell, M., Das, A. et al. Grad-CAM: Visual Explanations from Deep Networks via Gradient-Based Localization. Int J Comput Vis (2019) doi:10.1007/s11263–019–01228–7

--

--