brunch

매거진 CNN 101

You can make anything
by writing

C.S.Lewis

by TUGU Jan 28. 2019

Edge 부터 인식하자


사람도 CNN도 사물은 Edge부터 차근차근 인식해 나간다


이미지 인식 분야의 딥러닝에 있어서 컴퓨터가 이미지를 받아들이고 해석하는 과정은 인간이 사물을 보고 인식하는 과정과 닮아 있다. 사람의 얼굴을 인식하는 과정을 예로 들어보자. 인간이 상대방의 얼굴을 인식하는 과정은(워낙 찰나의 순간이기 때문에 인간 스스로는 인지할 수 없으나), 신경 생물학에서 검증한 내용을 바탕으로 아래와 같은 순서로 이루어진다.



1) 우선 얼굴을 이루는 굉장히 Low-level의  Edge(윤곽), 예를 들어 대각선, 수평선, 수직선, 원 등의 기본 요소부터  인식

2) 보다 구체화된 Middle-level의 요소들, 예를 들어 눈, 코, 입, 이마, 뺨 등을 인식

3) 이를 바탕으로 High-level인 사람의 얼굴 전체를 인식


이와 같은 사람의 인식 과정을 모사하여 컴퓨터가 이미지를 인식하는 과정은 Convolution이라는 메커니즘으로 구현이 가능한데, 아래 간단한 그림으로 나타내었다.


컴퓨터는 Filter 행렬을 통해 Edge를 인식해 나간다


그렇다면 실제로 컴퓨터가 이미지를 인식할 때, 어떻게 하면 Edge부터 차근차근 인식해 나가는 것인지 한번 살펴보자.


예시로  위와 같이 6x6 픽셀의 이미지가 있다고 하자. 각 픽셀 안의 숫자는 Gray Scale에 따른 고유의 픽셀 값을 나타낸 것이다.(만약 8비트 이미지라면 0~255의 값을 가질 것이다)


Convolution을 하려면 일종의 Filter(다른 말로 Kernel)를 통한 element-wise 한 행렬 연산이 필요한데, 실제로 Edge 성분을 추출하는 Filter 행렬은  3x3 사이즈의  필터를 썼을 때 가운데의 1,0, -1로 이루어진 행렬이라고 보면 된다. 이 Filter를 통해 Convolution을 진행하면 Filter의 각 값과 이에 해당하는 이미지의 9개 픽셀 0값을 각각 곱해서 합한 값이 나오게 된다. 이러한 식으로 Filter를 한 칸 한 칸 이동시켜 나가면서 값을 구해나가면 오른쪽의 4x4의 새로운 아웃풋 이미지가 나오게 될 것이다. 


보다 직관적인 이해를 위하여 아래와 같이 왼쪽 절반은 하얀색, 오른쪽 절반은 검은색인 이미지가 있다고 하고 3x3 Filter를 통해 Edge 성분을 추출한 4X4의 이미지가 오른쪽에 있다. 가운데 두 개의 열의 픽셀 값이 모두 30으로 강조가 되었고, 이를 이미지로 나타내면 가운데 두꺼운 하얀 선이 있는 이미지가 된다. 원래 6X6의 이미지에서 흰 영역, 검은 영역의 경계선이 Convolution을 통하여 두꺼운 하얀 선으로 강조가 된 것이다. 


인풋 이미지의 흰색, 검은색 영역이 좌우로 바뀐다면, 마찬가지로 동일한 Filter를 통했을 때 아웃풋은 아래와 같이 흰색, 검은색 영역이 반전된 형태로 나타날 것이다. Edge를 Detection 하는 것 자체가 목적이므로 Edge가 검은색으로 표현되건 흰색으로 표현되 건 큰 상관은 없다.


Vertical가 마찬가지로 Horizontal Edge 추출도 아래와 같이 3x3 사이즈 Filter에서 위행은 1, 가운데 0, 아래 행 -1로 간단히 구현이 가능하다. 인풋 이미지가 아래와 같이 체크무늬 형태의 이미지라고 했을 때 Horizontal Edge Filter 행렬을 통한 4X4의 이미지는 어떻게 보일지는 여러분이 한번 그려보시라.




CNN에서 학습이란 최적의 Filter행렬의 값을 찾아가는 것이다


그렇다면 이미지 인식 분야의 딥러닝, 즉 Convolutional Neural Network에서 우리가 학습 시켜야 할 파라미터는 무엇일까?

Edge 성분을 추출하는 Filter에는 앞서 말한 수직, 수평 성분뿐만이 아니라 대각선 (45도, 70도 등등) 및 원형 추출 등 다양한 Hand-made Filter가 존재한다.  그렇다면 우리는 과연 CNN이 최적의 성능을 발휘하기 위해서 이 수많은 Filter 중에 어떤 것을 취해야 하는가? 


딥러닝의 장점이 이러한 파라미터를 사람이 정하는 것이 아니라 스스로 학습해 가는 것이다. 즉 Filter 행렬 안에 어떠한 값들이 들어가야 최적의 Edge 성분을 추출하고  최소의 Cost와 최상의 accuracy를 가지는지 Gradient Descent를 통해서 학습을 해 나가야 하는 것이다. 이것이 CNN에서 학습해야 할 일종의 Weight라고 보면 된다.


Summary

- Convolutional Neural Network에서 컴퓨터가 이미지를 인식하는 과정은 사람의 그것과 닮아있다. 즉 사물의 Edge부터 시작해서 보다 High-level Feature를 인식해 나가는 것이다. 

- 이때 각 Level의 Feature 추출을 위해 Filter 행렬을 통해 Convolusion 하는 과정을 거친다. 

- 그리고 CNN에서는 이 Filter 행렬의 최적값을 학습 시켜야 한다.



자료 출처 : https://www.coursera.org/learn/convolutional-neural-networks/lecture/4Trod/edge-detection-example





매거진의 이전글 컴퓨터 비전과 딥러닝
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari