개인적으로 읽고 쓰는 공부용 리뷰입니다.

틀린 점이 있을 수도 있으니 감안하고 읽어주세요. 피드백은 댓글로 부탁드립니다.

 

paper overview

  • 논문링크 : arxiv.org/pdf/1311.2901.pdf

  • CNN의 visualizing에 대하여 연구한 논문

  • max-unpooling의 개념을 제안

  • cnn visualizing기법을 토대로 alexnet을 수정 및 개선

이 논문의 주요 키워드는 visualizing이다. 학습된 모델이 무엇을 보고 있는지 나타내어 모델의 개선에 이용했다.

보통 classification 논문을 다룰 때, 크게 언급 되지는 않지만 개인적으로 큰 contribution을 가진 논문이라고 생각한다. 

 

feature visualization 예시(출처 : zfnet 논문)

위 그림은 featuremap visualization을 위한 deconv의 과정이다. 그림 기준 왼쪽이 deconv의 일련의 과정이고 오른쪽은 우리가 아는 일반적인 CNN의 forward 과정이다. rectified feature map -> pooling -> conv -> relu -> pool의 과정을 나타낸다. 왼쪽은 반대로 위에서부터 max-unpool -> relu -> deconv(F^T)-> max-unpool의 과정이다. 

Max-unpooling

위 figure는 feature visualization의 일련의 과정이다. maxpooling의 경우 receptive field에서 max 값만 취하는 연산인데 이를 역연산 하기 위해서 max 값을 취한 곳의 위치를 기억했다가 un-pooling시 그 위치에 값을 입력하는 것이다. 물론 해당 위치 말고는 0으로 채워지는 sparse한 행렬이 되긴하겠지만 결과 이미지를 보면 어느정도 유의미한 결과를 얻은 것을 알 수 있다. 마찬가지로 활성화 함수를 거치면 (이 논문에서는 relu를 사용) 날라가는 값들이 존재하지만 결과 이미지를 토대로 추론해보면 크게 영향이 없는 듯 보여진다. 

 

Deconvolution

리뷰를 하면서 새로 알게 된 사실이지만, 저자가 이전에 이미 관련된 논문을 썼었다. Deconvolutional Network(Zeiler et al., 2011)이 그 논문인데 이 논문에서는 자세하게 언급되어 있지않다. 아마 지금에서 transposed convolution으로 불리는 연산이지않을까 싶다. 이에 관련해서는 정말 많은 자료를 봤지만 이 블로그가 제일 잘 설명 되어있었다. zzsza.github.io/data/2018/06/25/upsampling-with-transposed-convolution/

 

Result

아래에 나오는 그림들은 학습이 다된 네트워크에 validation set을 forwarding하면서 나오는 feature map들을 visualization한 결과이다. 9개의 랜덤한 feature map을 뽑아 그 결과를 나타낸것이다. 색깔이 있는 그림은 feature map 영역에 대응하는 원본 이미지 영역이다.

논문에는 layer 5까지 있지만, 귀찮다  layer 4보다는 layer 3이, 3보다는 2가 조금더 low-level의 feature를 뽑아내는 것을 알 수 있다. 즉 네트워크가 뒤쪽으로 갈수록 좀 더 complex한, high-level의 feature가 나타나는 것이다. 결론적으로 네트워크의뒤쪽의 convolution filter들은 좀 더 앞의 filter보다 복잡한 특징들을 추출하도록 학습이 된다는 점이 중요하다. 당연히 지금에서야 생각해보면 layer가 누적될수록 그에 대응하는 receptive field도 넓어질 것이고 이에따라 표현하는 feature, 즉 feature map의 channel도 늘어나니 이러한 결과는 당연하다고 보여지지만, 이때 당시에 이를 연구하고 이렇게 visualization을 통해 모델의 구조도 더 효율적으로 바꾼 점은 엄청나다고 생각한다. 

 

Model architecture

zfnet같은 경우 모델에는 큰 컨트리뷰션이 없다. alexnet과 매우 유사하지만, 전반적으로 convolution filter size가 조금더 작아진 것 뿐이다. 

 

 

 

결론적으로 이 논문은 논문 제목 그 자체로 visualization과 understanding에 초점이 맞춰져있는데, 그 목적한 바를 정확히 구현하고 결과로 보여줬다. 본문에도 썼듯이 지금에 봐서야 이 결과 이미지들이 당연하게 여겨지지만 이 당시의 연구로는 엄청나다고 생각한다. 일단 개인적으로  지금이야 pytorch, keras등 사용하기 쉬운 framework들이 많이 있지만 이때는..  코딩실력이 너무 대단하고 부럽다. 

+ Recent posts