티스토리 뷰

[업데이트 2018.05.06 16:50] 


아홉번째 요약할 논문은 "Visualizing and Understanding Convolutional Networks"(https://arxiv.org/pdf/1311.2901.pdf) 입니다. 본 논문에서는 기존에 우수한 성능을 보인 AlexNet과 같은 Large Convolutional Network가 학습 수행이 왜 잘되는지, 그리고 좋은 성능을 만드는지 clear하게 설명되지 않은 부분에 대해 다룹니다. CNN 아키텍쳐를 구성하는 각각의 중간 layer부터 최종 classifier까지 입력된 이미지로부터 특징이 어떻게 추출되고, 학습이 되어 가는지 시각화를 통해 분석하는 방법을 제시합니다. 또한 이러한 시각화 분석을 통해 기존 Alex Net대비 성능 향상을 이루게 됩니다.(ILSVRC 2013 winner ZFNet, top-5 test error 11.2%) 


CNN은 마치 블랙박스와 같아서 내부에서 어떻게 동작이 되는지 설명하기 어려운데, 시각화를 통해 접근한 좋은 사례입니다. Convolution후 feature map에 대해 시각화 하기 위해 Deconvolution이란 개념이 나오는데(a.k.a. Deconvnet), 이 개념은 나중에 다른 논문에서도 사용하게 됩니다. (Semantic Segmentation 분야 등)


Deconvolution을 수행하기 위해 아래의 Figure 1.과 같이 기존 conv-relu-pool 과정의 반대로 수행하며, 다음과 같습니다.


1) Unpooling

2) Rectification

3) Filtering


여기서 max-pooling하면서 가장 큰 값만 feature map으로 생성되기 때문에, Unpooling시 가장 큰 값들의 위치를 알아야 이전 feature map으로 복원이 가능한데, 이러한 문제를 해결하기위해 Switch variables를 정의하여 max-pooling전에 이전 feature map에서 가장 큰 값들의 위치를 저장해놓습니다. 그리고 저장된 위치 정보를 통해 Unpooling을 수행하여 max-pooling 전의 feature map으로 복원합니다. 단, 가장 큰 값의 위치 정보만 기록하기 때문에, 그외의 값들은 복원하지 않습니다. Rectification의 경우는 기존과 동일하게 적용하는데, 음수인 경우는 0으로 0보다 크면 입력값이 출력값이 되는데, 음수 케이스에 대해서 복원하지 않아도 시각화하는데 큰 영향은 없다고 합니다. Filtering의 경우 기존 filter에 transpose를 하여 적용합니다.


학습시 1.3 million ImageNet 2012 training set을 사용하였습니다. AlexNet이 GPU 2개를 가지고 학습을 하였는데, ZFNet은 GPU 1개( single GTX 580 GPU)를 사용하여 12일 동안 학습을 시켰다고 합니다. ZF Net 아키텍쳐 아래와 같으며, 기존 AlexNet과 거의 유사하며, 일부분에 대해서만 변경을 하였습니다.


1) AlexNet 3,4,5 sparse connection을 dense connection으로 변경

2) 1st layer filter size, stride 변경

- filter size: 11x11 -> 7x7

- stride: 4 -> 2



또한 layer 6,7에 Dropout(0.5)를 적용하였습니다. 그 외의 하이퍼 파라메터입니다.


- learning rate : 0.01

- momentum : 0.9

- initialization of all weights : 0.01, biases : 0


아래의 Figure 2.는 각 layer별 얻은 feature map에서 가장 강한 특징 9개만을 보여주며, 그에 해당하는 원본 이미지를 보여주고 있습니다. 각 layer별 학습이 되면서 어떤 feature를 추출하는지 알 수 있으며 다음과 같습니다.


- Layer 1,2 : edge나 color처럼 low-level feature를 시각화 하고 있습니다.

- Layer 3 : 더 복잡한 invariance(항상성)를 가지거나, texture를 보여주는 feature에 대해 시각화 하고 있습니다.

- Layer 4 : 사물이나 개체의 일부분을 보여주는 feature를 시각화 하고 있습니다. (개의 얼굴, 새의 다리)

- Layer 5 : 사물이나 개체의 위치 및 자세 변화를 포함하는 전체 모습을 시각화 하고 있습니다.


        low-level feature  <-->  high-level feature

Layer 1            2            3           4         5 



아래의 Figure 4.에서 알 수 있듯이 layer가 깊어질 수록 feature 생성 및 시각화 되려면, 학습 epochs가 어느 정도 진행되어야 함을 보여주고 있습니다. 40 epochs이상 되어야 feature가 선명해지고 있는데, 이러한 시각화를 통해 학습에 적절한 epochs 수도 결정할 수 있게 됩니다. ZFNet에서는 70 epochs까지 학습을 진행하였습니다. 



Figure 5.를 보면 이동, 크기, 회전에 있어서도 CNN의 특징중 하나인 invariance한 특성을 볼 수 있습니다. 마지막 layer로 갈수록 이동, 크기, 회전에 큰 영향을 받지 않고, 원본 이미지가 어떤 것인지 식별하게 됩니다. 유클리디안 거리를 원본과 변환된 이미지에 대해 측정한 결과 초반 layer단에서는 거리가 큰값이 나오지만 마지막 layer로 갈수록 거리값이 작아지는 것을 볼 수 있습니다. 



또한 이미지에 있어서 개체의 위치를 인식하는지도 본 논문에서는 실험하였는데, 이미지를 대표하는 특징이 있는 부분을 회색 박스로 가리면, 인식율이 떨어짐을 확인하였습니다. (Figure 7)



AlexNet 대비 아키텍쳐 구조를 변경하면서 성능 향상을 시도하였는데, 아래의 Figure 6. 처럼 layer 1의 filter size, stride를 변경후 시각화된 feature를 보면 AlexNet대비 feature수가 (b), (c)비교에서 알 수 있듯이 증가하였습니다. 그리고 (d), (e) 처럼 feature들이 선명해지고, anti-aliasing 현상이 없어지는 것을 볼 수 있습니다.



ZFNet은 CNN 아키텍쳐를 구성하는 각각의 중간 layer부터 최종 classifier까지 입력된 이미지로부터 특징이 어떻게 추출되고, 학습이 되어 가는지 시각화를 통해 분석하는 방법을 제시합니다. 또한 이러한 시각화를 통해 CNN 아키텍쳐의 성능을 향상 할 수 있었습니다. 


* 참고 : https://arxiv.org/pdf/1311.2901.pdf

* 참고 : https://laonple.blog.me/220673615573

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함