설명가능한 AI(Explainable AI, XAI) 분야에서 Grad-CAM (Gradient-weighted Class Activation Mapping)은 딥러닝 비전 모델의 결정 과정에 대한 시각적 설명을 제공하는 기법입니다. 주로 CNN 기반 이미지 분류 모델에 적용되며, 모델이 특정 예측을 할 때 어떤 영역(픽셀들)에 주목했는지를 시각적으로 보여줍니다.
| 항목 | 내용 |
|---|---|
| 전체 이름 | Gradient-weighted Class Activation Mapping |
| 주요 목적 | CNN 기반 모델이 이미지를 분류할 때 어디를 집중해서 판단했는지 시각화 |
| 주로 사용되는 모델 | VGG, ResNet, DenseNet 등 Conv layer 기반 이미지 모델 |
| 사용 대상 | 분류하려는 특정 클래스(class c) |
| 출력 결과 | 원본 이미지 위에 heatmap(중요도 맵)을 겹쳐서 시각화 |
Grad-CAM은 특정 클래스에 대한 출력 score와 마지막 Convolution layer의 feature map과 gradient를 활용합니다.
예를 들어 “Golden Retriever”로 분류된 이미지를 Grad-CAM으로 보면:
| 장점 | 설명 |
|---|---|
| 모델 수정 불필요 | 기존 CNN 모델의 내부 구조를 수정할 필요 없음 |
| 직관적인 시각화 | 인간이 쉽게 이해 가능한 heatmap 결과 |
| 클래스별 해석 가능 | 특정 클래스에 대해 조건부 시각화 가능 |
| 한계점 | 설명 |
|---|---|
| Conv 기반 모델에 국한 | Vision Transformer, MLP 계열 등에는 기본 방식으로 사용 불가 |
| 해상도 제한 | 마지막 conv layer의 해상도에 따라 heatmap이 흐릿할 수 있음 |
| 해석의 정확성 | 강조된 영역이 반드시 모델의 실제 reasoning과 정확히 일치한다고 볼 수는 없음 |
| 기법 | 설명 |
|---|---|
| CAM (Class Activation Mapping) | 특정 구조를 가진 CNN에서만 가능 (예: GAP layer 필요) |
| Grad-CAM++ | Grad-CAM의 개선형으로, 다중 객체 인식에 더 잘 작동 |
| Score-CAM | Gradient 사용 없이, score 차이를 기반으로 중요도 추정 |
| XAI 비교 예시 | Grad-CAM은 이미지용, LIME/SHAP은 탭/텍스트에도 활용됨 |
# pytorch-grad-cam 라이브러리 활용
from pytorch_grad_cam import GradCAM
from pytorch_grad_cam.utils.image import show_cam_on_image
target_layer = model.layer4[-1] # 마지막 Conv block
cam = GradCAM(model=model, target_layers=[target_layer], use_cuda=True)
grayscale_cam = cam(input_tensor=input_tensor, target_category=281) # ex. tabby cat
visualization = show_cam_on_image(rgb_image, grayscale_cam[0])
“Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization”
Ramprasaath R. Selvaraju et al., ICCV 2017
Grad-CAM: Visual Explanations from Deep Networks via...