밍경송의 E.B

CAM(Class Activation Map) 개념 및 논문 정리 본문

DL&ML/model

CAM(Class Activation Map) 개념 및 논문 정리

m_gyxxmi 2024. 8. 8. 16:13

 

특정 모델이 위 그림처럼 한 이미지를 보고 '사슴'이라고 분류했을 때 이 모델이 어떻게. 이미지의 어느 부분을 보고 '사슴'이라는 결과를 도출해낸 걸까요?

--

Neural network는 수백만 개 이상의 파라미터가 복잡하게 연결된 구조이기 때문에 왜 작동하는지, 어떻게 특정 결과를 도출하는지 사람이 알 수 없다는 점 때문에 Black box라고도 불리는데요. 특히 이미지를 다루는 모델의 경우 non-linear activation function 때문에 그 파악이 더욱 어렵다고 합니다.

 

이런 딥러닝 모델을 visualization하기 위한 여러 방법이 제시되었고, 현재는 이것이 eXplainable AI, XAI라는 하나의 분야로 자리잡게 되었습니다.

 

그리고 오늘은 그 중에서도 널리 알려진, 2016년에 공개된 'CAM'에 대해 알아보고자 합니다.

 


Learning Deep Features for Discriminative Localization

by Bolei Zhou, Aditya Khosla, Agata Lapedriza, Aude Oliva, Antonio Torralba Computer Science and Artificial Intelligence Laboratory, MIT

 

https://arxiv.org/abs/1512.04150

 

Learning Deep Features for Discriminative Localization

In this work, we revisit the global average pooling layer proposed in [13], and shed light on how it explicitly enables the convolutional neural network to have remarkable localization ability despite being trained on image-level labels. While this techniq

arxiv.org

 

목차

 

1. Introduction

2. CAM

3. Weakly-supervised object Localization

4. Deep features for Generic Localization

 

*Abstract

본 연구는 GAP를 이용해 CNN이 어떻게 객체를 정확하게 파악할 수 있는지를 밝혀냈고, GAP를 사용하여 ILSVRC 2014 데이터셋에서 top-5 오류율을 달성함.

 

1. Introduction

원래 GAP(Global Average Pooling)는 training 동안에 과적합을 방지하기 위한 정규화 도구로 사용됐으나,

본 연구에서는 GAP의 장점이 localization 능력을 최종 레이어까지 유지하게 하며 + single forward-pass로도 판별적인 이미지 영역을 쉽게 identify할 수 있다는 것을 밝힘.

 

또한 ILSVRC bench-mark에 weakly supervised object localization에 대해 top-5 테스트 오류를 달성했는데 이것은 fully supervised된 AlexNet의 오류에 거의 근접한 수치임. = good!

 

Related work

- Weakly-supervised object localization

  • CNN을 사용하여 Weakly-supervised object localization를 탐구하는 연구들이 진행됨 (activation을 identify하기 위해 이미지 영역 마스킹기술, CNN feature과 다중 인스턴스 학습을 결합하는 방법 등) 그러나 이 방법들은 끝까지 훈련되지  않고, localization을 위해서는 여러 번의 forward-pass를 필요로 함.
  • 본 연구는 single forward-pass에서 object를 localization할 수 있음. *GMP를 사용한 연구도 있으나 GAP를 이용해야 물체의 전체 범위를 식별할 수 있음.

- Visualizing CNNs

  • Deconvolutional network를 사용하여 유닛 활성화를 시각화한 연구, object dectector를 함께 학습하여 recognize scene과 localization을 single forward-pass에서 수행할 수 있음을 보여준 연구 등이 존재. 그러나 convolutional layer만 분석하고, fully-connected layer을 무시함.
  • deep features를 반전시켜 CNN의 visual encoding을 분석한 연구도 존재하지만, 본 연구와 달리 정보의 상대적 중요성을 강조하지 않음.

 

2. CAM(Class Activation Map)

이 부분은 논문과 여러 자료를 참고하여 이해한 내용으로 대체하겠습니닷

 

