일반적으로는 메트릭만 가지고도 모델이 잘 학습되었는 지를 파악할 수 있지만, 이미지 기반 모델의 경우 Feature Map을 시각화 해서 보면 모델이 어떤 식으로 학습되었고 어떤 부분에 집중하는 지를 조금 더 직관적으로 파악할 수 있다.
$ pip install explainable-cnn
from explainable_cnn import CNNExplainer
cnn_explainer = CNNExplainer(model, class_labels)
Pytorch에서는 위와 같이 모델과 이에 해당하는 label을 불러와서 CNNExplainer에 넣으면 된다.
saliency_map = cnn_explainer.get_saliency_map(
IMG_PATH, 3, (224, 224))
guided_backprop = cnn_explainer.get_guided_back_propagation(
IMG_PATH, 3, (224, 224)
)
grad_cam = cnn_explainer.get_grad_cam(
IMG_PATH, 3, (224, 224), ["features"]
)
guided_grad_cam = cnn_explainer.get_guided_grad_cam(
IMG_PATH, 3, (224, 224), ["features"]
)
Sailency Map, Guided Backpropagation, Grad CAM 등의 방식이 있다.
Feature Map을 분석할 이미지의 경로와 해당 이미지가 속한 레이블을 입력으로 넣어줘야 한다.
Grad CAM의 경우, 모델의 레이어 단위로 시각화 가능하다.