CAM (Class Activation Mapping)
CAM (Class Activation Map)은 CNN을 하는데 있어 이미지의 어떤 부분이 결정에 가장 큰 영향을 주는지에 대해 분석하는 목적으로 시작되었다. 대부분의 Image Classification 모델들은 여러 층의 Convolutional layer을 걸친 뒤 Fully-Connected Layer를 통해서 Classification을 진행하게 된다. 하지만 Convolutional layer는 layer를 거친 뒤에서 spatial information을 보존하지만 Fully-Connected Layer는 flatten 과정을 거치게 되면 spatial information의 손실이 발생하게 된다. 그래서 CAM은 Convolutional layer를 거친 후 Fully-Connected Layer를 바로 사용하고 GAP을 사용한 후 마지막 하나의 Fully-Connected Layer를 사용하였다. 여기서 CAM은 기존과 다르게 GAP (Gloval Average Pooling)을 적용시켜 마지막 판별 전까지 데이터 위치 정보가 훼손되지 않게 하였다.
예를 들자면, CNN이 '개'의 이미지를 보고 '개'라고 예측을 할 때, 어느 부분을 보고 그 이미지를 '개'라고 판정을 했는지에 대해 궁금한 것이다. CAM이란 특정 분류의 이미지를 어떠한 분류라고 예측하게 한 그 이미지의 부분의 정보를 의미한다.
하지만 CNN 구조에서 GAP 부분을 꼭 넣어줘야 하기 때문에 한계가 발생한다. CAM 방법론은 GAP가 반드시 필요하다는 것이 가장 큰 단점이 있다. GAP가 이미 포함되어 있는 경우는 괜찮지만 그렇지 않은 경우에는 마지막 convolutional layer 뒤에 GAP를 붙여서 다시 fine-tuning 해야 하며 그 결과 약간의 성능 감소가 동반될 수 있다. 따라서 GAP을 사용하지 않고 CNN모델 마지막 feature값과 연결 될 수 있는 weight를 활용할 수 있는 방법이 무엇일지에 대한 고민 끝에 나온 방법론이 Grad_CAM이다.
Grad-CAM (Gradient-weighted Class Activation Mapping)
CAM의 경우에는 활성화 맵을 얻기 위해서 GAP을 사용하고 그 뒤 Fully-Connected Layer를 사용하는 방식이다. 또한 결과물을 CNN으로만 시각화 할 수 있다. 이러한 점을 보안하기 위해 Gad-CAM (Gradient CAM)은 이러한 모델의 구조가 제한되는 문제를 해결하고 다양한 모델의 구조를 해석할 수 있는 방법을 제안한다. Grad-CAM을 사용하게 되면 CNN 기반의 네트워크는 굳이 모델 구조를 변경할 필요가 없으며, 분류 문제 외의 다른 테스크들을 유연하게 대처할 수 있다.
https://hygradcam.blogspot.com/2020/11/blog-post.html
'AI-driven Methodology > XAI (eXplainable AI)' 카테고리의 다른 글
[eXplainable AI] ProtoPNet (0) | 2022.05.02 |
---|---|
[eXplainable AI] Grad-CAM with MNIST (0) | 2022.02.10 |
[eXplainable AI] Basic XAI with LIME for CNN Models (0) | 2022.02.10 |
[eXplainable AI] XAI method : LIME (0) | 2022.02.10 |
[eXplainable AI] Categories of XAI (0) | 2022.02.09 |