iMTE

Score-CAM : Score-weighted visual explanations for convolutional neural networks [XAI-9] 본문

Deep learning study/Explainable AI, 설명가능한 AI

Score-CAM : Score-weighted visual explanations for convolutional neural networks [XAI-9]

Wonju Seo 2021. 5. 25. 14:30

논문 제목 : Score-CAM : Score-weighted visual explanations for convolutional neural networks

논문 주소 : https://openaccess.thecvf.com/content_CVPRW_2020/html/w1/Wang_Score-CAM_Score-Weighted_Visual_Explanations_for_Convolutional_Neural_Networks_CVPRW_2020_paper.html

 

CVPR 2020 Open Access Repository

Haofan Wang, Zifan Wang, Mengnan Du, Fan Yang, Zijian Zhang, Sirui Ding, Piotr Mardziel, Xia Hu; Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops, 2020, pp. 24-25 Recently, increasing attention has been dra

openaccess.thecvf.com

주요 내용 정리

1) 저자는 기존 Grad-CAM에서 gradient 정보를 사용해서 classification activation map (CAM)을 얻는 방법에 대해서 1) gradient issue와 2) false confidence 문제점을 언급하며, gradient 정보 없이도 CAM을 얻는 방법을 제시하였다.

  • 여기서 gradient issue란, gradient 계산시에 noisy하며, activation function (예, sigmoid, ReLU)의 saturation 현상에 의해서 saliency map에 문제가 있다는 것이다.
  • 다음으로, false confidence는 어떤 i 번째 activaiton map이 j 번째 activation map보다 더 중요한 것처럼 확인 되었으나, 결과적으로는 j 번째 activation map이 더 높은 target score를 갖는 것으로 확인 되는 case를 의미한다.
  • 저자는 global pooling operation과 gradient vanishing에 의한 현상이라고 가정하고 있다. 밑의 그림을 보면, 저자들이 제안한 Score-CAM은 보다 object에 명확한 CAM을 생성해낸다는 것을 알 수 있다.

2) 먼저, 기존 CAM, Grad-CAM의 공식을 확인해보자. $X\in \mathbb R^b$ 는 입력을 의미하고, $Y=f(X)$에서 Y는 probability distribution을 의미한다. $Y^c$는 target class c의 probability를 의미한다. 다음으로 $A_l$은 l 번째 layer의 activation을 의미하고, $A_l^k$는 l 번째 layer의 k 번째 channel의 activaiton을 의미한다. l 번째 layer에서 l+1 번째 layer를 연결하는 k 번째 neuron의 weight은 $w_{l,l+1}[k]$로 표현된다.

  • CAM : $L_{CAM}^c=ReLU(\sum_k \alpha_k^c A_{l-1}^k)$
    • $\alpha_k^c=w_{l,l+1}^c[k]$
  • Grad-CAM : $L_{Grad-CAM}^c=ReLU(\sum_k \alpha_k^c A_l^k)$
    • $\alpha_k^c=GP(\frac{\partial Y^c}{\partial A_l^k})$
    • 여기서 GP는 global pooling operation을 의미한다

CAM 경우 network structure에 global average pooling layer가 추가되어야하는 단점이 있으며, Grad-CAM은 이를 극복할 수 있는 방법이지만 앞서 말한 gradient issue와 false confidence에 의해서 문제점을 갖고 있다. False confidence에 대한 issue는 밑의 그림에서 확인할 수 있다. 밑의 그림에서 (2)는 다른 그림들에 비해서 높은 weight을 갖지만, 실제로는 적은 target score를 갖는 것을 알 수 있다.

3) Score-CAM의 모식도는 다음과 같다.

Input image를 먼저, CNN을 통과시켜서 activation map을 얻고, 이 activaiton map을 upsampling 하여 본 이미지에 곱해 그 부분만을 masking 한다. 이렇게 masking된 이미지를 CNN에 입력하고 나온 weights을 각 upsampling 된 activation map에 곱해줌으로써 최종 activation map을 만들 수 있는 것이다.

하나하나 구체적으로 알아보자.