먼저 CNN의 기본 구조를 살펴보면 아래와 같음.

 

크게 보면, 1) input image에서 feature map을 도출하는 단계와 이를 이용하여 2) classification을 진행하는 단계로 나눌 수 있는데 이때 마지막 layer를 FC-layer로 flatten시키면, 각 pixel들의 위치 정보를 잃게 되는 문제가 발생. 다시 말하면, CNN이 어느 부분을 보고 특정 class로 분류했는지 알 수 없다는 것(black box)

 

따라서 본 연구에서는 FC layer 대신 GAP를 적용하고자 하였고, 전체적인 구조는 아래와 같음.

 

 

 

 

GAPGlobal Average Pooling의 약어로, feature map에 포함된 모든 원소 값을 평균 낸 값을 출력함.

GAP layer를 거친 후의 값들을 input으로, 분류된 클래스를 output으로 하는 neural network를 학습시켜 w 값을 얻게 됨.

 

 

*이때 출력 값은 GAP layer로 들어오는 feature map의 채널 수와 동일한 길이를 가짐.

ex) 이미지가 1024개의 채널을 가진 convoluation layer를 통과했다면, GAP layer의 출력 벡터는 1024차원

 

 

위의 과정을 통해 클래스별 weight 을 feature map에 곱한 뒤, 아래 그림처럼 pixel 별로 더해주면 최종 heat map을 얻을 수 있음.

 

 

더보기

그런데, 앞서 말했듯 GAP를 취한 값을 가지고 하나의 추가적인 네트워크를 사용해야 하기 때문에, cost가 높아지는 문제가 발생한다.

 

이런 상황에서 고안된 것이 Grad CAM 💡!!

 

Grad CAM은 CAM과 달리 GAP를 사용하지 않고, 미분을 통해 weight를 구한다. 그리고 마지막으로 ReLU를 취하여 Heatmap을 출력한다! 구조 역시 GAP layer 대신, 마지막 convoluation layer의 output을 flatten한 뒤에 FC layer 2개를 거치게 하는 구조인데, 나중에 자세히 다뤄보도록 하겠다

 

원리는 단순한데 결과를 보면 모델이 주목하는 부분을 굉장히 잘 보여주는 것을 알 수 있음.

 

 

아래와 같이 하나의 이미지에 대해 다른 클래스를 사용하여, 각기 다른 CAM을 생성할 수도 있다는 것도 주목할 만하다.

 

 

 

 

3. Weakly-supervised object Localization

본 연구는 ILSVRC 2014 benchmark dataset과 AlexNet, VGGnet, GoogLeNet을 활용함.

 

먼저 , 제안된 GAP가 분류 성능에 큰 영향을 미치지 않는다는 것을 보여줌. -> 1-2%정도의 성능 하락이 나타남.

 

 

또한, weakly supervised 와 fully supervised의 비교를 통해 제안된 방법이 weakly supervised 환경에서 뛰어난 성능을 보이며, CAM을 이용하면 정확한 bounding box 생성이 가능함을 보여줌. (red one is by CAM)

 

 

 

 

 

4. Deep features for Generic Localization

 

GAP 피처가 다른 피처들보다 우수한 성능을 보이는 것을 확인

 

또한, CAM이 특정 작업이나 데이터셋에 국한되지 않고 다양한 시각적 인식 작업에 적용가능한, 일반적 정보를 담고 있다는 것을 보여줌. 

객체를 넘어 이미지에서 공통 요소나 패턴을 식별할 수 있고, VQA에서도 잘 활용이 가능한 점.

 

 

왜 CAM은 작동하는가?

마지막 convolution layer를 통과한 feature map은 input image의 전체 내용을 함축하고 있기 때문이다!

 

 

 

참고

https://wikidocs.net/135874

https://velog.io/@svenskpotatis/%EB%94%A5%EB%9F%AC%EB%8B%9D-CNN

https://www.youtube.com/watch?v=rRiygGHjkOQ