본문 바로가기

Machine Learning Models/Techniques

Learning Deep Features for Discriminative Localization (CAM)

반응형

이번 포스트에서 다룰 내용은 explainable AI (XAI) 의 원조격인 CAM (Class Activation Mapping) 입니다. 2015년 CVPR 에서 발표되었고 이미지 classification 에 GAP (Global Average Pooling) 을 사용하여 이미지의 어느 부분이 모델의 판단 근거가 되었는지를 파악합니다. Figure 1에서 보듯이 GAP 층과 CAM 을 이용하여 이미지를 분류함과 동시에 이미지의 판단 근거가 되는 중요한 부분을 localization 하는 것이죠.

Class activation mapping

CAM 이란 각 카테고리 별로 모델이 카테고리를 파악하기 위한 중요하고 차별적인 이미지 부분을 말합니다. 이를 마지막 convolution layer 전체를 높이/너비에 대해 전체 평균을 낸 GAP 층을 이용해 구하게 됩니다. GAP 를 적용함으로써 CNN 의 공간적인 정보가 평균으로 합쳐지게 되고 여기에 fully-connected 층을 추가하여 분류를 진행하는 것이죠. CAM 은 마지막 fully-connected 층의 각 카테고리 별 파라미터를 GAP 층 결과와 선형결합하여 얻어집니다.

Figure 2에서 보듯 마지막 convolution layer 에 GAP 를 적용하면 [H,W,K] 였던 차원이 공간 축에 대해 평균이 적용되어 [K] 차원이 되버립니다. 이후 [K] 차원의 feature vector 에 대해 fully-connected 층을 추가하여 이미지 분류를 학습하게 되고 fully-connected 는 결국 feature vector 의 weighted sum 이니 CAM 또한 마찬가지로 fully connected 의 weighted sum 으로 구하는 것이죠. 

마지막 convolution layer 의 $k$번째 channel 의 $x, y$ 의 값을 $f_k(x, y)$라 한다면 GAP 의 결과는 $F^k = \sum_{x,y} f_k(x,y)$ 입니다. 여기에 마지막 fully-connected 층을 적용하면 클래스 $c$에 대한 결과값은 $S_c=\sum_k w_k^c F_k$가 되고 이 값이 $c$ 클래스에 대한 softmax 입력으로 들어가게 됩니다. ($w_k^c$는 클래스 $c$에 대한 fully-connected 의 파라미터입니다.) 클래스 $c$의 score, $S_c$를 Equation 1과 같이 풀어쓸 수 있고,

Equation 1

$M_c$를 클래스 $c$에 대한 class activation map 으로 Equation 2와 같이 정의합니다. 즉, $S_c$를 Equation 1의 오른쪽과 같이 정의할 수 있으니 클래스 $c$에 대한 위치 $(x,y)$ 의 importance로 정의하겠다는 것이죠.

Equation 2

정리하면 $f_k$가 어떠한 시각적인 정보/패턴을 담고 있을 때 class activation map $M_c (x,y)$는 $(x,y)$ 좌표에서 클래스 $c$ 에 관한 $f_k$의 weighted 선형결합이 되게 됩니다. $M_c$를 이미지 크기에 맞게 upsampling 을 하면 각 카테고리에 맞는 이미지의 중요한 부분을 포착할 수 있습니다. Figure 3에서처럼 이미지 분류에서 특정 카테고리로 판단하기 위한 이미지의 근거를 추출하는 것입니다.

Figure 4는 하나의 이미지에 대해 분류 확률이 높게 나온 5개의 카테고리에 대해 CAM 을 추출한 것입니다. 각 카테고리 별로 이미지의 중요한 부분이 상이한 것을 볼 수 있습니다.

 

Experiment

Weakly-supervised object localization

이미지 분류를 통해 추출한 CAM 이 실제 이미지 상의 객체의 위치를 얼마나 잘 포착하는지 실험합니다. 먼저 AlexNet, VGGnet, GoogLeNet 에 대해 마지막 fully-connected 층을 GAP+fully-connected 로 변경합니다. 특히 각 모델의 마지막 convolution layer 의 해상도를 증가시키기 위해 각 모델의 일부 downsampling 을 위한 pooling layer 를 제거합니다. 그후 ImageNet 에 대해 1000개의 카테고리 이미지 분류를 학습합니다.

CAM 의 localization 을 확인하기 위해 CAM 으로부터 bounding box를 생성합니다. CAM 에서의 최대값의 20%가 넘는 픽셀들을 먼저 추출하고 그 픽셀들을 모두 담을 수 있는 bounding box를 생성합니다. 기존 baseline 대비 결과는 Table 2와 같으며 (ImageNET의 validation 데이터셋에 대한 결과) AlexNet* 은 모델은 일부 layer를 제거한 거에 대한 보상으로 2개의 convolution 층을 GAP 전에 추가한 것입니다.

특히 CAM 으로 뽑은 bounding box는 bounding box 라벨이 아닌 이미지 클래스 라벨을 활용한 weakly-supervised 학습의 일종으로 볼 수 있는데 이것을 supervised 학습을 통한 성능과 비교합니다. Table 3은 ImageNet의 테스트 데이터셋에 대한 결과로서 CAM을 통한 weakly-supervised 성능이 fully-supervised 에는 못 미치지만 AlexNet의 성능에는 3% 정도의 차이로 근접한 것을 확인할 수 있습니다.

Deep features for generic localization

Pretrained 모델의 feature 가 이후 downstream task 의 성능 향상에 도움이 된다는 사실은 익히 알려져 왔습니다. 여기서도 GAP 를 통해 얻은 representation 이 다른 task 에도 잘 적용이 되는지 실험합니다. GAP 이후에 선형 SVM 을 달아 다른 데이터셋에 대해 실험을 하는 것이죠. Table 5을 보면 다른 데이터셋에 대해서도 어느 정도의 성능을 얻을 수 있는 것을 보아 GAP representation 이 generic feature 로서 기능한다고 볼 수 있습니다. 초기 representation learning 이죠.

또한, 선형 SVM 의 weight를 곱해 얻은 CAM 이 다른 데이터셋에 대한 localization을 잘 수행하는지 Figure 8을 통해 볼 수 있습니다. 간단한 선형 SVM의 weight 를 통해 얻은 CAM 이라도 각 클래스에 맞는 중요 부분을 잘 포착한 것을 볼 수 있습니다.

 

참조

반응형

'Machine Learning Models > Techniques' 카테고리의 다른 글

Label Smoothing  (0) 2021.06.15
CutMix  (0) 2021.06.10
Mish  (0) 2021.06.06
Interpretable Explanations of Black Boxes by Meaningful Perturbation  (0) 2021.03.16
FLOPS (FLoating point OPerationS) - 플롭스  (2) 2021.02.25