research notes

Class Activation Map (CAM) 본문

인공지능 신뢰성/eXplainable AI(XAI)

Class Activation Map (CAM)

forest62590 2022. 2. 22. 12:51
728x90

1. Class Activation Map (CAM) 개요

학습된 네트워크가 이미지들을 판변할 때 각각 이미지에서 중요하게 생각하는 영역은 다를 것이다. 이를 시각화해주는 알고리즘이 바로 Class Activation Map(CAM) 관련 알고리즘들이다.

 

2. Class Activation Map (CAM) 구조

< Class Activation Map 구조 >

일반적으로 Flatten을 수행하여 Fully-Connected에 연결을 수행하는 CNN과는 달리 CAM에서는 Global Average Pooling (GAP) 기법을 사용

3. Class Activation Map (CAM) 관련 알고리즘 

- Weakly Supervised Object Localization

< (a) Fully-Supervised Object Detection (FSOD) uses the instance-level annotations as supervision. (b) Weakly-Supervised Object Detection (WSOD) uses the image-level annotations as supervision. >

Computer vision 분야에서 널리 알려진 Object Detection 문제는 주어진 이미지에 대해 물체가 무엇이고 어디에 있는지를 찾는게 목적이다. 이런 문제를 해결하는 모델을 학습하려면 두 가지의 annotation이 필요하다. 하나는 Object의 위치 및 크기를 표현하는 Bounding Box, 또 다른 하나는 그 물체가 무엇인지를 나타내는 물체의 category이다.

 

Weakly supervised object detection (WSOD)은 데이터가 좀 더 제한된 상황을 가정한다. Training data의 사진 내에 어떤 물체가 있는지 category만 주어지고, 해당 물체의 크기와 위치를 나타내는 bounding box는 빠져있다.

 

CAM의 경우 WSOD의 결과로 Heatmap을 얻게되고, Heatmap 근처에 Bounding box를 그리게 되면 FSOD와 유사한 결과를 획득할 수 있음이 알려져있다.

 

- Global Average Pooling (GAP)

CNN 모델에서 Layer를 깊게 쌓으면서, model parameter의 수가 너무 많아지는 경향이 있어, 도대체 어디서 이 수많은 parameter 를 필요로 하는지 알아보니, FC layer (Fully-connected layer) 에서 상당량의 parameter 를 요구하고 있었다. 또한, FC layer 특성상 저 많은 parameter 를 학습할 때 필연적으로 overfitting 이 발생하며, Convolutional layer에서 FC로 연결할 때 Flatten을 수행하는데 이 때 공간에 대한 정보가 사라진다. 따라서 위와 같은 문제들을 해결하기 CAM에서는 GAP을 사용하여 Heatmap을 사용하는 알고리즘을 제시하였다.

 

< Global Average Pooling structure >

4. CAM 수행

- CAM 계산식

- CAM 계산 개요도 ①

- CAM 계산 개요도 ②

각 feature map f_k (i, j)에 각 class에 대한 가중치 w^ck를 곱해주면 heatmap을 featuremap 개수 k 만큼 얻을수 있다. 이 heatmap 이미지를 모두 pixel-wise sum을 해주면, 하나의 heatmap을 얻을 수 있는데, 이게 바로 CAM 이다.

5. Class Activation Map (CAM) Summary

< 데이터셋 별 CAM 결과 이미지 >

  1. 이미지의 위치 정보를 그대로 사용하여 분류한다.
  2. 이미지가 분류될 때, 어떤 부분이 이미지 분류에 영향을 미친건지 시각적으로 확인할 수 있다.

References:

Class Activation Map (CAM)

[1] https://tyami.github.io/deep learning/CNN-visualization-Grad-CAM/

[2] https://junklee.tistory.com/32

[3] https://jinnyjinny.github.io/papers/2020/03/04/CAM/

[4] https://velog.io/@tobigs_xai/CAM-Grad-CAM-Grad-CAMpp

 

Weakly Supervised Object Localization

[1] https://junklee.tistory.com/32

[2] Shao, Feifei, et al. "Deep Learning for Weakly-Supervised Object Detection and Object Localization: A Survey." arXiv preprint arXiv:2105.12694 (2021)

[3] https://blog.lunit.io/2019/08/01/c-mil-continuation-multiple-instance-learning-for-weakly-supervised-object-detection/

 

Global Average Pooling (GAP)

[1] https://jetsonaicar.tistory.com/16

[2] https://m.blog.naver.com/qbxlvnf11/221932118708

 

CAM-Pytorch source codes

[1] https://medium.com/@stepanulyanin/implementing-grad-cam-in-pytorch-ea0937c31e8

728x90
Comments