Grad-CAM generalizes CAM => Grad-CAM 이 CAM을 커버할 수 있다 로 이해하시면 무리 없습니다.
paper에서 Grad-CAM이 CAM을 generalize 한다는 formal 한 증명을 준다고 하니 한번 자세히 들여다봅시다.
우선 CAM의 논리가 무엇인지 자세히 들여다보겠습니다.
CAM은 Global Average Pooling 와 Softmax 두 개의 layer가 직접적으로 연결돼있는 CNN모델에서만 loclization map을 얻을 수 있습니다.
자세히 적으면, 뒤에서 두 번째 layer가 K개의 feature maps를 생성한다면, \( A^k \in \mathbb {R}^{u \times v}\), 이 feature maps들에 index \( i, j \)를 붙여 \(A^k_{i, j}\)로 표현할 수 있고 이는 \(i, j\) 위치에 대한 feature map \(A^k\)의 activation이라고 할 수 있습니다.
이 feature map들에 spatially pooled using Global Average Pooling 연산을 적용한 뒤 선형 변환하여 class \(c\)에 대한 score \(Y^c\)를 생성합니다.
\(Y^c = \sum\limits_k w^c_k \frac {1}{Z} \sum\limits_i \sum\limits_j A^k_{ij} \)
\(w^c_k\) : weight connecting the \(k^{th}\) feature map with \(c^{th}\) class
\(\frac {1}{Z} \sum\limits_i \sum\limits_j\) : global average pooling
\(A^k_{ij} \) : feature map
자! 이제 \(w^c_k\)가 정확히 뭔지 알아보기 위한 계산들을 진행해보겠습니다.
사실 우리는 답이 뭔지 알고 끼워 맞추고 있지만 처음 생각해 낸 사람은 정말 대단한 것 같습니다.
이를 쉽게 풀어가기 위해서
\(\frac {1}{Z} \sum\limits_i \sum\limits_j\) : global average pooling
\(A^k_{ij} \) : feature map 이 부분을 \(F^k\)로 치환해주겠습니다.
즉, \( F^k = \frac {1}{Z} \sum\limits_i \sum\limits_j A^k_{ij} \)이라면
CAM이 score for c, \(Y^c\)를 구하는 식은 다음과 같이 적어줄 수 있습니다.
\(Y^c = \sum\limits_k w^c_k \cdot F^k\)
이제 score of class \(c\), \(Y^c\)의 \(F^k\)에 대한 변화량을 계산해보겠습니다.
\(\frac {\partial Y^c}{\partial F^k} = \frac { \frac {\partial Y^c}{\partial A^k_{ij}} }{\frac {\partial F^k}{\partial A^k_{ij} } } \)
위의 식을 보면 \( F^k = \frac {1}{Z} \sum\limits_i \sum\limits_j A^k_{ij} \) 었기 때문에
\(\frac {\partial F^k}{\partial A^k_{ij}} = \frac {1}{Z} \)입니다.
그럼
\(\frac {\partial Y^c}{\partial F^k} = \frac { \frac {\partial Y^c}{\partial A^k_{ij}} }{\frac {\partial F^k}{\partial A^k_{ij} } } = \frac {\partial Y^c}{\partial A^k_{ij}} \cdot Z\)으로 적어 줄 수 있습니다.
다시, \(Y^c = \sum\limits_k w^c_k \frac {1}{Z} \sum\limits_i \sum\limits_j A^k_{ij} \) 이기 때문에
\(\frac {\partial Y^c}{\partial A^k_{ij}} =w^c_k \)이고
\(w^c_k = Z \cdot \frac {\partial Y^c}{\partial A^k_{ij}} \)
등식의 성질을 이용하여 모든 index \(i,j\)에 대한 덧셈을 적용시켜주겠습니다.
\( \sum\limits_i \sum\limits_j w^c_k = \sum\limits_i \sum\limits_jZ \cdot \frac {\partial Y^c}{\partial A^k_{ij}} \)
여기서 상수 \(Z\)는 index \(i,j\)에 대하여 independent 함으로 앞으로 빼주겠습니다.
\( Z w^c_k = Z \sum\limits_i \sum\limits_j \cdot \frac {\partial Y^c}{\partial A^k_{ij}} \)
이는 다시 \(w^c_k\)앞에 Z가 붙은 이유는 \(Z=I\times J\)이기 때문입니다. 직전 포스팅에서 확인하실 수 있습니다.
\( w^c_k = \sum\limits_i \sum\limits_j \cdot \frac {\partial Y^c}{\partial A^k_{ij}} \)로 적을 수 있습니다.
이는 놀랍게도 Grad-CAM에서 정의한 \(\alpha^c_k\) : weight connecting the \(k^{th}\) feature map with \(c^{th}\) class 와 상수 배만큼(\(\frac {1}{Z} \)) 차이가 납니다.
이는 실제로 시각화 하거나 활용할 때 무시될 수 있는 [성질을 변환시키지 않는] 정도의 차이이기 때문에,
Grad-CAM이 CAM을 generalize한다고 할 수 있습니다.
'Have Done > Grad-Cam' 카테고리의 다른 글
[Grad-CAM] 간단히 발표용 (0) | 2022.02.16 |
---|---|
[Grad-CAM] How? ; Section 3.2 (0) | 2022.02.08 |
[Grad-CAM] How? ; Section 3 detail (0) | 2022.01.26 |
[Grad-CAM] How? ; Section 3 (0) | 2022.01.24 |
[Grad-Cam] What? ; Section 1, 2 (0) | 2022.01.24 |
댓글