이안준 애자일소다 AI알고리즘연구팀 선임연구원

▲ 이안준
애자일소다 AI알고리즘연구팀 선임연구원

[컴퓨터월드]


Behind The AI

요즘 AI가 탑재된 스피커를 흔하게 볼 수 있다. “오늘 날씨 어때?”, “BTS 노래 틀어줘” 같은 명령어를 AI는 정확히 알아듣고 날씨정보를 제공하거나 음악을 재생해 준다. 이처럼 똑똑하게 우리와 대면하고 있는 AI는 마치 완벽한 하나의 존재처럼 느껴진다. 하지만 이 AI 뒤에는 “음성인식”, “문장에서 주제 파악”, “콘텐츠 추천” 등 다양한 일을 하는 ‘모델’들이 각기 동작하고 있다.

이 글에서는 최근 필자가 개발에 참여했던 당사의 ‘네이키드미터(도시가스용 계량기 지침 인식 솔루션)’의 사례를 통해, AI 뒤에 보이지 않는 ‘모델’들에 대한 이야기를 하고자 한다. ‘네이키드미터’는 현장에서 검침원이 사용하기 때문에 다양한 환경에서 찍힌 사진에 대해 높은 정확도로 숫자를 읽어내야 했다. 하지만 하나의 모델로 원하는 정확도를 얻기는 불가능했다. 그래서 우리는 각 단계에 최적화된 모델을 만들고 사용자는 그것을 하나인 것처럼 느낄 수 있게 연결하는데 집중했다.


숫자를 읽는 AI

일반적으로 사람이 썼거나 인쇄된 문서의 이미지를 컴퓨터가 읽을 수 있는 문자로 변환하는 것을 ‘광학 문자 인식(Optical Character Recognition; OCR)’이라고 한다. 딥러닝의 도입으로 문서 뿐만 아니라 일상생활에서 흔히 지나치는 광고판, 표지판 등의 글자들을 이미지로 인식하고자 하는 연구도 활발히 진행되고 있다. ‘PhotoOCR’이라 불리는 이런 연구는 자율주행 자동차, 이미지 검색, 번역, 스마트팩토리 등 텍스트 정보가 필요한 다양한 분야에 사용되기 때문에 컴퓨터 비전 분야에서 중요하게 다뤄지고 있다.

▲ '네이키드미터'로 가스 계량기를 인식하는 모습

‘네이키드미터’는 AI 기술을 이용해 가스계량기 사진에서 계량기의 일련번호와 지침(가스사용량이 표시되는 부분) 숫자를 읽어내는 솔루션이다. 이렇게 사진 속에서 원하는 숫자를 읽어내기 위해 크게 두 가지 과정이 필요하다. 바로 ‘숫자가 있는 영역을 찾는 것’과 ‘찾아 낸 영역에서 숫자 이미지를 컴퓨터가 읽을 수 있는 텍스트로 변환하는 것’이다.


숫자가 있는 영역 찾기

형식이 정해져 있는 문서 사진에서 읽고자 하는 숫자가 포함된 영역을 찾는 것은 사실 간단하다. 예를 들어 주민등록증을 촬영한 사진에서 주민등록번호를 찾으려면 해당 숫자가 있는 좌표만 찾으면 된다. 하지만 계량기의 경우 모델마다 일련번호와 지침의 위치가 다르고 사진을 찍는 사람마다 각도, 거리 등 천차만별이기 때문에 딥러닝 모델의 도움이 필요하다.

우리는 각 계량기 사진에 찾고자 하는 영역을 레이블링하고 모델을 학습시켰다. 이때 중요한 것은 각도가 틀어지거나 빛 번짐 등이 포함된 다양한 사진들을 학습시켜야 한다는 것이다. 그래야만 딥러닝 모델이 새로운 사진을 접했을 때 비교적 정확하게 숫자가 있는 위치를 찾을 수 있기 때문이다.


이미지를 텍스트로 변환하기

숫자가 있는 영역을 찾았다면, 다음 과정은 숫자 영역의 이미지를 컴퓨터가 읽을 수 있는 텍스트로 변환하는 과정이다. 이 과정을 수행하기 위해 ‘합성곱신경망(CNN)’과 ‘순환신경망(RNN)’을 동시에 갖는 모델을 사용했다.

흔히 ‘합성곱신경망’은 이미지의 형태를 분석하는데 사용하며 ‘순환신경망’은 시계열 데이터처럼 시간에 따라 변하는 데이터를 분석할 때 사용한다. 사람이 ‘123’이라는 숫자를 읽는다고 가정해보자. 왼쪽부터 숫자의 모양을 보며 ‘1’, ‘2’, ‘3’ 이렇게 하나씩 읽을 것이다. 딥러닝 모델이 숫자를 읽는 과정도 유사하다. ‘합성곱신경망’을 통해 숫자의 형태에 대한 정보를 습득한 후에 ‘순환신경망’을 이용해 왼쪽부터 차례로 텍스트로 변환한다.

이제 마지막 과정은 각 모델들을 마치 ‘하나’의 AI처럼 보이게 만드는 과정이다. 솔루션을 사용할 사용자에게 중간 과정에서 나오는 결과물들은 중요하지 않다. 계량기 이미지를 AI에게 보여줬을 때 원하는 결과물은 일련번호와 지침의 텍스트뿐이다. 이를 위해 다양한 모델들이 정상적으로 작동하도록 연결해주고 컨테이너화 하는 과정이 필요하다. 여러 모델들을 하나로 묶어 컨테이너화 함으로써 AI 사용자는 원하는 결과 값만 이용할 수 있게 된다.


복잡한 문제는 단순한 여러 개의 문제로

‘네이키드미터’의 사례를 통해 AI에 숨겨진 딥러닝 ‘모델’들에 관한 이야기를 해보았다. 복잡한 문제를 해결할 수 있는 하나의 ‘모델’이 존재한다면 좋겠지만, 그런 ‘모델’을 만드는 데는 상당한 시간과 비용이 필요하다.

만일 AI를 이용해 복잡한 문제를 해결해야 하는 상황이라면, 하나의 ‘모델’로 답을 내려고 애쓰기보다 비교적 단순한 여러 개의 문제로 해체해 놓고 생각해 보는 건 어떨까? 개별 미션에 최적의 답을 낼 수 있는 ‘모델’을 찾고, 여러 모델들이 시너지를 발휘할 수 있도록 연결할 수 있다면 어떤 복잡한 문제도 해결할 수 있을 것이라고 생각한다.

따라서 분석가는 평소 문제를 다각적으로 볼 수 있는 유연한 시각을 갖도록 자신만의 방식으로 훈련을 해둬야 하며, 새롭게 발표되는 수많은 ‘모델’들에도 관심을 가지고 있어야 필요할 때 유용하게 활용할 수 있을 것이다.

저작권자 © 컴퓨터월드 무단전재 및 재배포 금지