(ZF-Net) Visualizing and Understanding Convolutional Networks

imagenet

(Curtis Kim) #1

크게 2가지의 Contribution을 했습니다.

  • Alexnet 의 작동을 deconvnet이라는 방식으로 분석합니다. 어떤 피쳐가 학습되었는지, 어떤 문제가 있었는지, 피쳐는 어떤 특성을 갖는지 등이 잘 분석되어 있습니다.
  • 분석된 결과를 토대로 첫번째 레이어의 11x11 Conv. Layer를 7x7로 바꾸고 stride를 4에서 2로 줄인 후 성능 향상을 보고했습니다.

Trial and Error에 의해 찾아지는 네트워크 구조와 하이퍼파라미터에 대해 반박하고, 분석과 평가를 통해 네트워크를 구성하는 논문입니다.


Visualization with a Deconvnet

Deconvnet

Deconvnet은 Convnet과 완전히 동일한 component로 이루어져있지만, 반대의 순서로 행해집니다. 따라서 feature를 input으로 받아서, image level에 반영하는 형태입니다.

examine하고 싶은 특정 Layer의 특정 Convolutional Filter를 선정하고 나면 위 그림의 왼쪽처럼 해당 Filter를 Deconv 하게 됩니다.

풀어서 설명하면,

(1) 분석하고자하는 특정 Conv Layer의 특정 Filter Activation을 선정
(2) 해당 Filter Activation을 제외한 모든 output을 0으로 세팅한 상태로 deconvnet에 input으로 입력
(3) Neural Network Architecture 순서의 반대로 아래의 3가지 deconvolution을 수행함

  • Unpooling : Max-pooling된 지점을 저장해두고, unpooling할 때는 해당 지점을 이용해서 재생성
  • Rectification : ReLU를 통해 양수로 Activation된 값은 그대로 두고 음수는 재생성 불가능하므로 그대로 0으로 둠.
  • Filtering : convolution filter 값의 transposed 된 matrix 사용

결국 Reconstruction된 것은 입력으로 주어진 Input Image의 일부와 유사할 수 밖에 없으며, 이를 통해서 어떤 파트를 통해 Neural Network가 결과를 내었는지를 분석할 수 있습니다.

일부 이미지를 통해 각 레이어의 Top 9 Activation을 Deconv한 결과입니다. Layer가 높을 수록 higher abstraction된 것을 볼 수 있습니다. 비슷한 클래스에 대해 invariance함도 볼 수 있고요.

왼쪽부터 오른쪽으로 갈 수록 Training이 진행되면서 Feature Map이 어떻게 변하는지를 보여줍니다. 당연하게도 시간이 지나면서 선명도가 증가하고, 특정한 모양에 activate되는 형태로 발전됩니다.

이미지를 변형(translate, scale, rotation)했을 때 network 결과의 변화입니다. 특히 1,2번째 행을 보시면 translate, scale에 상대적으로 강인한 것을 보여줍니다. 3번째 행으로부터 rotation에는 상대적으로 많이 취약함을 알 수 있습니다.

Sensitivity Analysis

이미지의 일부를 가려가면서 여러번 feature map의 activation정도를 통해 heatmap 등을 그렸습니다. 첫번째 강아지 사진을 보면 강아지 얼굴을 가렸을 때 feature map의 activation정도가 약해졌으므로 강아지 얼굴이 있는 부분이 파란색으로 표현되어 있는 것을 알 수 있습니다. 또 강아지 얼굴을 가리면 '테니스공’으로 네트워크가 인식하는 것도 마지막 열의 이미지를 통해 알 수 있고요.

비슷한 이미지에서 동일하게 중요한 위치(눈, 코 등)을 가리는 것이 feature에 주는 영향도 비슷함을 보여주는 표입니다. 즉 2개의 다른 강아지 사진에서 동일하게 눈을 가리면, feature역시도 비슷하게 변화한다는 뜻입니다.

이를 위해서 특정 위치를 가렸을 때 변화 정도에 대해 서로 다른 두 이미지로부터 해밍디스턴스를 구하는 방식으로 실험했습니다.

Training

image

알렉스넷의 Feature를 보면 rectified된 것들을 볼 수 있습니다.

논문에서는 이를 큰 stride를 사용했기 때문으로 분석했습니다. 즉 알렉스넷은 11x11의 큰 conv. filter와 stride 4를 사용했는데 이것이 준 영향이라고 판단하면서, 더 좋은 feature를 얻기 위해서 7x7 conv. filter에 stride 2로 변경하였다고 밝힙니다.

따라서 알렉스넷과 거의 유사하지만 1번째 레이어가 변경된 형태를 제시했고요.

(b)와 (d)가 알렉스넷의 feature이고, ©와 (e)가 해당하는 ZFNet의 feature 입니다. ZFNet에서는

  • 죽은 필터가 더 적고
  • rectified 되지 않았다는

것을 볼 수 있습니다.

image

이렇게 7x7 Conv Layer와 더 커진 Filter Size, 작아진 Stride 를 통해서 Alexnet보다 조금 나아진 성능을 레포트했습니다.

References

[1] http://ferguson.tistory.com/5

[2] https://github.com/InFoCusp/tf_cnnvis