반응형

Computer Vision의 역사

지문인식으로 Computer Vision의 역사를 살펴보면 다음과 같다. 과거에는 이미지의 일부 정보만 활용하여 특징점을 추출했다. 이러한 경우에는 같은 특징점을 가지는 사람이 다수 존재할 수 있다는 문제가 있었다. 이러한 문제를 해결하기 위해 사람의 지문을 세 종류로 나누어 이러한 오분류를 최소화하려고 했다.

 

오늘날에는 딥러닝을 사용하기 때문에 지문을 촬영한 이미지의 픽셀 정보 자체를 활용하기 때문에 버리는 정보가 거의 없다고 한다. 비록 이러한 접근이 컴퓨터의 관점에서는 비효율적일 수 있지만, 정확도 면에서 장점이 크다고 한다.

 

Convolution Layer

Convolution Layer는 필터를 통해 인위적으로 이미지를 훼손시켜서 특징만 남기는 역할을 한다. 위 그림은 Convolution Layer의 역할에 대해서 나타내고 있다. 하나의 원본 이미지가 Convolution Layer에 포함된 여러 필터를 거치면서 5장의 훼손된 이미지가 나온다.

 

이미지를 인위적으로 훼손하여 특징만 남기는 이유는, 사람이 무언가를 기억하고 식별하는 원리를 모방하기 위함이다. 우리가 사람의 얼굴을 기억할 때는 대상의 모습을 사진처럼 완벽하게 기억하지 않고, 특징이 될 만한 요소들을 기억한다. 이처럼 Convolution Layer는 대상의 모습을 사진처럼 완벽한 모습을 남기는 것이 아닌, 원본 이미지를 어느정도 훼손시키는 과정을 통해 특징만 남긴다.

 

이러한 Convolution Layer를 활용하여 CNN(Convolutional Nearal Network)를 구축함으로, 대상의 특징 정보들을 자동으로 검출할 수 있게 되었다. 이러한 이유로 CNN은 자동 특징 검출기(Feature Extractor)라고도 불린다.

 

CNN은 어떤 필터를 사용하여 어떤 방식으로 원본 손실시킬지를 판별하는 것이 기본 원리이며, 2차원 데이터를 처리한다는 특징이 있다. 2차원 데이터를 처리한다는 것은 이미지 데이터를 처리함에 있어 본래 Flatten 작업을 거쳐 1차원 데이터를 사용해야 했던 일반적인 신경망 모형보다 유리하다는 장점이 있다.

 

CNN 과정

위 그림은 CNN의 처리 과정을 나타낸 모습이다. CNN은 Feature Extraction과 Classification 과정으로 나뉜다. 이번 시간에 주로 알아볼 내용은 Feature Extraction 과정이다.

Classification은 기존에 배운 딥러닝을 수행하는 과정이다.

 

Feature Extraction 과정을 설명하면 다음과 같다.

  1. Convolution Layer를 이용해 이미지의 특징을 추출한다. 이때, 난수를 이용해 다양한 필터를 제작함으로 여러 관점에서의 특징을 얻도록 한다.
  2. Convolution Layer를 거친 결과값을 Pooling Layer에 입력값으로 넣어 대표값을 남긴다. 이 과정을 통해 Pooling Layer에 입력된 정보들 중 뚜렷한 부분만 남겨 특징들을 단순화한다.
  3. 1~2번 과정을 반복한다. 이러한 과정들을 통해 특징들을 단순화함으로 이미지를 구별할 수 있는 간결한 특징은 남고, 도움이 되지 않는 정보들은 삭제된다.

 

Convolution Layer를 통한 필터링 과정

위 그림은 Convolution Layer를 통한 필터링 과정을 나타내는 모습이다. 위와 같이 4*4 크기의 RGB 채널(3개의 채널) 이미지와 3*3 크기의 필터가 있다고 하자. 여기서 필터에 저장된 값들을 전부 난수로 설정된 값으로, 다양한 관점에서의 특징을 추출하기 위해 값들을 난수로 설정한 모습이다. 이러한 상황에서 필터링 과정을 설명하면 다음과 같다.

 

  1. 필터를 채널의 좌측 상단부터 끼워 맞춘다.
  2. 필터와 채널이 대응되는 부분끼리 행렬 곱을 수행한다.
  3. 좌측 상단, 우측 상단, 좌측 하단, 우측 하단에 대응되는 행렬곱 값들을 모은다.
  4. 각 채널 별로 나온 행렬곱 값들을 모두 더한다. -> Feature Map 완성

 

이 과정에서 이미지의 크기(N)와 필터의 크기(F), 한 번에 이동하는 거리(Stride)에 따른 이동 횟수를 위와 같이 계산할 수 있다.

 

더 나아가 Convolution Layer를 통과하는 상황에서 만약 Stride의 값이 1이라면, 결과 이미지의 크기는 위 식으로 구한 이동 횟수와 같아지므로 이미지의 크기는 점차 작아진다.

 

Zero Padding

Zero Padding은 앞서 말한 이미지의 크기가 줄어드는 현상을 방지하기 위해 사용하는 기법이다.

 

원본 이미지에 0으로 이루어진 Padding을 감싸줌으로 Convolution Layer를 지날 때 이미지의 크기가 줄어드는 것을 방지함과 동시에, 이미지의 가장자리의 위치를 알려주기도 하는 역할을 한다.

반응형

+ Recent posts