배너
닫기
배너

라온피플의 머신러닝 아카데미(9) - ZFNet (1)

  • 등록 2019.01.21 13:18:59
URL복사
[무료 등록] 최신 AI MCU 개발 트렌드와 함께 실제 산업 현장에서의 응용 방법을 소개합니다 (5/14, 코트야드 판교호텔 8층)

[첨단 헬로티]


머신비전산업에서 인공지능 기술(머신러닝, 딥러닝)이 빠르게 확산되고 있다. 인공지능 기술을 통해 기존의 컴퓨터비전 기술로는 어려웠던 검사가 가능해질 뿐만 아니라 ‘데이터의 자기 학습’으로 보다 빠르고 쉬우며 신뢰성과 유연성을 갖춘 머신비전 검사가 가능해졌다. 이에 따라 자연스럽게 인공지능 기술에 대한 관심이 높아지고 있다. 국내 대표적인 머신비전 전문업체인 라온피플은 ‘LAON PEOPLE’s 머신러닝 아카데미’를 통해 인공지능의 대표적인 기술인 머신러닝 기술에 대해 연재한다.

 

AlexNet 대 ZFNet
앞서 살펴본 AlexNet의 구조는 그림과 같다. AlexNet은 2개의 GPU를 활용하는 구조를 취하고 있으며, 필요에 따라 inter-GPU/intra-GPU 통신 구조를 취하고 있다.

 

 

Zeiler는 Visualization 기법을 활용하여, AlexNet의 구조의 문제점을 지적한다. AlexNet 설계자들은 2개의 GPU에 구현하면서 많은 고민을 했을 것이라 생각되지만, 결국 Zeiler에 의해서 그들의 구조가 최적이 아니었음이 증명이 된다.

 

 

위 그림2의 (b)와 (d)는 AlexNet의 1/2단계 feature를 보여주는 것이고, (c)와 (e)는 ZFNet의 결과를 보여준다. AlexNet보다는 ZFNet의 결과가 훨씬 더 좋다는 것은 그림 만으로도 쉽게 이해가 간다. AlexNet은 일부 feature에 몰리는 현상도 있었고, aliasing 문제도 발생을 하였지만, ZFNet은 다양한 feature가 고르게 나타나는 것을 볼 수 있다. 당연히 AlexNet보다는 ZFNet을 이용한 결과가 좋게 나올 수밖에 없다. 그럼 아래 그림3을 한번 보자. 아래 그림은 ZFNet의 구조이다. ZFNet도 AlexNet과 동일하게 GTX580 GPU를 사용하였다. 단, AlexNet과 달리, 2개의 GPU를 사용하지 않고, 1개의 GPU를 사용하였다.  ILSVRC 영상을 할 때 70 epoch에서 멈추었으며, 1개의 GPU를 사용하여 총 12일 동안 학습을 시켰다고 한다.

 

 

ZFNet은 자신들의 Feature Visualization 기법의 효과를 보이는 것에 집중을 했기 때문에 전반적으로 AlexNet과 비슷한 구조를 취했다. 단, 첫번째와 두번째 layer는 구조가 다르다는 것을 알 수 있다. 아래 그림4는 확대한 그림이다.

 

 

AlexNet은 첫번째 convolution layer에 11x11 크기에 stride를 4로 정했는데, ZFNet은 filter 크기를 7x7로 하고, stride를 2로 하였다. 그렇게 얻은 110x110 크기의 feature map에 대하여 3x3 overlapped max pooling을 수행하였으며, stride를 2로 하여 55x55 크기를 얻었다. 이점은 AlexNet과 확연하게 다른 부분이다.

 

Convolution Layer에서 Hyper-parameter를 정하는 방법에 대해 소개를 했듯이, filter의 크기를 크게 하고 stride 값을 크게 하는 방식은 요즘 추세처럼 filter의 크기를 작게 하고 stride 크기를 작게 설정하는 것보다 결과가 좋지 못하다.

 

Zeiler는 Feature Visualization을 통한 이 부분을 밝혔으며, 더 좋은 결과를 얻을 수 있도록 AlexNet의 구조를 변형시켰다. 이후 과정은 AlexNet과 거의 대동 소이하다. 하지만 AlexNet의 경우처럼, 2개의 GPU에 mapping 시키기 위해 인위적으로 나눠서 처리하는 부분을 제거했다. 그 결과 두번째 layer에 대한 Feature Visualization 결과 그림에서도 알 수 있듯이, 두 번째 단계의 결과도 AlexNet보다 ZFNet이 좋다는 것을 확인할 수 있다. ZFNet을 통해서 증명을 했듯이 AlexNet의 구조처럼 2개의 GPU에서 다른 처리를 하는 시도는 그 후 다른 어떤 연구에서도 찾아 볼 수가 없다.

 

