Hello Potato World
[포테이토 논문 리뷰] Learning Deep Features for Discriminative Localization 본문
[포테이토 논문 리뷰] Learning Deep Features for Discriminative Localization
Heosuab 2021. 8. 8. 04:32
⋆ 。 ˚ ☁︎ ˚ 。 ⋆ 。 ˚ ☽ ˚ 。 ⋆
[XAI paper review]
Interpretable Machine Learning 책에서 소개된 Grad-CAM의 내용이 궁금해져서 찾아보다가, 연관된 Grad-CAM, Grad-CAM++, Guided Grad-CAM 등등의 기반이 되는 CAM(Class Activation Maps)을 다루는 논문을 먼저 리뷰하게 되었다.
Global Average Pooling(GAP) vs Global Max Pooling(GMP)
이 논문에서 가장 중요한 개념인 Global Average Pooling을 먼저 보면, 우선 Pooling layer란 CNN 내의 많은 Convolution layer내에 존재하는 filter(parameter)의 개수가 너무 많아져서 Overfitting이 발생하는 것을 방지하기 위해, parameter 수를 줄일 수 있도록 사용되는 layer이다.
그 중 Max Pooling이란 각 영역(지역) 내에서 가장 큰 값을 선택하여 줄이는 방식이고, Global Max Pooling이란 전체 영역(전역)을 한번에 고려해서 (heigt, width, channel)형태의 3차원을 (channel, )형태의 1차원 벡터로 극단적인 feature의 감소를 만드는 방식이다.
또, 전체 영역 내에서 가장 큰 값을 사용하는 방법을 Global Max Pooling(GMP)라고 하지만, 모든 값을 고려하여 평균값을 사용하는 방법을 Global Average Pooling(GAP)이라고 한다.
보통 CNN의 구조에서는 마지막 layer로 FC layer를 사용하게 되는데, 이 FC layer는 parameter의 개수를 매우 커지도록 만들기 때문에 overfitting 위험이 증가할 수 있고, Feature map(pooling이전)에 존재하는 object들의 위치정보가 손실된다는 단점이 있다. 이 논문에서는 CNN의 마지막 FC layer를 Global Average Pooling으로 대체하여 overfitting을 방지할 수 있는 regularization의 역할을 하며, 위치정보를 손실하지 않을 수 있도록 하였다.
Learning Deep Features for Discriminative Localization
이 논문에서 제시한 CAM(Class Activation Maps)의 key point 2가지는 다음과 같다.
- Weakly-supervised object localization
- Visualizing CNNs
위에서 언급했던 것처럼 FC layer대신에 Global Average Pooling을 사용함으로써 위치정보를 손실하지 않을 수 있도록 만들었는데, 덕분에 단 한번의 forward-pass만을 통해 여러가지 Task를 수행하게 되었다. 예를 들어, Object Classification만을 위해 학습된 CNN 모델이 이미지를 classify할 수 있을뿐만 아니라 localization도 수행할 수
있게 되었다. 즉, 각 이미지의 label만 주어진 상황에서 주어져있지 않은 localization정보를 예측할 수 있게 된다. (Weakly supervised learning : 학습에 주어진 정보보다 예측하려는 정보가 더 디테일한 경우)
아래 그림은 Global Average Pooling을 사용하여 CAM을 시각화한 것인데, 각 이미지들에 대해 classify하면서도 object들이 위치하는 영역도 찾아낼 수 있음을 볼 수 있다.
Class Activation Mapping
CAM은 위에서 본 그림처럼, CNN이 input image에 대한 prediction을 만들어냈을 때, 해당 class로 판별하는데 중요하게 생각하는 영역을 표시하여 시각화하는 알고리즘이다. 구조는 아래와 같다.
1. 마지막 Convolution layer의 feature map을 $f_k(x,y)$라고 하면, 각각의 unit $k$에 대해 GAP을 수행해서 $k$개의 값을 출력한다. (GAP의 결과 $F_k$)
2. 각각의 $F_k$에 대해서, class c에 대한 가중치 $w_k^c$의 weighted sum을 계산하여 $S_c$를 출력한다. 이 때의 출력 $S_c$는 softmax의 input으로 사용된다.
3. Softmax연산을 거치면 각 class c에 대한 결과 $P_c$가 출력된다. bias는 classification의 성능에 영향을 거의 미치지 않는다고 가정하고, bias는 0으로 설정하여 계산한다.
4. Class c에 대한 CAM을 $M_c$라고 정의하고, $S_c$의 수식을 변형하여 구할 수 있는 형태로 사용한다.
따라서 공간적 좌표(x,y)의 activation값의 중요도를 나타내는 각 CAM $M_c(s,y)$는 이미지가 class C로 classify되는데 미치는 영향을 나타낸다.
마지막 convolution layer에서의 CAM을 시각화했기 때문에, 최종 CAM을 처음 input image와 같은 크기로 unsampling하면, input image내에서 class c와 관련되어있는 영역이 어디인지 확인할 수 있다. 위의 그림에서는 input image가 "Australian terrier"의 class로 구분되는데 영향을 미치는 영역을 하이라이트한 CAM 결과를 볼 수 있고, 강아지가 위치한 영역의 localization도 함께 수행한 것을 알 수 있다.
Results
ILSVRC의 총 4가지 class의 CAM을 시각화한 그림.
첫번째와 두번째 그림에서는 "briard"와 "hen"의 머리 부분이 prediction에 큰 영향을 미쳤고, 세 번째 그림에서의 "barbell"의 원판 부분, 네 번째 그림에서의 "bell cote"의 bell 부분이 영향을 많이 미친 것을 볼 수 있다.
이번엔 하나의 이미지를 가지고, 여러 class에 대한 CAM을 예측해서 시각화한 자료이다.
실제 Ground Truth label은 Dome이고, 가장 확률이 높은 Top5의 class에 대해 시각화하였다. 하나의 class에 대해 여러 이미지의 CAM을 비교했을 때는, 해당 class를 대표할 수 있는 특징들을 일관되게 하이라이트한 것을 볼 수 있었지만, 이 그림처럼 여러 class에 대한 CAM을 비교했을 때는 각각 다른 부분들을 하이라이트한 것을 볼 수 있다.
CAM으로 구해진 segmentation map을 전부 커버할 수 있는 가장 큰 bounding box를 생성해서 Localization을 수행했다. 각 a)와 b)의 상단 그림은 GoogleNet-GAP로 구해진 결과이고, 하단 그림들은 AlexNet을 사용한 결과이다.
각 이미지에서 Gound Truth는 녹색으로 표시된 Bounding box이며, CAM을 사용하여 예측한 box는 빨간색으로 표시되었다.
References
[1] Zhou et al, Learning Deep Features for Discriminative Localization, 2016