Play With AI > Chapter 3. 나를 찾아봐

[이해하기] 컴퓨터가 이미지를 감지하는 방법 알아보기

스마트폰으로 SNOW 앱 체험하기

SNOW 앱을 사용해본 적이 있나요?

SNOW 앱은 카메라에 얼굴을 비추고, 원하는 스타일대로 얼굴에 스티커를 붙이거나 가면을 쓸 수 있게 해주는 앱 입니다.

우리는 다른 사람의 얼굴을 보고 그 사람의 눈, 코, 입 등의 위치를 바로 파악할 수 있습니다. SNOW 앱 역시 카메라에 감지된 사람의 눈, 코, 입 위치를 알 수 있죠. 우리가 사람의 얼굴을 알아차리는 방법과 SNOW 앱 속 컴퓨터 프로그램이 얼굴을 감지하는 방법이 똑같을까요? 컴퓨터는 어떻게 사람의 얼굴 이미지를 감지할까요?

 

 이번 주제에서는 컴퓨터가 이미지를 감지하는 방법에 대해 알아보고, 비디오 감지 기능을 이용하여 얼굴을 꾸며주는 인공지능 프로그램을 만들어보겠습니다. 그리고 얼굴을 감지하는 인공지능 기술이 가져올 수 있는 사회적 영향에 대해 서로 이야기해 보겠습니다.


[인공지능 체험하기]

SNOW 앱의 기능을 직접 체험해봅시다.


컴퓨터는 이미지를 어떻게 감지할까요?

여기에 고양이 이미지 데이터가 있습니다. 이걸 보고 고양이인지 아닌지를 사람은 쉽게 구분할 수 있습니다. 컴퓨터는 고양이인지 아닌지를 어떻게 알 수 있을까요?


 

컴퓨터는 이미지 데이터를 받으면 그것을 컴퓨터가 저장하고 처리할 수 있는 형태로 바꾸는 ‘이미지 처리 (’Image processing’)를 합니다. 주로 픽셀 형태로 이미지를 표현하고 저장하죠.

이렇게 이미지 처리 과정을 거쳐도 아직 컴퓨터는 이것이 고양이를 나타내는 이미지인지 인식하지는 못합니다. 그냥 컴퓨터가 알아볼 수 있는 형태로 이미지를 바꾼 상태일 뿐이거든요. 여기까지는 인공지능의 영역은 아닙니다.

컴퓨터가 이미지를 보고 ‘고양이’라는 것을 구분할 수 있을 때, 우리는 컴퓨터가 그 이미지를 ‘인식’ 했다고 이야기합니다. 이때, 고양이라고 판단을 내리는 근거가 있어야 합니다. 귀가 뾰족하다, 꼬리가 있다, 수염이 있다 등의 특징(Feature)을 근거로 판단을 내릴 수 있습니다. 이미지 데이터에서 특징을 찾는 과정을 ‘특징 추출 (Feature Extraction)’이라 합니다. 이미지 속에서 특징을 찾아 그 특징들을 조합한 것을 바탕으로 컴퓨터가 ‘고양이’라는 것을 스스로 인식할 수 있게 되는 것이죠. 이처럼 컴퓨터가 사람의 눈처럼 사물을 인식하여 구분할 수 있는 것을 인공지능 분야 중 하나인 '컴퓨터 비전(Computer Vision)'이라고 합니다.

그럼 지금부터 ‘이미지 처리’를 할 때 사용되는 ‘픽셀’에 대해 먼저 알아볼까요?


1. 이미지 처리 단계 - 픽셀(Pixel) 알아보기

컴퓨터는 숫자로 데이터를 표현하고 저장합니다. 그래서 컴퓨터가 이미지를 처리하려면 이미지 역시 숫자 형태로 표현되어야 합니다. 그렇다면 이미지를 어떻게 숫자로 표현할 수 있을까요? 컴퓨터는 이미지를 ‘픽셀 (pixel)’ 형태로 만들어 처리합니다. 픽셀이란 무엇일까요?


 

1-1. 픽셀이란?

 

이미지를 크게 확대해본 적이 있나요? 이미지를 계속해서 키우다 보면 그림이 작은 사각형들로 이루어져 있다는 것을 알 수 있습니다. 이 작은 사각형 한 개를 픽셀(pixel) 혹은 화소라고 부릅니다. 한 이미지에 픽셀이 많을수록 이미지는 고화질이 됩니다. 컴퓨터는 이 픽셀들에 있는 숫자들로 이미지를 알아봅니다.


1-2-①. 흑백 이미지 표현

 흑백 이미지는 픽셀에 0 혹은 1을 저장하여 표현 합니다. 이때, 0은 흰색을 나타내고 1은 검은색을 나타냅니다. 아래 0과 1로만 이루어진 이미지는 어떤 모양일까요?

1-2-②. 회색조 이미지 표현

 0과 1로만 표현을 하면 이미지의 명암을 표현할 수가 없습니다. 픽셀에는 0~255까지의 숫자가 저장됩니다. 숫자가 커질수록 이미지의 색은 밝아지고 숫자가 작아질수록 색이 어두워집니다. 즉, 픽셀에 저장된 숫자가 0이면 검은색이고 255면 흰색입니다.


