Posts List

[머신러닝/딥러닝] 9-5. CNN - Siamese Architecture, Time Series Classification

CNN의 마지막 챕터로 Image Classification, Object Detection 외 다른 목적을 위해 개발된 Architecture에 대해서 알아보고 CNN 포스팅을 마무리 하도록 한다.

Siamese Architecture

Siamese Architecture는 Detection 혹은 Verification 문제를 해결하기 위해 똑같은 CNN 네트워크를 병렬로 사용하는 구조다. (Siameses는 샴쌍둥이 할 때 '샴'의 영어 표기다.)

Detection은 이미지에서 object를 탐지 하는 것이다. 예를 들면 사람 사진에서 사람의 얼굴을 Detection 하고 class를 분류하는 것이다.

Verification은 해석하면 '검사 혹은 확인' 하는 것인데, 예를 들면 사진속 인물이 A라는 사람이 맞는지(True) 아닌지(False)를 Binary Classification 하는 것이다.

※ 실제로 스마트폰의 FaceID가 정확한 Siamese Architecture 사례라고 할 수 있다.
   ① 영상에서 얼굴을 Detecting 하고, ② 소유주가 맞는지 Verify 한다.

먼저 Base가 되는 ConvNet이 학습되어 있다고 가정하자.

Siamese architecture에서는 이 ConvNet을 복제하여 동시에 2개 이미지를 입력받을 수 있게 설계되었다. 그럼 ConvNet을 거쳐 image1은 h1으로 embedding 되고, image2는 h2로 embedding 된다. 이 때 image1과 image2가 같은 객체라면 두 embedding의 차이가 거의 없고 다른 객체라면 두 embedding의 차이가 큰 특징을 이용해서 두 이미지를 verify할 수 있다.

Siamese architecture의 장점은 두 이미지의 embedding의 차이를 비교하는 것이 핵심이기 때문에 ConvNet을 학습하기 위해 많은 데이터가 필요하지 않다는 것이다.
※ FaceID 등록을 위해 1장의 사진만 등록하는 것과 같은 이치다.
※ 그 외 지형의 변동을 감지하는 등 두 이미지의 차이를 탐지(detect) 혹은 판별(verify) 하는 용도로 다양하게 사용될 수 있다.


CNN for Time Series Classification

사실 개인적으로 연속된 signal을 주로 다루는 입장으로써 이번 주제가 가장 도움될 것 같다. 바로 Time Series 데이터에 CNN 기술을 접목하는 것이다.

공장이나 기계로부터 들어오는 신호는 대부분 continuous한 실수로 입력된다. 그런데 앞서 이미지를 실수로 구성된 vector로 전환하여 생각했듯, 실수 vector를 이미지로 변환하여 CNN을 적용할 수도 있다.



예를 들어 인체 관절의 3축 가속도를 Gyro sensor로 부터 얻었다면, 이를 이미지로 변환해 CNN으로 학습하면, 신호의 조합이 걷는 상황인지, 앉는 상황인지 등을 Classification 하는 것이다.

공장에 빗대면, 기계에서 발생한 m개의 전기신호의 n회 시간동안의 데이터를 n x m 크기를 갖는 이미지로 변환할 수 있다. 마치 n시간 동안의 기계의 상태를 이미지로 표현한 것과 같다. 그리고 그 이미지를 고장 / 정비 / 정상으로 Classification 할 수 있다면 상당히 도움이 될 것 같다.

[Inception Time: Finding AlexNet for Time Series Classification, 2019]

Time series를 CNN으로 처리하는 분야도 상당히 연구가 많이 되었다. 이미 성공사례가 많이 발견된 영상처리에서 사용된 기법을 적용하기도 하는데, 위 사례는 Inception module의 개념을 사용해서 4종류의 filter를 사용해 feature를 뽑는 구조이다.


지금까지 상당히 길게 CNN을 포스팅하긴 했는데, 사실 지금까지 다룬 내용도 CNN 맛뵈기에 불과하다. 자세한 내용은 [컴퓨터 비전] 수업에서 다시 자세히 다루기로 하고, 다음은 Time Series 데이터를 처리하는데 최적인 RNN에 대해서 알아보도록 하자.

댓글 쓰기

0 댓글