안녕하세요, 메이아이의 Lead Researcher 박진우입니다.
지금까지 다양한 오프라인 공간들을 분석하면서 메이아이의 인공지능 엔진 'daram'에 많은 발전이 있었고, 몇몇 기회들을 통해 daram의 핵심 기술에는 어떤 특징이 있었는지 간단하게 말씀드리고는 했습니다.
그러나 돌이켜보니 그동안 daram의 근본을 이루는 인공지능 모델의 전반적인 내용에 대해 설명드린 적은 없었던 것 같습니다. 보통 저희의 고객사를 포함해서 저희 기술에 대해 설명드릴 기회가 있다고 하더라도 주로 이벤트 감지라든지, 동선 추적이라든지, 그룹 분석과 같은 특정 기능에 대해서만 소개를 드리곤 했거든요. 정말 기본적인 물체 인식 원리 등에 대해서는 내용의 복잡성 때문에 대략적으로만 소개 드리는 일이 다반사입니다.
그러나 이러한 기능들은 모두 물체 인식과 같은 인공지능 모델로부터 나온 원천 데이터를 규칙 기반 알고리즘 등을 통해 가공해서 만들어지기 때문에, 베이스 인공지능 모델들에 대해 이해하신다면 더 쉽고 깊게 매쉬의 기능을 이해할 수 있습니다.
따라서 이번 글을 시작으로, daram의 근간을 이루고 있는 기술은 무엇이고, 어떤 특성을 갖고 있으며, 어떤 장점을 가지고 있는지 자랑해 보고자 합니다. 처음 소개드릴 인공지능 모델로 무엇이 좋을까 생각해 보았는데요. 역시 저희의 모든 데이터의 근본을 담당하는 물체 인식, 즉 Object Detection 모델만 한 게 없다고 생각했습니다.
Object Detection 소개
현재 인공지능 컴퓨터 비전 분야에서 가장 기초가 되는 연구 주제는 주어진 이미지에 대해서 해당하는 클래스를 추정하는, '이미지 분류(Image Classification)' 분야입니다. 딥러닝 관련 연구에 대해 접할 기회가 있으시다면 특별한 이유가 있지 않는 한 대부분이 MNIST나 CIFAR10과 같은 이미지 분류용 데이터셋과 딥러닝 모델을 가지고 실험하는 것을 확인하실 수 있으실 겁니다. 다르게 표현하자면, 이미지 분류는 인공지능 컴퓨터 비전 분야에서 가장 클래식한 분야라고 볼 수 있습니다.
그렇다면 이미지 분류 다음으로 클래식한 분야는 무엇이 있을까요? 여러 가지를 꼽을 수 있겠지만, 그중 하나로는 '물체 인식(Object Detection)'을 제시할 수 있을 것 같습니다. 물체 인식이란 어떠한 주어진 이미지에서 특정한 물체들을 찾아서 네모난 박스, 즉 바운딩 박스(bbox)로 위치를 표시해 주는 일입니다. 이미지 분류는 주어진 이미지에 대해 하나의 클래스 즉, 라벨만 붙이는 거라고 한다면 물체 인식은 라벨에 더해서 물체의 위치를 추가적으로 추정하는, 한 단계 더 복잡한 테스크라고 볼 수 있죠.
물체 인식의 활용처는 교통, 보안뿐 아니라 패션(온라인 태깅 서비스) 등 매우 다양합니다. 현재 많은 관심을 받고 있는 자율 주행 분야에서도 물체 인식 기술을 활용하여 구현하곤 합니다. 물론 매쉬에서도 물체 인식은 매우 중추적인 역할을 맡고 있는데요. 메이아이에서는 가장 기본적으로 이루어지는 방문객 인식 작업을 통해 오프라인 공간 분석이 가능하도록, 자체 개발한 물체 인식 딥러닝 모델을 사용하고 있습니다.
Object Detector 종류
물체 인식을 구현하기 위한 방법은 정말 다양합니다. 딥러닝 이전의 전통적인 컴퓨터 비전 분야에서는 이미지에서 특징적인 패턴들을 추출하기 위해 HOG (Histogram of Gradients)와 같은 기법을 사용했고, 이러한 패턴들이 실제 물체인지 파악하는 방법으로 SVM(Support Vector Machine) 등을 사용하는 것과 같은 방식들이 있었는데요. 딥러닝 분야의 발전과 함께 이러한 기법 모두 신경망 모델을 사용하는 방향으로 발전해 왔고, 현재는 크게 설계에 따라 Two-stage Detector와 One-stage Detector 두 가지 방법이 대표적인 Object Detector가 되었습니다.
Two-stage Detector
만약 여러분이 아무런 사전 정보 없이 물체 인식 모델을 개발해야 하는 연구자라면 어떤 방식으로 접근하시겠습니까? 앞서 말씀드린 바와 같이 물체 인식은 이미지 분류 작업에서 해당 물체의 위치 정보를 추가적으로 추정하는 작업이라고도 볼 수 있습니다. 그렇다면 물체 인식 모델을 만들기 위해서는, 좋은 이미지 분류기(classifier)가 이미 만들어져 있다는 전제하에 물체의 위치만 알아내는 부분만을 추가 개발하면 되지 않을까요? 그러면 일단 물체의 정체와 무관하게 그 물체가 있을 만한 위치를 먼저 골라낸 다음, 그 이후에 물체의 정체를 알아내는 방식의 모델을 생각해 볼 수 있을 것입니다.
아마 R-CNN 계열의 Object Detector들을 고안한 사람들도 같은 생각으로 접근했지 않을까 합니다. 2013년 처음 R-CNN이 제시된 이후로 Fast R-CNN, Faster R-CNN으로 발전한 R-CNN 계열의 Object Detector는 대표적인 two-stage detector로 알려져 있는데요. '물체가 있을만한 위치를 제안하는 단계(Region Proposal)'와 '해당 위치의 물체가 어떤 종류인지 알아내는 단계'로 나뉘어 동작하기 때문에, two-stage라는 이름이 붙었습니다.
Two-stage Detector의 대표적인 모델은 Faster R-CNN입니다. Faster R-CNN은 이전의 R-CNN 모델들과 달리, Region Proposal과 Classifier의 두 단계 모두 신경망 모델을 사용한다는 특징이 있습니다. Faster R-CNN은 대표적인 물체 인식 모델인 만큼 다양한 곳에서 사용되고 있는데요. 보통은 상대적으로 물체의 좀 더 정확한 위치를 알아낼 필요가 있는 사용처들입니다. 예를 들면 먼 거리에서의 물체 인식 또는 생체 인식 등의 활용을 위해 사용되는 경우를 종종 볼 수 있습니다.
One-stage Detector
사실 Faster R-CNN을 직접 테스트할 수 있는 기회가 있다면, 이 물체 인식 모델이 처음 개발된 지 7년이 거의 다 되어가는 오래된 모델임에도 불구하고, 대부분의 상황에서 정확하게 동작하는 모습을 볼 수 있을 것입니다. 다만 이렇게 좋은 Faster R-CNN에도 큰 문제가 있는데요. 바로 추론 속도입니다. Faster R-CNN의 추론 속도는 추론에 사용하는 연산 처리 장치에 따라 다르겠지만 대략적으로 5 fps 이하로 볼 수 있습니다. 일반적으로 동영상들의 인코딩 frame rate이 25 fps이라고 가정한다면 만약 Faster R-CNN으로 1시간의 동영상을 분석하기 위해서는 영상 길이의 5배인 5시간의 시간이 필요하다고 볼 수 있습니다.
Faster R-CNN이 느린 이유는 근본적으로 모델의 작동이 two-stage로 이뤄지기 때문입니다. Region Proposal 과정이 있고, 제안된 Region마다 또 Classifier들이 동작하게 되기 때문입니다.
여기서 잠깐 사람이 물체를 인식하는 과정을 생각해 볼까요? 물체를 인식할 때 굳이 물체가 있을 만한 곳을 번거롭게 먼저 찾고 그다음에 물체의 종류를 구분하여 찾는 과정을 따르지는 않는 것 같습니다. 그냥 어느 정도 넓은 범위에서 어떤 종류의 물체가 어디에 위치한다는 두 정보를 동시에 인식하는 것처럼 느껴지죠. 이러한 점에서, 기존의 two-stage 방식이 아닌 한 번의 단계만을 거쳐 물체의 위치와 종류를 추정하는 물체 인식 모델, 즉 one-stage object detector들이 등장합니다.
가장 대표적이고, 가장 유명한 One-stage object detector는 YOLO입니다. 자율 주행 데모 영상이라던가, 혹은 드론 촬영 영상에서의 물체 인식 데모를 보시는 경우 대부분이 Faster R-CNN보다는 YOLO 계열의 모델을 사용한 것을 확인할 수 있습니다. 약간 정확도가 떨어지긴 하지만 속도가 실시간급으로 확연히 빠르다는 장점이 매우 큰 메리트로 다가오기 때문입니다. 최근에는 YOLOv5를 넘어 7 정도까지 다양한 개선 방안이 제시되면서 성능조차도 Faster R-CNN 계열과 비슷하다고 볼 수 있는 수준까지 올라와서, 물체 인식이 필요한 대다수의 경우에 가장 처음으로 고려되는 물체 인식 모델로 평가받고 있습니다.
기타
Object Detector의 대부분은 One-stage detector와 Two-stage detector 모델을 기반으로 하고 있습니다만. 그 외에도 사용하는 모델의 구조, 혹은 컨셉에 따라 다양한 특징을 가진 물체 인식 모델들이 있습니다. 예를 들어 CornerNet이라는 모델은, 기존 물체 인식기들과 달리 물체 바운딩 박스를 찾을 때 박스의 꼭짓점들을 찾는 방식으로 물체를 인식합니다. 혹은 Tracktor이라는 모델은 물체 인식과 동시에 물체 추적을 하기도 하고요. 최근에는 자연어처리에서 사용하던 Transformer라는 모델을 응용한 DETR이라는 모델도 주목을 받고 있습니다.
물체 인식이라는 분야는 더 세부적으로 나눌 수 있다는 점에서도 짚어볼 만한 분야입니다. 예를 들면 얼굴을 찾는 데에 특화된 Face Detection이나 옷에 집중하는 Fashion Detection이라는 분야들이 존재합니다. 또 Crowd Detection이라는 분야라는, 일반적인 상황에서의 보행자 분석과는 달리 집회나 행사 같은 매우 촘촘하게 모여있는 상황에서의 계수에 특화된 물체 인식 분야가 따로 있다는 점도 특기할 만한 사항이라고 볼 수 있겠네요. 따라서 물체 인식 모델을 활용할 때는 무조건 동일한 모델을 사용하기 보다, 사용하려는 상황과 목적을 잘 이해하고 알맞은 모델을 사용하는 것이 중요합니다.
메이아이의 Object Detector
여기까지 인공지능 분야의 일반적인 물체 인식 연구들에 대해 살펴보았고요. 이어서는 메이아이의 인공지능 엔진 daram에서 사용되는 물체 인식 모델의 특징을 알려드리겠습니다.
속도
앞서 One-stage와 Two-stage Detector에 대해서 설명할 때 이미 눈치채신 분들도 있을 것 같은데요. 일반적으로 물체 인식 성능과 추론 속도는 서로 반비례 관계에 있습니다. daram의 속도는 여러 가지 면에서 굉장히 주요하게 다뤄지는데요. 일단 특정 날짜의 영상 분석 결과를 다음 날에 확인하고자 한다면 업로드 등의 부분은 제외하더라도 영상 분석에 쓸 수 있는 시간은 굉장히 한정적입니다. 단순히 영상 frame rate을 조금 넘기는 정도로는 매우 부족하죠. 또한 분석 속도는 영상 분석에 사용되는 클라우드 비용과도 연관이 있습니다.
따라서 메이아이에서는 Network Compression이나 모델 구조 개선, 추가적으로 다양한 엔지니어링 기법들을 이용하여 어느 정도의 성능을 유지하는 동시에 최대한 빠른 속도를 낼 수 있는 물체 인식 모델을 꾸준히 발전해나가고 있습니다. 아래 데모를 보시면 일반적인 물체 인식 API 들과 비교해서 더 빠르고 정확하게 물체 인식을 수행하는 모습을 확인하실 수 있습니다.
FP (False Positive)
다음으로 daram에서 중요하게 다루고 있는 것은 물체 인식 False Positive 문제입니다. False Positive는 기존의 통계 용어에서 나온 성능 측정 개념인데요. 이는 특정 통계 혹은 머신러닝 모델이 맞다(Positive)고 추정했지만 사실은 틀린(False) 케이스들을 뜻합니다. 예를 들면 마네킹이라던가, 혹은 거울에 비친 사람이라던가, 혹은 절묘하게 걸쳐진 옷들을 실제 사람으로 인식했다면 이들이 False Positive (FP)가 됩니다.
False Positive가 발생하면 데이터 분석 결과에도 영향을 줍니다. 예를 들어 특정 이벤트 분석 구역에서 마네킹으로 인해 FP가 발생한다면, 해당 구역에 등장한 사람에도 실제 존재하지 않았던 사람이 추가될뿐더러 평균 체류 시간의 정확도에 큰 문제가 됩니다. 따라서 메이아이에서는 다양한 방법으로 FP를 없애고 있습니다. 가장 정석적인 방법은 우리의 물체 인식 모델이 이런 FP들을 Positive로 인식하지 않도록 데이터를 잘 구축해서 학습하는 것입니다. 다만 그럼에도 불구하고, 물체 인식 모델의 전반적인 성능을 위해 어떠한 FP들은 인식하지 않도록 학습하기 힘든 케이스들, 예를 들면 거울에 비친 사람과 같은 케이스들이 가끔씩 존재합니다. 따라서 모델 학습 이외에도, 움직임 여부 등을 이용한 추가적인 구별 방법 등을 적용하고 있습니다.
Pose Estimation
실제 방문객 분석을 할 때는 방문객의 위치뿐 아니라 좀 더 정확한 위치나 자세한 특성을 요구하는 경우가 많습니다. 따라서 daram은 bbox 이외에도 해당 방문자의 관절과 자세까지도 추정하고 있습니다. 일반적으로 자세 추정의 경우, 물체 인식 단계 이후에 관절을 추정하는 단계를 따로 수행하게 됩니다. 앞서 말씀드린 바와 같이 물체 인식 이후 관절 추정 단계를 별도로 수행할 경우에는 속도에서 문제가 발생하게 됩니다. 따라서 daram의 물체 인식 모델은 bbox를 뽑는 것과 동시에 자세를 추정하는 단계를 수행하여 최대한 속도를 유지하도록 개발을 진행했습니다. 또한 추가적으로 추정된 관절 위치의 정확도를 높이도록 추가적인 보정 방안들을 개발해서 적용하고 있습니다.
마치며
지금까지 물체 인식의 전반적인 내용과 함께, 메이아이의 인공지능 엔진 daram의 물체 인식 모델의 특징까지 소개해 드렸습니다. 이 글을 통해 기존에 딥러닝과 친숙하지 않으셨던 분들도 물체 인식이라는 분야와 daram에 대해 조금 더 쉽게 다가갈 수 있는 기회가 되셨으면 좋겠네요 :)
다음 글에서는 물체 인식 이후, 이 물체들의 위치 변동을 추적하는 물체 추적 기술(Object Tracker)에 대해 소개하는 시간을 가져보겠습니다.