1-2-③. 컬러 이미지 표현

 컬러 이미지는 빨강(Red), 녹색(Green), 파랑(Blue)의 조합으로 표현됩니다. 각 색깔은 0~255 사이의 값으로 각각 빨강의 정도, 녹색의 정도, 파랑의 정도를 나타냅니다.


2. 이미지에서 특징 추출(Feature Extraction)하기

컴퓨터가 이미지를 감지하려면 이미지 속에서 특징(Feature)을 추출하고 그것을 분석해야 합니다. 이미지 속에서 특징을 추출하는 방법은 여러 가지가 있습니다. 먼저 아래와 같이 이미지에서 특징을 찾아낼 수 있습니다.

 

 


다리의 수가 4개인지 2개인지, 깃털이 있는지 등의 이런 특징을 사람이라면 쉽게 이해할 수 있지만, 컴퓨터에게 이런 규칙을 계속적으로 추가해 주어야 하는 번거로움이 있습니다. 이외에도 앞서 배운 픽셀 단위의 정보로 이미지에서 특징을 추출하는 방법이 있습니다. 픽셀간의 관계나 모양 등에서 특징을 찾아내는 것입니다. 이중 사물의 윤곽선에서 특징을 추출하는 방법도 있습니다. 좀 더 자세히 살펴볼까요?


2-1. 윤곽선 감지(Edge Detection)란?

 왼쪽 그림이 무엇을 표현한 것인지 알겠나요? 바로 강아지(개)입니다. 단순히 선으로 이루어진 그림이지만 우리는 이것이 강아지라는 것을 알 수 있습니다. 실제로 사람이 무언가를 볼 때 그것의 윤곽을 먼저 본다고 합니다. 이러한 원리는 컴퓨터가 이미지를 감지하는 방법 중 하나로 사용됩니다.

 

 앞에서 우리는 컴퓨터가 픽셀 단위로 이미지를 처리한다는 것을 배웠습니다. 컴퓨터가 픽셀을 통해 윤곽선을 추출 하는 방법에 대해 활동을 통해 알아봅시다.


2-2. 윤곽선 감지 활동하기

이미지에서 윤곽선을 쉽게 찾는 방법은 이웃한 픽셀값의 차이를 비교하는 것입니다. 픽셀값의 차이가 크다면 양쪽의 색이 다르다는 것이겠죠? 바로 여기가 이미지의 윤곽선에 해당합니다. 아래의 표는 이미지의 픽셀값을 나타내고 있습니다. 컴퓨터가 하는 것처럼 윤곽선을 감지해 이미지의 형태를 알아보는 활동을 해봅시다. 다음 그림에서 이웃하는 두 픽셀값이 50보다 크면 그 사이에 선을 그어보세요.

 

Q. 어떤 이미지가 나왔나요? ___________
이미지에서 추출할 수 있는 특징은 윤곽선 외에도 색깔 등 여러 가지가 있습니다. 하지만 이러한 특징들을 모두 사람이 직접 찾아내는 일은 무척 어려운 일입니다. 게다가 그렇게 해서 만든 인공지능은 이미지를 감지하는 성능이 그다지 좋지 않았습니다. 그래서 최근의 인공지능 기술은 이미지 속 특징을 스스로 찾아냅니다. 최근 이미지 관련 인공지능 분야에서 가장 많이 쓰이는 CNN(Convolutions Neural Net,합성곱 신경망)이라는 방법을 예로 들어 설명해보겠습니다.

※CNN의 원리

 CNN의 전체 원리는 복잡하지만, 여기서는 어떻게 특징을 만들어 나가는지만 간단히 살펴보겠습니다. 

CNN에서는 어떤 계산 과정을 통해 이미지에 있는 가로선, 세로선, 원, 대각선 등의 특징을 추출합니다. 이 과정은 여러분이 앞에서 한 윤곽선 감지 활동과 비슷합니다. 앞선 활동에서 픽셀 값의 차이가 50이상인 곳에 선을 그어 집을 찾았습니다.

이때, 픽셀 값의 차이가 나는 부분을 어떻게 찾았나요? 좌에서 우로 또는 위에서 아래로 값이 차이가 나는 곳을 눈으로 찾았을 것입니다. CNN도 이렇게 값의 차이를 찾는데 빨간 박스와 같이 칸을 정해서 임의의 값으로 숫자들을 곱하여 계산합니다. 사람이라면 정해진 규칙인 50이상인 곳만 찾다가 놓치는 특징도 컴퓨터는 찾을 수 있습니다. 

이 방법을 여러 번 반복하여 다양한 특징들을 담은 정보가 만들어집니다. 그런데 이런 정보의 양은 매우 많습니다. 이 정보들이 다시 서로 합쳐지고 인근의 숫자 중에서 가장 큰 값만을 뽑아내는 등의 방법으로 조합되면서 새로운 특징을 만들어 나가고 이 특징을 통해 이미지의 특징을 생성하게 됩니다. 이것을 특징 맵(feature maps)이라고 합니다.

얼굴을 감지하는 것도 마찬가지입니다. 사람의 얼굴 이미지에서 얼굴의 특징을 추출하여 사람의 얼굴을 감지할 수 있는 것입니다. 그럼 이제 얼굴을 감지할 수 있도록 만들어진 엔트리의 ‘비디오 감지’ 기능을 이용하여 우리 만의 SNOW 앱을 만들어봅시다.