본문 바로가기
Have Done/Grad-Cam

[Grad-CAM] How? ; Section 3.1

by 에아오요이가야 2022. 2. 8.

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를 생성한다면, AkRu×v, 이 feature maps들에 index i,j를 붙여 Ai,jk로 표현할 수 있고 이는  i,j 위치에 대한 feature map Ak의 activation이라고 할 수 있습니다.

 

이 feature map들에 spatially pooled using Global Average Pooling 연산을 적용한 뒤 선형 변환하여 class c에 대한 score Yc를 생성합니다.

 

Yc=kwkc1ZijAijk

 

wkc                : weight connecting the kth feature map with cth class 

1Zij      : global average pooling

Aijk               : feature map

 

자! 이제 wkc가 정확히 뭔지 알아보기 위한 계산들을 진행해보겠습니다.

사실 우리는 답이 뭔지 알고 끼워 맞추고 있지만 처음 생각해 낸 사람은 정말 대단한 것 같습니다.

 

이를 쉽게 풀어가기 위해서 

 

1Zij : global average pooling

Aijk : feature map 이 부분을 Fk로 치환해주겠습니다.

 

즉, Fk=1ZijAijk이라면

 

CAM이 score for c, Yc를 구하는 식은 다음과 같이 적어줄 수 있습니다.

 

Yc=kwkcFk

 

이제 score of class c, YcFk에 대한 변화량을 계산해보겠습니다.

 

YcFk=YcAijkFkAijk

 

위의 식을 보면 Fk=1ZijAijk 었기 때문에

 

FkAijk=1Z입니다.

 

그럼

 

YcFk=YcAijkFkAijk=YcAijkZ으로 적어 줄 수 있습니다.

 

다시,  Yc=kwkc1ZijAijk 이기 때문에

 

YcAijk=wkc이고

 

wkc=ZYcAijk 

 

등식의 성질을 이용하여 모든 index i,j에 대한 덧셈을 적용시켜주겠습니다.

 

ijwkc=ijZYcAijk 

 

여기서 상수 Z는 index i,j에 대하여 independent 함으로 앞으로 빼주겠습니다.

 

Zwkc=ZijYcAijk 

 

이는 다시  wkc앞에 Z가 붙은 이유는 Z=I×J이기 때문입니다. 직전 포스팅에서 확인하실 수 있습니다.

 

wkc=ijYcAijk로 적을 수 있습니다.

 

이는 놀랍게도 Grad-CAM에서 정의한 αkc : weight connecting the kth feature map with cth class 와 상수 배만큼(1Z) 차이가 납니다.

 

이는 실제로 시각화 하거나 활용할 때 무시될 수 있는 [성질을 변환시키지 않는] 정도의 차이이기 때문에,

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

댓글