바로가기 메뉴
본문 바로가기
대메뉴 바로가기

TECH M

인공지능은 사물을 어떻게 인식할까?

LECTURE NOTE UX 心포니

2018-02-26연세대 UX랩 인지공학스퀘어(김윤정, 조광수)

[테크M=연세대 UX랩 인지공학스퀘어(김윤정, 조광수)]들뜬 마음에 외국 여행을 가보면 이만 저만 난관이 많은 게 아니다. 특히 식당에 가서 메뉴를 고를 때 참 난감하다. 알지 못하는 현지어로 쓰여 있기 때문이다. 그래도 음식 사진이 있을 때는 좀 다행이다. 그렇지만 사진을 보고도 어떤 음식인지 잘 모를 수 있고, 알러지가 있는 재료를 썼을까 고민이 되기도 한다. 그 때 한가지 좋은 방법은 현지 음식을 대해 잘 아는 친구에게 메뉴판을 카메라로 찍어 보내 도움을 청하는 것이다.

그런데 만약 그런 친구가 없다면? 이젠 인공지능 기반 이미지 검색 서비스를 이용하면 된다. 보통 인터넷 검색기를 사용하듯 사진 이미지를 넣어서 검색을 하면 다양한 ‘유사’ 이미지와 함께 관계된 정보를 찾을 수 있다. 더 이상 친구에게 묻지 않아도 어떤 음식인지, 맛은 어떤지도 알 수 있다. 요즘은 칼로리가 어느 정도 되는지 알려주는 스마트폰 앱도 있다.

인공지능 이미지 검색 서비스는 여기에서 멈추지 않는다. 이미지 속에서 어떤 유용한 정보를 찾아내기도 한다. 예를 들어, 페이스북에 사진을 올리면 사진 속 사람마다 이름이 붙는다. 페이스북 사용자가 수가 10억명이 넘는데, 그 사용자들을 찾아서 이름을 달아준다. 신기할 지경이다.

그림1 구글 인공지능의 사진 설명문

자율주행차에서도 인공지능 이미지 인식 기술은 중요하다. 도로를 주행하면서, 전방에서 주행하는 차를 인식할 뿐 만 아니라, 도로 위의 표지판이나, 길 걷고 있는 사람, 건널목을 건너는 사람도 인식한다. 그런데 하얀색 트랙이나 펄펄 내리는 눈은 알아보지못한다. 병원의 X-레이나 MRI 영상을 보면서 질병이 있는지 알아보기도 하고, CCTV를 보면서 이상한 사람은 없는지 찾아내기도한다. 2016년 발표된 구글의 AI는 사진의 내용을 ‘거의 사람처럼’ 설명할 수 있다. 94%의 정확도라고 한다. (그림1 참고)

인공지능은 어떻게 이미지를 알아볼까?

그런데 이렇게 신기방기한 인공지능은 어떻게 사진과 영상을 알아 볼 수 있을까? 물론 컴퓨터와 사람이 보는 방식은 전혀 다르다. 일단 인공지능이 작동하는 컴퓨터는 사람같은 눈을 가지고있지 않다. 그래서 카메라로 받아들인 디지털 영상을 볼 뿐이다. 물론 이 디지털 영상을 컴퓨터가 ‘보는’ 방법은 사람과 다르다. 단지 숫자를 볼 뿐이다.

그림2 픽셀값이 보이는 사진 예

그림 2는 8 비트의 회색조 혹은 그레이스케일의 이미지인데, 디지털 이미지는 이렇게 네모칸으로 되어 있는 픽셀이라는 격자들과 그 격자안의 숫자라는 픽셀값으로 구성돼있다. 이 픽셀값으로 흰색에서 검정색의 여러단계를 표현하고 그것들의 패턴을 보며 사람의 이미지로 인식한다. 하지만 컴퓨터는 그저 이 픽셀값을 읽을 뿐이다. 사람처럼 형태를 보는 것도 아니고 색을 보는 것도 아니다.

 그림3 손글씨 이미지그림3은 손으로 쓴 숫자, 1의 이미지를 보여준다. 이미지에서 가로의 픽셀 수는 25개, 세로의 픽셀 수도 25개, 즉 총 25 X 25의 해상도(resolution), 625개의 픽셀 값을 가지고 있다. 각 픽셀은 1또는 0이란 숫자가 들어 있다. 참고로 회색은 이해를 돕기 위해 표시를 한 것 뿐이다.

