iMTE

Smooth Grad-CAM++ 내용 정리 [XAI-4] 본문

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

Smooth Grad-CAM++ 내용 정리 [XAI-4]

Wonju Seo 2021. 4. 14. 17:12

논문 제목 : Smooth Grad-CAM++: An Enhanced Inference Level Visualization Technique for Deep Convolutional Neural Network Models

논문 주소 : arxiv.org/abs/1908.01224

 

Smooth Grad-CAM++: An Enhanced Inference Level Visualization Technique for Deep Convolutional Neural Network Models

Gaining insight into how deep convolutional neural network models perform image classification and how to explain their outputs have been a concern to computer vision researchers and decision makers. These deep models are often referred to as black box due

arxiv.org

주요 내용:

1) 저자는 Grad-CAM++에 SmoothGrad를 적용시킨 Smooth Grad-CAM++을 제안하였다. 이는 기존 Grad-CAM++ 대비, object localizaiton과 multiple occurrences의 CAM 생성에 좋은 성능을 보여준다. 또한, feature map에 따른 CAM 형성 및 neuron level에서의 CAM 형성도 가능한 것이 이 논문의 contribution이다.

2) Grad-CAM에서는 k 번째 feature map의 중요도는 다음과 같이 gradients에 global-averaged-pooling 을 사용하여 계산된다.

$$W_k^c=\frac{1}{Z}\sum_i\sum_j \frac{\partial Y^c}{\partial A_{ij}^k}$$

앞서 계산된 importance는 해당하는 feature map에 곱해지고, ReLU를 거쳐 최종 CAM이 형성된다.

$$L_{Grad-CAM}^{c}=ReLU(\sum_k W_k^c A^k)$$

Grad-CAM++ 에서는 global-averaged-pooling 대신에 positive partial derivative에 weighted sum을 하여 CAM을 형성한다.

$$W_k^c=\sum_i \sum_j \alpha_{ij}^{kc} ReLU(\frac{\partial Y^c}{\partial A_{ij}^k})$$

위 식에서 $\alpha_{ij}^{kc}$ 는 target class c에 대한 k 번째 activation map $A^k$의 location (i,j)의 중요도를 가리킨다.

Target class c에 대한 class score Y는 다음과 같이 나타낸다.

$$Y^c=\sum_k [\sum_i \sum_j [ \sum_a \sum_b \alpha_{ab}^{kc}ReLU(\frac{\partial Y^c}{\partial A_{ab}^k})]A_{ij}^k] $$

이전의 Grad-CAM++ 내용 정리에서 $\alpha_{ij}^{kc}$ 는 다음과 같이 정리되는 것을 확인하였다.

$$ \alpha_{ij}^{kc} = \frac{\frac{\partial ^2 Y^c}{(\partial A_{ij}^k)^2}}{2 \frac{\partial^2 Y^c}{(\partial A_{ij}^k)^2}+\sum_a \sum_b A_{ab}^k \frac{\partial ^3 Y^c}{(\partial A_{ij}^k)^3}}$$

3) SmoothGrad는 input x의 주변에서 sample을 뽑아서 gradient-based sensitivity maps을 그리는 방법이다. 

$$M_c(x)=\frac{1}{n} \sum_{1}^n M_c(x+N(0,\sigma^2))$$

이 방법은 좀 더 개선된 visualization map을 제공한다. 저자는 gradients의 계산에 이 방법을 사용하였다.

4) $D_1^k$, $D_2^k$, $D_3^k$를 k번째 feature map의 1차, 2차, 3차 미분의 값이라고 할 때, $\alpha_{ij}^{kc}$와 $W_k^c$는 다음 식으로 계산이 된다.

$$ \alpha_{ij}^{kc} = \frac{\frac{1}{n}\sum_1^n D_1^k}{2 \frac{1}{n} \sum_1^n D_2^k+\sum_a \sum_b A_{ab}^k \frac{1}{n} \sum_1^n D_3^k}$$

$$ W_k^c=\sum_i \sum_j \alpha_{ij}^{kc} ReLU(\frac{1}{n}\sum_1^n D_1^k)$$

5) Grad-CAM, Grad-CAM++, SM-Grad-CAM++을 비교하면 다음과 같다.

위의 그림에서 알 수 있는 것 처럼, SM-Grad-CAM++가 좀 더 object localization이 잘 되어 있으며, multiple occurrences을 잘 반영하는 것으로 보인다.

6) 특정 feature map과 특정 neuron에 대한 CAM을 확인하면 다음과 같다.

+

Grad-CAM++에 비해서 성능이 좋은 것을 단순히 몇개의 그림만으로 확인하는 것은 어렵다고 생각된다. (CAM 생성에 실패한 것도 보여줘야 믿을 만 하지 않을까?) Grad-CAM++ 논문에서 사용한 것 처럼 다양한 데이터 셋에서의 성능을 계산하여 제안하는 알고리즘의 검증이 필요하다.

Comments