먼저, $Y=f(X)$는 input vector $X=[x_0,x_1,...,x_n]^T$를 입력으로 받아들여, $Y$를 산출해낸다. Baseline input $X_b$에 대해서 $Y$에 대한 $x_i$의 contribution $c_i (i\in [0,n-1])$는 $X_b$의 $i$번째 값을 바꾸었을 때의 결과 값의 차이를 의미한다.

$$c_i=f(X_b\circ H_i)-f(X_b)$$

위 식에서 $H_i$는 $h_j=\mathbb I[i=j]$인 vector 이고, $\circ$는 Hadamard product이다.

다음으로 주어진 CNN 모델에 대해서, $Y$에 대한 l번째 convolutional layer의 k 번째 activation map ($A_l^k$)의 contribution 은 는 다음과 같이 정의된다.

$$C(A_l^k)=f(X\circ H_l^k)-f(X_b)$$

$$H_l^k=s(Up(A_l^k))$$

위 식에서 Up은 $A_l^k$을 input size로 upsampling 한 것이고, s는 input matrix를 [0,1]로 normalization 하는 function을 의미한다. 여기서, upsampling을 함으로써, input image에 대한 mask를 생성할 수 있으며, normalization은 smooth mask를 생성하는 역할을 한다.

최종적으로 Score-CAM의 식은 다음과 같다.

$$L_{Score-CAM}^c = ReLU(\sum_k \alpha_k^c A_l^k)$$

$$\alpha_k^c = C(A_l^k)$$

여기서 중요한 것이, $\alpha_k^c$는 softmax를 취해줘야한다는 것이다. 그렇지 않으면 성능이 좋지 않다.

Score-CAM의 알고리즘은 다음 그림에 표현되어있다.

4) 다른 방법과의 비교를 보아도 Score-CAM이 object에 CAM을 가장 잘 생성하고 있음을 밑의 그림을 통해 알 수 있다.

앞서, $\alpha_k^c$를 계산할 때, softmax를 취해야한다고 했는데, 이는 밑의 그림에서 그 이유를 알 수 있다. Softmax를 취하지 않는 경우 class discrimination ability가 떨어진다.

Multiple object에서도 Score-CAM이 더 높은 quality를 갖고 evidence를 찾는 것을 확인할 수 있다.

(이외에 논문에 Numerical results와 Deletion curve, Insertion curve에 대한 결과와 Sanity check에 대한 결과가 제시 되어 있다. 이에 대해서 알고 싶다면 논문에서 확인하길 바란다.)

마지막으로, Score-CAM은 왜 모델이 잘못된 prediction을 만들었는지에 대해서 진단하고, dataset의 bias를 확인할 수 있다.

위 그림에서 bicycle로 label이 되었으나 person으로 분류된 이미지를 보여주고 있다. 두개의 class에 대해서 saliency map을 그려보면 person class가 bicycle class와 correlated 되어있다는 것을 알 수 있다. 이는 데이터 셋에서 person이 등장할 때, bicycle 이 함께 있기 때문이다. 따라서 이 부분에서 mis-classification문제가 발생한다고 확인할 수 있고, 이는 training set의 bias가 있음을 지적할 수 있다.

+

저자는 기존에 mask를 생성해서 이미지를 가린다음에 변화되는 probability를 통해서 어느 region이 중요한지를 아는 perturbation 방법을 확장했다. Mask 생성 없이, activaiton map을 upsampling하여 masking을 대체함으로써, mask를 만들어야하는 수고를 줄였으며, 이렇게 생성된 masking에 CNN을 통과시켜 각 activation map의 중요도를 계산해내고, 최종적으로 linear combination과 softmax를 통과하여 class activation map을 생성해낸다.

개인적으로 Grad-CAM과 Grad-CAM++ 경우 gradient 정보를 바탕으로 바로 모델에 적용시킬 수 있다라면, 이 모델은 따로 activation map을 추출해서 upsampling을 하고 이를 다른 CNN을 통과시켜야하는 추가적인 computational load가 있을 것 이라는 것이다. 이런점은 trade-off로 성능과 computational load 사이의 적절한 점을 연구자는 찾을 필요가 있을 듯 하다.

Comments