일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인공지능
- python
- 코딩테스트
- xai
- 메타러닝
- 설명가능한
- coding test
- SmoothGrad
- Score-CAM
- 딥러닝
- grad-cam
- Class activation map
- Cam
- AI
- 백준
- GAN
- Deep learning
- Unsupervised learning
- Interpretability
- Artificial Intelligence
- Machine Learning
- cs231n
- 머신러닝
- 설명가능한 인공지능
- Explainable AI
- 기계학습
- keras
- 코딩 테스트
- meta-learning
- 시계열 분석
- Today
- Total
iMTE
Adapting Grad-CAM for Embedding Networks 내용정리 [XAI-8] 본문
Adapting Grad-CAM for Embedding Networks 내용정리 [XAI-8]
Wonju Seo 2021. 5. 20. 17:37논문 제목 : Adapting Grad-CAM for Embedding Networks
논문 주소 : https://openaccess.thecvf.com/content_WACV_2020/html/Chen_Adapting_Grad-CAM_for_Embedding_Networks_WACV_2020_paper.html
주요 내용 정리:
1) Grad-CAM은 deep model의 예측을 설명하는 heatmap을 제공할 수 있다는 점에서 유용하다. 하지만, embedding networks에 Grad-CAM을 사용하는 것은 어려움이 있다. 그래서 저자는 Grad-CAM을 embedding network에 적용시키는 방법을 제안한다. 밑의 두 단계가 핵심이다.
- (1) Grad-CAM을 사용해서 (Grad-CAM++도 사용 할 수 있다.) 여러 training examples로 부터 획득된 gradients를 average 한다.
- (2) Testing image에는 backpropagation 없이, nearest negihbor search 방법을 사용해 유사한 training examples의 embedding space을 사용하여 CAM 이미지를 형성한다. (weight-transfer)
Embedding networks의 visual explanation의 예가 밑의 그림에 표현되어 있다. (밑의 그림을 보면 visual attention이 object를 잘 설명하고 있음을 알 수 있다.)
2) 바로 Grad-CAM을 embedding network에 사용하지 못하는 이유가 무엇인가? 저자는 두가지 이유를 소개한다.
- (1) Embedding network에 직접 Grad-CAM을 적용시키면, testing image의 gradient weights를 직접 얻을 수 없다.
- (2) 부정확한 visual attention을 유도한다.
이 논문의 주요 contributions은 3개로 다음과 같다.
- (1) Embedding network의 features를 visualize하기 위해서 Grad-CAM을 사용하였고, 이 방법이 기존 Grad-CAM보다 더 좋은 visualization을 제공한다.
- (2) Testing imgae에 대해서 backpropagation을 구할 필요 없이 visualization을 하는 weight-transfer 방법을 개발하였다.
- (3) Public dataset에 적용을 시키고, 그 결과를 분석하였다.
3) 저자는 embedding network로 triplet network를 사용하였다. triplet network는 weights을 공유하는 세개의 network로 구성되어 있고, anchor, positive, negative image를 입력으로 받는다. 이 network의 loss는 다음과 같이 표현된다.
$$ L_{tri}(a,p,n) = [D(f_a,f_p)-D(f_a,f_n)+\delta]_+ $$
여기서 $f$는 embedding vector, $D(\cdot)$은 squared Euclidean distance, $\delta$ 는 margin, $[\cdot]_+$는 hinge function을 의미한다.
기존, Grad-CAM은 다음과 같이 표현된다.
$$g_c(A^k)=\frac{\partial y^c}{\partial A^k}$$
위에서, k는 channel의 index이다. 각 k 번째 channel의 feature map에 neural importance는 다음과 같이 표현된다.
$$\alpha_k^c=\frac{1}{Z}\sum_i \sum_j \frac{\partial y^c}{\partial A_{i,j}^k}$$
$(i,j)$는 spatial index이고, Z는 feature map의 spatial resolution이다. 다음으로 Grad-CAM이 최종적으로 구해진다.
$$H_{Grad-CAM}^c = ReLU(\sum_k \alpha_k^c A^k)$$
Embedding network에서는 위의 Gard-CAM에서 몇몇 부분이 수정이 된다. 먼저, per-class gradient는 다음과 같이 수정된다.
$$g(A^k)=\frac{\partial L_{tri}}{\partial A^k}$$
$$\alpha_k=\frac{1}{Z} \sum_i \sum_j \frac{\partial L_{tri}}{\partial A_{i,j}^k}$$
(논문에서는 $L_{tri}$ 앞에 $\partial$이 빠져있는데, 저자가 실수로 빼먹은 것 같아서 넣었습니다. 그리고 위의 gard-weights은 anchor image에 해당하는 것이다.)
$L_{tri}$에서 pair-wise distance를 쓰는것보다는 distance difference $(D(f_a,f_p)-D(f_a,f_n))$를 사용하는 것이 더 정확하다고 보고하고 있다.
Triplet network에서 많은 수의 triplets이 학습에 사용되고 있어서, 하나의 triplet에서 구해진 loss가 모든 triplets을 설명할 수는 없다. 다라서, 몇개의 triplets을 sampling하고 이들의 grad-weights을 average하는 방법으로 최종적인 grad-weights을 구한다.
$$\alpha_k=\frac{1}{N_s}\sum_s \alpha_k^s$$
Grad-weights을 average 함으로써, 하나의 triplet을 사용한 것 보다 더 정확하고 나은 CAM을 얻을 수 있다. 또한 저자는 모든 channels의 weights을 사용하는 것 보다 top-weights을 사용하는 것이 더 나음을 발견하였다. 저자는 먼저 각 cahnnel의 weights을 sorting하고 가장 큰 weight value를 갖는 M개의 channel만을 사용하였다 (top-M weights). 밑의 그림을 보면 왜 이렇게 했는지 이해할 수 있다. 먼저 single triplet을 사용한 것 보다, multiple triplet을 사용한 것이 더 나은 visualization을 갖는다는 것을 알 수 있고, 다음으로 top-M weights을 사용하는 경우 더 개선된 visualization을 갖는다는 것을 확인 할 수 있다.
이 방법은 sharpen focus라는 방법과 유사한 아이디어로, 높은 평균 gradient values를 갖는 channels을 강조를 한다. 또한, 이 방법은 적은 storage와 computation cost를 쓴다. (50개 channels만 사용하니..) 이런 점에서 top-M weights은 유용하다. 밑의 그림을 보면, channels의 수가 많을 수록 성능이 좋아지는 것은 아니고, 50개 정도가 성능이 높으며, 몇몇 channel만 probability가 크다는 것을 알 수 있다.
다음으로 제안된 방법은 Grad-CAM외에도 Grad-CAM++와 같은 Grad-CAM variants를 사용할 수 있다.
4) Testing에서 testing images와 비슷한 trianing images의 grad-weights을 사용하여 CAM을 형성하는 방법을 제시하였다. 이는 비슷한 이미지인 경우 비슷한 attributes를 공유할 것이라는 가정이 전제되어 있다. 이때, 비슷한 training images를 찾을 때에 nearest neighbor search 방법을 사용하여, backpropagation을 필요로 하지 않는다. 밑의 그림을 확인해보면 trianing images에서 보이는 CAM이 testing images에서도 비슷하게 나타나는 것을 알 수 있다.
5) 결과를 확인해보자. 주어진 이미지의 bounding box와 mask에 얼마나 CAM이 겹치는 지를 평가하는 지표를 보여주는 테이블로부터 제안한 방법이 가장 좋은 성능을 보임을 알 수 있다.
Qualitative 분석으로 밑의 그림을 보면, 제안된 방법에 Grad-CAM++, top-M weights 사용한 접근이 좋은 visualization을 보여주었음을 알 수 있다.
이후 hourse price estimation에 대한 내용이 나오는데, 이 내용은 관심이 있으면 읽어보길 바란다. 짧게 정리하자면, 제안된 방법의 visual features를 사용할 때, 더 잘 예측한다라고 보면 될 듯 하다.
+
본 논문의 핵심은 testing images의 CAM을 구할 때, backpropagation을 사용하지 않아도 된다는 점과, 여러 triplets의 grad-weights의 average값을 사용해 좀 더 정확한 visualization을 이룬 것이다.