흑백으로 된 이미지이기 때문에 검정색 잉크로 숫자가 써진 부분의 픽셀에는 1이 있고, 그렇지 않은 픽셀에는 흰색으로 0이라고 되어 있다. 이 숫자들을 좌측 상단줄부터 우측 하단으로 쭉 읽어보면, 0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, … 이렇게 4줄을 읽고, 다섯째 줄에 가서0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,이라고 읽고, 같은 방식으로 나머지 픽셀을 모두 읽는다.

그러면 625개의 모든 픽셀값을 읽게 된다. 참 단순하기 그지 없지만, 이런 숫자들의 모음을 멋진 말로 벡터(vector)라고 부른다. 물리학의 벡터와는 약간 다르지만 여전히 벡터라고 부른다.

또 다른 1이란 숫자는 조금 바뀐 패턴일 것이다. 이런 패턴의 공통적인 특징을 컴퓨터가 파악하면 손으로 쓴 1이란 숫자를 이해하게 된다. 글자도 마찬가지다. 컴퓨터는 사람처럼 a라는 글자를 그대로 읽는 게 아니라, 예를 들어 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1 라는 식으로 픽셀값을 읽을 뿐이다.

사진 이미지의 해상도가 높으면, 픽셀수가 더 많아진다. 앞의 25 X 25의 이미지보다, 1024 X 768의 이미지는 픽셀수가 훨씬 많다. 똑같은 장면이라도, 픽셀수가 많다면 즉 해상도가 높은 카메라로 찍으면 사진의 표현이 섬세해진다. 물론 앞에서는 0과 1로 코딩했지만, 4가지값으로 코딩이 될 수도 있고, 256가지의 값 혹은 그 이상의 값으로 코딩될 수도 있다. 숫자 범위가 넓을수록 더욱 정밀한 표현을 할 수 있다. 색도 마찬가지다. 여러가지 방법이있지만, RGB방식을 사용해서(참고로 R은 빨강, G는 녹색, B는 파란색이다), 각각의 색마다 256개의 스케일로 코딩을 할 수 있다. 마치 빨간색 렌즈의 선글라스로 세상을 보고, 초록색 렌즈로 보고, 파란색 렌즈로 본 이미지를 3층으로 쌓으면 RGB 방식의 컬러 이미지가 된다.

그렇다면, 이미지 검색은 어떻게 하는지 알아보자. 각 이미지가 얼마나 같은지 다른지는 바로 이 숫자들의 백터를 비교해서 파악하는 것이다. 상식적으로 두 이미지가 완벽하게 일치한다면, 즉 같은 이미지 두 장이라면, 각기 대응되는 픽셀의 값이 같을 것이다. 즉, 두 이미지에서 대응되는 픽셀값을 빼준다면, 각 차이값은 0이 될 것이다. 그리고 이 차이값들을 모두 더한다면 0이 될 것이고, 그렇다면 두 이미지가 같다라고 말할 수 있다.

마찬 가지로 조금씩 이미지가 다를 수 있다. 같은 방식을 적용해서, 그 총합이 0에 가까우면 가까울수록 두 이미지는 비슷할 것이고, 총합이 0보다 크면 클수록 두 이미지는 다르다고 말할 수 있다. 이 방식은 실제로 두 이미지간의 유사성을 비교하는 알고리듬인 해밍 거리 구하기라는 알고리듬을 이해하기 쉽게 살짝 변형한 것이다. 이렇게 빼기를 이용하는 방법도 있지만, 일단 숫자로 되어 있기에 수학이나 통계의 다양한 방법을 거의 모두 동원할 수 있다. 문제는 얼마나 정확히 얼마나 빨리 계산을 하는가일 뿐이다.

>>>

컴퓨터와 사람이 보는 방식은 전혀 다르다. 일단 인공지능이 작동하는 컴퓨터는 사람같은 눈을 가지고 있지 않다. 카메라로 받아들인 디지털 영상을 볼 뿐이다. 물론 이 디지털 영상을 컴퓨터가 ‘보는’ 방법은 사람과 다르다. 단지 숫자를 볼 뿐이다.


<본 기사는 테크M 제58호(2018년 2월) 기사입니다>