Feature Visualization을 통해 확인 CNN에 대한 추가 이해 포인트
Zeiler는 그의 연구를 통해 CNN에 대한 몇 가지 사항을 밝힌다.
우선 layer 별로 feature를 습득하는 시간이 다르다.
아래 그림5에서 볼 수 있는 것처럼, 앞쪽 layer들은 몇 번의 학습 epoch 만에 feature 들이 수렴하는 것을 볼 수가 있다. 하지만, 뒤쪽 layer로 갈수록 feature 습득에 오랜 시간이 걸리며, 적어도 40~50 epoch 이상이 되어야 feature들이 보이기 시작한다. 이 점은 CNN 학습의 epoch 수를 정할 때 참고하면 좋을 것 같으며, 실제로 ZFNet을 학습할 때는 70 epoch까지 진행했다고 밝히고 있다.

 

 

CNN의 개념 설명 당시 소개했던 것처럼, 크기, 위치 변화 및 회전 변화에 따른 invariance가 확보된다.
아래 그림6은 크기, 위치 및 회전 이동에 사용할 테스트 이미지들이다. 작은 변화에 대해서도 앞쪽 layer에서는 눈에 띌 정도의 변화가 있지만, 뒤로 갈수록 invariance를 얻을 수 있음을 실험으로 파악하였다. 또한 위치 이동과 크기 변화에 대해서는 거의 linear한 특성을 얻을 수 있었다.

 

 

다음 그림7은 위 이동에 대한 결과이다. 실험에 사용한 5 종류의 영상들에 대해서 각 layer에서의 유클리드 거리를 구한 것을 보여준다. Layer가 뒤쪽으로 갈수록 invariance한 성질이 있음을 알 수 있다.

 

 

CNN이 영상 속에 있는 object(개체)의 위치까지 파악이 가능한가 아니면 주변에 있는 것들과의 관계 속에서 개체를 알아내는지도 실험을 통해 파악할 수 있다. 결론부터 말하면, 개체의 정확한 위치까지 파악을 한다. 이것을 확인하기 위해, 개체의 일부 영역을 사각형 형태로 회색 칠을 하고 결과를 확인하였다. 물체를 가리면, 그 물체를 제대로 분류해낼 가능성이 많이 떨어지는 것을 확인할 수 있었다. 아래 그림8의 결과를 확인해보자.

 

 

(a)는 실험에 사용한 그림들을 보여주며, 회색 사각형 영역을 옮겨가면서 실험을 한다. (b)와(c)는 layer5에서 가장 강한 activity에 대한 feature map이고, (d)와 (e)는 classifier의 출력이다. b)는 가리는 부분에 따라 layer5 activation이 어떻게 달라지는가를 보여준다. Promeranian 그림의 경우 당연히 개의 얼굴을 가렸을 때 activation이 떨어지게 나타난다.

 

(c)에서 검은 사각형으로 있는 그림은 가장 강한 activation을 input 공간에 mapping 시켰을 때를 보여주며, 나머지 그림은 다른 이미지에서의 예이다. (d)는 classifier의 출력에서 특정 위치를 가렸을 때, 제대로 검출이 가능한지를 확률로 표현한 것이다. 역시 예상대로 Pomeranian 이미지의 경우 가운데를 가리면 검출 능력이 현저히 떨어지는 것을 확인할 수 있다. (e)는 가리는 영역에 따라서 ZFNet이 분류가 어떻게 달라지는지를 보여준다. Pomeranian 영상에서는 가운데를 가리는 경우가 아니면, 대부분 제대로 분류를 해낸다. 다른 2개의 예제 영상은 그림이 좀더 복잡하기 때문에 양상이 조금 다르게 나온다는 것을 확인할 수 있다.

 

결과적으로 CNN의 경우는 분류나 인식을 원하는 개체의 위치에 따라 반응이 달라진다는 것을 확인할 수가 있다. ZFNet [1]은 Matthew Zeiler의 Visualization 기법을 기반으로 한 ZFNet에 대하여 알아보았다. Visualization 기법을 통해 CNN의 동작 원리를 잘 이해할 수 있게 되었으며, 최적의 구조 여부를 판단할 때도 Visualization을 활용을 잘 하면 큰 도움을 받을 수 있다는 것도 알게 되었다.

 

라온피플










배너









주요파트너/추천기업