Class Activation Mapping

iissaacc·2022년 4월 3일
0

paper reading

목록 보기
18/20

Prologue

수능문제를 풀 때 과목을 넘나들면서 묻는 문제유형이 있다.

글쓴이(화자)의 의도로 올바른 것은?

다른 사람의 의도를 알고 싶어하는 건 인간의 본능인 것 같다. 요즘은 사람속 뿐만 아니라 흔히들 블랙박스라고 부르는 머신러닝 model의 속도 알고 싶어한다.

model을 만들어서 학습을 하기는 하는데 어떤 근거로 개를 개로, 고양이는 고양이로 판단하는지 알 길이 없기 때문이다.

What did the authors try to acomplish?

AlexNet이나 VGGNet은 마지막 feature map을 flatten하고 Fully Connected Layer(FCL)를 붙여서 쓰는 방식으로 classification을 수행했다. 앞선 연구에서 CNN만으로도 spatial feature를 읽어낼 수 있지만 flatten layer로 인해 그 능력을 잃어버린다고 밝혔다고 하면서 model이 classification을 하긴 하는데 어떻게 할 수 있는지 알 수 없게 하는 주요한 원인이라고 지적했다.

What were the key elements of the approach?

Global Average Pooling

요즘에는 network head로 flatten layer대신 Global Average Pooling(GAP)을 쓰는 이유는 이렇다.

  1. 연산량을 줄일 수 있다.
  2. Conv layer가 spatial dimention으로 쌓은 feature를 classification에도 활용할 수 있다.

Network in Netwokr(NIN)에서는 두 가지 문제를 해결하려고 GAP를 제안했고 이후 network head에 반드시 써야 하는 layer로 자리잡았다.

GAP를 통해 마지막 feature map을 한 장씩 포떠서 평균내기 때문에 이 또한 feature map이 가진 대부분의 정보를 잃어버리는 게 아닌가 싶지만 channel방향으로 있는 spatial feature를 어떻게든 살릴 수 있다. 연구에서는 이 점을 주목했다.

Class Activation Map

마지막 conv layer에서 만드는 feature가 GAP를 통과해서도 남아있다면 FCL에는 이 feature를 바탕으로 classification의 근거가 남아있을 것이다. 그러면 마지막 feature map과 FCL의 weight을 연산하면 model이 classification하는 근거를 잡을 수 있겠다는 의도가 깔려있다.

찬찬히 계산해보자.

last feature map: Rh×w×kGAP: R1×1×kweight of FCL: Rk×csoftmax: Rc\begin{array}{lc} \text{last feature map: }\mathbb{R}^{h\times w\times k}\\ \text{GAP: }\mathbb{R}^{1\times 1\times k}\\ \text{weight of FCL: }\mathbb{R}^{k\times c}\\ \text{softmax: }\mathbb{R}^c \end{array}

FCL의 weight의 모양을 보면 cc개의 column으로 각 class가 가진 feature를 담고 있다고 유추할 수 있다. 마지막 feature map과 FCL의 weight를 연산하면 Rh×w×c\mathbb{R}^{h\times w\times c}모양의 tensor를 얻을 수 있다. 그렇지만 여전히 입력 image보다 작은데 연구에서는 그냥 입력 이미지 크기만큼 upsampling했다.

ResNet20을 CIFAR10으로 학습한 것을 CAM을 찍어보면 이런 것을 볼 수 있다.

대부분 object를 보고 바르게 classification하고 있지만 첫번째를 보면 앞바퀴를 보고 차로 판단하고 있는데 이런 경우를 보면서 '왜지?'하면서 제대로 판단하게 하려면 어떻게 해야하는지 대책을 세워야 한다.

Epilogue

  1. 기존에 transpose convolution을 사용하는 방법도 있다. 이 방법이 마냥 좋은 방법은 아니었는데 연산비용이 더 많이 들고 model이 뭘 보는지는 알 수 있지만 어떤 점을 근거로 개를 개로, 고양이를 고양이로 판단하는지 알 수 없다는 단점이 있다.

  2. 화질이 낮아도 고양이는 귀엽다!

Reference

  1. Learning Deep Features for Discriminative Localization

0개의 댓글