안녕하세요!!
오늘은 Learning Deep Features for Discriminative Localization 라는 논문에 대해서 이야기해보려 합니다.
먼저 이 논문이 2015년 논문임에도 불구하고 리뷰하게 된 계기는
현재까지도 많은 논문에 인용되어 모델을 분석하거나 성능을 비교할 때 사용되기 때문입니다.
이 논문이 나오기 전부터 CNN을 해석하려는 노력이 많이 있었습니다.
그러나 초반 레이어에서는 엣지를 보고 레이어가 깊어질수록 특정 피쳐를 찾아낸다는 점 정도만 알아냈다고 합니다.
이 논문에서는 모델이 어디부분을 보고 input이 특정 클래스라고 판단하는지를 대략적으로 알 수 있는 CAM을 소개합니다.
이런 식으로 오른쪽 사진을 보고 "Brushng teeth"라고 판단하는 model을 분석하기 위해 CAM을 만들어낸 결과입니다.
(기존 사진이랑 겹치는 등 여러 시각화 과정을 거친 것)
CAM을 만드는 과정을 설명하기 전에 global average pooling 에 대한 설명을 잠깐 하겠습니다.
기존에 일반적으로 사용하던 구조인 CNN 거친 후에 Fully Connected layer(FC)를 사용하는 방식에서는
FC를 만들기 위해서 flatten 하는 과정이 있는데 GAP(global average pooling)을 사용하면
flatten하지 않고 한 feature map 당 한 노드(1x1)로 대응됩니다.
( feature map이 n개면 GAP를 거친 후 nx1크기의 layer가 생긴다.)
어떻게 보면 이 노드 값이 각 feature map을 대표한다고 생각이 됩니다.
CAM을 생성하려면 CNN -> FC 대신에 GAP를 사용해야 합니다.
(그 이유는 이 이미지를 보면 바로 이해가 되실 것 같아요!)
마지막 conv layer의 channel 수를 n이라고 할 때
GAP를 하면 nx1의 layer 가 생기고 각 노드들은 W1 ~ Wn까지의 가중치를 가지고 이 사진이 "Australian terrier" class score에 영향을 줍니다.
이 Wi 값이 i 번째 마지막 conv layer의 i 번째 feature map의 중요도(?) 정도로 직관적 이해가 가능합니다.
CAM을 만들기 위해서는 각 feature map에 대응되는 W값을 다 곱해서 더해주는 방식으로 CAM을 만들어 냅니다.
----------------------------------------------------------------------------------------------------------------------
논문에서는 CAM을 Weakly-supervised Object Localization로 활용하기도 했습니다.
논문에서는 유명한 CNN모델인 AlexNet, VGGnet, GoogLeNet에 FC layer를 빼고 결과 나오기 직전에 GAP을 넣어
CAM을 사용할 수 있게 모델을 바꿨습니다.
이 모델을 classification 바탕으로 학습시킨 후
CAM을 뽑아내 상위 20% 값을 segment한 후 가장 큰 덩어리를 커버하는 bounding box를 만듭니다.
이렇게 하면 classification 트레이닝과 데이터셋 가지고 object localization을 할 수 있습니다.
성능표를 보시면 Backprop을 이용한 것보다 CAM을 활용한 게 대체로 성능이 좋은 것을 보실 수 있습니다.
또 CAM 중에 가장 성능이 좋은 GoogLeNet-GAP(huristics)은
full supervision인 AlexNet과 별로 차이가 나지 않는다는 것이 인상적입니다.
----------------------------------------------------------------------------------------------------------------------
제가 시간이 지날 수록 헷갈리는 부분을 말해보자면
CAM에서 activate된 부분은 모델이 그 부분을 보고 A라고 판단한 것이지 그 부분이 A가 아니라는 것입니다.
당연하게 느껴지실 수도 있지만 저는 가끔 헷갈리더라고요!
그렇지만 대부분의 경우에는 CAM에서 activate 된 경우가 A입니다.
(CAM으로 object localization이 가능한 이유이기도 합니다.)
극단적인 예를 들면 축구선수인지 아닌지를 판단하는 딥러닝 모델에 넣어준 training 이미지에
대부분 축구선수 옆에 축구공이 있어서 이 모델이 축구선수임을 판단하는데 기여하는 큰 요소가 축구공이라고 하면
CAM을 생성했을 때 축구공이 축구선수가 아니지만 축구공 부분이 activate 될 수 있다는 것입니다.
논문 - Learning Deep Features for Discriminative Localization
오늘 포스팅은 여기까지 마무리 하겠습니다.
틀린 부분이 있으면 댓글로 알려주시기 바랍니다.
감사합니다.
'논문 정리' 카테고리의 다른 글
[DeepLabv3+] Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation (1) | 2020.01.21 |
---|---|
[ GAN ]쉽게 이해하는 GAN(Generative Adversarial Network) (1) (0) | 2020.01.09 |