일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AI
- Explainable AI
- SmoothGrad
- Score-CAM
- 머신러닝
- Unsupervised learning
- meta-learning
- cs231n
- 메타러닝
- 설명가능한
- coding test
- 백준
- 인공지능
- Cam
- Machine Learning
- 시계열 분석
- GAN
- Artificial Intelligence
- Deep learning
- 기계학습
- python
- 코딩테스트
- Interpretability
- Class activation map
- 설명가능한 인공지능
- xai
- keras
- grad-cam
- 딥러닝
- 코딩 테스트
- Today
- Total
iMTE
CAM (Class activation mapping) 내용 정리 [XAI-2] 본문
CAM (Class activation mapping) 내용 정리 [XAI-2]
Wonju Seo 2021. 4. 8. 17:55논문 제목 : Learning deep features for discriminative localization
논문 주소 : openaccess.thecvf.com/content_iccv_2017/html/Selvaraju_Grad-CAM_Visual_Explanations_ICCV_2017_paper.html
주요 내용 :
1) CNN 에서 다양한 layer의 convolutional units은 object detectors로서 역할을 한다. 하지만, fully connected layer의 사용은 이런 object를 localize하는 특징을 잃어버리게 한다. 그래서 최근 fully-convolutional neural network 방법들이 사용되고 있다. Regularization 방법으로 사용되었던 global average pooling (GAP)을 사용해서 localization을 유지하는 것을 바탕으로 class specific activation map을 만들어내는 것을 목표로 한다. 이 방법은 end-to-end 방법으로 한번의 forward pass로 CAM을 구할 수 있다.
2) GAP는 global max pooling 보다 나은데, 저자는 강력한 discriminative object 만을 classificaiton에 사용하는 것보다는 모든 discriminative object를 classification에 사용하는 것이 더 나은 것이라고 말하고 있다. (주된 feature를 사용하는 것보다 약하지만 여러 개의 feature를 사용하는 것은 성능 향상에 어느정도 도움이 된다.)
3) 먼저, CNN 이후 flatten layer를 GAP으로 대체하고 fully-conncted layer를 연결한다. (CNN-GAP-Dense-Softmax) 기본적으로 CNN의 top layer 에서의 feature map은 특정 object에 대한 정보를 담고 있다. 이 정보를 GAP로 하나의 point로 만들고, 이에 weights sum이 softmax에 입력이 되는 형태이다. 아래의 그림은 이를 나타내고 있다.
위의 그림에서 w1~wn은 각 object의 중요도를 담는다. 최종적으로 해당 class의 weights과 feature map을 다 곱하고 sum을 함으로써 특정 class의 결정에 영향을 미치는 object가 heatmap에서 나타날 수 있는 것이다. 만약, 사진에 고양이가 있고 이 그림을 고양이라고 분류했다면, 네트워크의 고양이와 관련된 object를 담는 feature map의 weights들은 다른 feature map의 weights에 비해서 값이 클 것이다. 이 값들을 weights sum 하게 되면 고양이와 관련된 object 부분이 highlight가 될 것이다.
4) 위의 과정을 이해하기 위해서 수식적으로 정리해보자.
$f_k(x,y)$는 k 번째 feature map의 (x,y) 좌표의 activation을 의미한다. 다음에는 GAP가 이어짐으로, k번째 feataure map에 해당하는 값은 다음과 같다. $F_k=\sum_{x,y}f_k(x,y)$. 여기서 특정 class c에 대한 class score는 다음과 같이 계산된다. $S_c=\sum_k w_k^c F_k$.
$w_k^c$ 는 c class에 대한 k 번째 feature map의 GAP 값의 중요도이며, 이는 학습되는 parameter 이다. Class score를 다시 풀어보면, $S_c=\sum_k w_k^c \sum_{x,y}f_k(x,y)=\sum_{x,y} \sum_k w_k^c f_k(x,y)$가 된다.
$M_c=\sum_k w_k^c f_k(x,y)$라고 정의하면, $S_c=\sum_{x,y} M_c(x,y)$가 된다. $M_c(x,y)$는 직접적으로 class c에 대한 (x,y) 좌표의 score를 나타내고, $M_c$는 class c에 대한 CAM이 된다. 계산된 CAM은 input image에 비해서 size가 작아 upsampling을 함으로 image size를 input size에 맞춰준다. 그 다음으로, heatmap을 그 위에 씌워주어 어느 부분이 classification에 영향을 미치는지 알 수 있게 된다.
5) 몇가지 예측 사례를 확인해보자.
위의 그림들에서 해당 class와 연관있는 region이 highlight 되는 것을 확인할 수 있다. 사람의 행동에 대한 classificaiton에서는 행동과 관련된 영역에서 highlight가 되는 것을 확인할 수 있고, 물체 classificaiton에서는 다른 물체가 있어도 해당 class와 관련된 영역만 highlight가 되는 것을 확인할 수 있다.
위의 사진을 보면, bounding box가 없이도, CAM을 사용하면 bounding box가 위치한 곳을 가리킬 수 있으며 labeling 없이, bounding box를 정해주는 도구로서 사용될 수 있다.
'Deep learning study > Explainable AI, 설명가능한 AI' 카테고리의 다른 글
Sanity checks for saliency maps, Equation sheets, [XAI-6 (1)] (0) | 2021.04.20 |
---|---|
SmoothGrad : removing noise by adding noise 내용 정리 [XAI-5] (0) | 2021.04.15 |
Smooth Grad-CAM++ 내용 정리 [XAI-4] (0) | 2021.04.14 |
Grad-CAM++ 내용 정리 [XAI-3] (0) | 2021.04.09 |
Grad-CAM (Gradient-weighted class activation mapping) 내용 정리 [XAI-1] (0) | 2021.04.08 |