일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 딥러닝
- Deep learning
- grad-cam
- xai
- 인공지능
- Class activation map
- Score-CAM
- cs231n
- Unsupervised learning
- python
- 백준
- 메타러닝
- meta-learning
- 시계열 분석
- 머신러닝
- Cam
- Machine Learning
- GAN
- 코딩테스트
- SmoothGrad
- Explainable AI
- 코딩 테스트
- 설명가능한 인공지능
- keras
- 기계학습
- Artificial Intelligence
- 설명가능한
- Interpretability
- coding test
- AI
- Today
- Total
iMTE
SS-CAM: Smoothed Score-CAM for Sharper Visual Feature Localization 내용 정리 [XAI-10] 본문
SS-CAM: Smoothed Score-CAM for Sharper Visual Feature Localization 내용 정리 [XAI-10]
Wonju Seo 2021. 6. 1. 15:38논문 제목 : SS-CAM: Smoothed Score-CAM for Sharper Visual Feature Localization
논문 주소 : https://arxiv.org/abs/2006.14255
주요 내용 정리
1) 저자는 Score-CAM에 smoothing effect를 추가하여 더 나은 classification activation map (CAM)을 만드는 것을 제안하고 있다. SmoothGrad에서 input에 noise를 추가하는 방법을 동일하게 사용하여, Score-CAM에서 1) activation map에 noise를 추가하거나, 2) Masking image에 noise를 추가하는 방법으로 smoothing effect를 추가하였다 (그래서 이름이 Smoothed Score-CAM, SS-CAM 이다.). 밑의 그림을 보면, Score-CAM이 object에 대해서 부정확하게 CAM을 형성하는 것을 볼 수 있는데, 이에 반해 SS-CAM은 좀 더 object에 localized된 CAM을 형성하고 있음을 확인 할 수 있다.
Score-CAM에서 이러한 noisy한 CAM이 생성되는 이유에 대해서 저자는 ReLU non-linearity에 의해서 생성 된 것이라고 보고 하고 있다.
2) 먼저, 이 SS-CAM의 기본이 되는 SmoothGrad에 대해서 확인해보자. SmoothGrad는 이전 포스팅에서 소개한 것 처럼, input image에 noise를 넣어서 생성된 saliency map을 average하여서 좀 더 smooth한 saliency map을 만드는 것을 목표로 한다.
$$ \hat M_c(x)= \frac{1}{n}\sum_1^n M_c (x+\mu (0,\sigma^2))$$
위 식에서, $x$는 input image, $n$은 samples의 개수를 의미한다. $\mu (0,\sigma^2)$는 평균이 0이고 분산이 $\sigma^2$인 Gaussian noise를 의미한다.
Score-CAM은 다음과 같이 CAM을 생성한다.
$$L_{Score-CAM}^c = ReLU(\sum_k \alpha_k^c A_l^k)$$
$$\alpha_k^c = C(A^k)$$
$c$는 관심이 있는 target class, $l$ 은 convolutional layer, $C(\cdot)$은 activation map $A_l^k$의 Channel-wise increase of confidence (CIC) 를 의미한다.
$$C(A_l^k)=f(X\cdot H_l^k)-f(X_b)$$
$$H_l^k = s(U(A_l^k))$$
$$s(A_l^k) = \frac{A_l^k - min(A_l^k)}{max(A_l^k)-min(A_l^k)}$$
$X_b$는 baseline input, $X$는 input image, $A_l^k$는 $l$ convolutional layer의 k번째 activation map, $U(\cdot)$은 $A_l^k$를 input image size로 upsampling 하는 operation, $s(\cdot)$은 normalization function을 의미한다.
SmoothGrad와 Score-CAM을 섞기 위해서, 저자는 두가지 방법을 생각하였다.
- 1. Activation map에 noise를 추가
- 2. Masking된 image에 noise를 추가
1번 방법에서, SS-CAM은 다음과 같은 식을 통해서 CAM을 형성한다.
$$L_{SS-CAM}^c = ReLU(\sum_k \alpha_k^c A_l^k)$$
$$\alpha_k^c = \frac{\sum_1^N (C(M))}{N}$$
$$M=\sum_1^N (X_0*(A_l^k+N(0,\sigma)))$$
$X_0$는 input image, $\alpha_k^c$는 activation map $A_l^k$의 average channel-wise score, $N$은 noise samples의 개수를 의미한다.
2번 방법에서, SS-CAM은 다음과 같은 식을 통해 CAM을 형성한다.
$$L_{SS-CAM}^c = ReLU(\sum_k \alpha_k^c A_l^k)$$
$$\alpha_k^c = \frac{\sum_1^N (C(M))}{N}$$
$$M=\sum_1^N ((X_0*A_l^k)+N(0,\sigma))$$
전체적인 SS-CAM의 개요도는 다음과 같다.
3) 먼저 visualization에 대한 성능을 확인해보면, 이전 방법들에 비해서 좋은 성능을 보여줄 뿐만 아니라 base가 되는 Score-CAM에 비해서도 더 object를 localize하는 것을 확인 할 수 있다.
Numerical performance를 확인해보면, AUC scores of deletion and insertion curves에서도 좋은 성능을 보이고 average drop과 average increase in confidence에서도 좋은 결과를 보여준다.
Insertion game과 deletion game에서 sharp하게 증가하고 감소하는 것을 확인할 수 있다.
추가적으로, bounding box에 어느정도 saliency map이 포함되었는지를 확인하는 energy-based pointing game에서도 모든 모델에서 좋은 결과를 보여주었다.
마지막으로, 10명의 subjects를 뽑아서, huma trust 실험을 해본 결과, SS-CAM이 가장 높은 score를 얻었음을 알 수 있다. (SS-CAM (1)이 Score-CAM 보다 적은 score를 받았다.)
+
기존 Score-CAM에 SmoothGrad algorithm을 적용시킨 것으로 보인다 (SmoothGrad가 gradient-based saliency map을 smooth하게 만들어서 좀 더 sharp하게 만든 것이기에 이 아이디어를 Score-CAM에 확장시킨 것이다.). 당연히 noise samples을 만들고, 이들에 대한 activation map을 만들어야하기 때문에, 저자들이 지적한 것 처럼 많은 시간이 걸린다.
"The limitation of SS-CAM are that it takes a lot of time to process these explanations when compared to Grad-CAM."
개인적으로는, 성능을 최대한 유지하면서 이 processing time을 줄일지를 고민하는게 재미있는 연구 주제가 될 수 있을 듯 하다.