ML study > CNN architecture > ZFNet

1. ZFNet

  • AlexNet의 등장이후 다양한 방식의 딥러닝 network들이 연구되었다. 그 중 ZFNet은 딥러닝의 동작을 보다 더 잘 이해하기 위해서 visualizing 기법을 사용하였으며 network의 동작을 이해하고 성능을 개선하는데 큰 역할을 하였다.

2. 원리

  • CNN은 여러번의 convolution 과정을 통해 다양한 feature map을 과정마다 출력해낸다. 이 때 중간 layer에서 나온 feature map을 visualizing 시켜본다면 network의 동작이 어떤 식으로 이루어지는지 눈으로 확인해볼 수 있을 것이다.

Source

  • 일반적인 convolution 과정은 위 그림의 오른쪽과 같이 convolution filter를 거쳐 feature map을 형성하고 activation function과 pooling과정을 거친 후 다음 convolution 과정으로 넘어가게 된다.

  • 이렇게 pooling을 거친 layer를 다시 visualize 시키려면 역방향으로 똑같이 진행을 하면 되는데 문제는 unpooling시 현재 정보만을 가지고는 모든 data를 복원해낼수가 없다. ZFNet에서는 pooling과정에서 가장 강한 자극의 위치정보를 switch라는 곳에 저장을 하여 unpooling시 해당 위치에 대해서 왼쪽 그림과 같이 복원해낼 수 있게 구성하였다.

  • activation function인 relu를 복원해낼때에도 음수의 영역은 복원해내기 어렵지만 연구결과에 큰 영향을 주지 않았다고 한다.

3. visualization 결과

  • 5개의 layer로 구성된 CNN network의 중간 layer를 deconvolution 과정을 거쳐 원본영상과 비교하였다.

Source

  • 위 그림은 network의 2번째 layer에 대한 visualizing 결과(왼쪽)와 원본이미지(오른쪽)을 나타낸 것이다. feature map에서는 주로 이미지의 edge나 색상과 같은 low level feature에 대해 주로 다루고 있음을 확인할 수 있다.

Source

  • 반면 layer 4에서는 사물의 모습이나 위치까지 feature map을 통해 나타났으며 조금 더 high level에 대한 feature가 나타나는 것을 확인할 수 있다.

3. AlexNet 성능 개선 구조

  • Visualizing 기법을 AlexNet에 적용하여 중간 layer들을 이미지화하였을 때 불안전한 부분을 확인하였고 이를 개선시키기 위해 AlexNet과 비슷한 구조를 유지하면서 약간의 변화를 주었다.

Source

  • 위 그림은 ZFNet의 구조를 나타낸 것이다. AlexNet과 거의 동일한 구조이다. 다른점은 첫번째 layer에서 filter size를 11에서 7로 줄였고 stride역시 4에서 2로 줄였다.

  • 이 후 stide를 2로 3x3 overlapped max pooling을 적용하였다.

4. 결과

Source

  • 위 그림의 (b) 와 (d)는 AlexNet의 feature를 visualize한 것이고 (c)와 (d)는 ZFNet의 결과이다. AlexNet의 경우 일부 feature에 대해 몰리거나 aliasing 문제가 있었지만 ZFNet은 그림상으로만 보아도 확실한 개선이 있었음을 볼 수 있다.

Source

  • 실제 ImageNet dataset으로 실험한 결과 AlexNet 보다 위와 같이 더 낮은 error rate을 얻었다.

Reference

[1]: ZFNet

[2]: ZFNet 정리블로그 (라온피플)

태그:

카테고리:

업데이트:

댓글남기기