'daram'과 함께하는 딥러닝 투어 1편: Object Detector

안녕하세요, 오프라인 공간의 디지털화를 꿈꾸는 메이아이입니다.

지금까지 다양한 오프라인 공간들을 분석하면서 메이아이의 인공지능 엔진 daram에도 많은 발전이 있었고, 몇몇 기회들을 통해 daram의 핵심 기술에는 어떤 특징이 있었는지 간단하게 말씀드릴 기회는 종종 있었습니다.

다만 그럼에도 불구하고, 돌이켜보니 그 동안 daram의 근본을 이루는 인공지능 모델의 전반적인 내용에 대해 설명드린 적은 없었던 것 같습니다. 보통 저희의 고객사를 포함해서 저희 기술에 대해 설명드릴 기회가 있다고 하더라도, 주로 이벤트 감지라든지, 동선 추적이라든지, 그룹 분석과 같은 특정 기능에 대해서만 소개를 드리곤 했습니다.  정말 기본적인 물체 인식 원리 등에 대해서는 내용의 복잡성 때문에 대략적으로만 소개드리는 일이 다반사입니다. 그러나, 사실은 이러한 기능들은 모두 물체 인식과 같은 인공지능 모델로부터 나온 원천 데이터를 규칙 기반 알고리즘 등을 통해 가공해서 만들어지기 때문에, 베이스 인공지능 모델들에 대해 이해하신다면 더 쉽고 깊게 mAsh의 기능들에 대해 이해할 수 있습니다.

따라서 이번 글을 시작으로, daram의 근간을 이루고 있는 기술은 무엇이고, 어떤 특성을 갖고 있으며, 어떤 장점을 가지고 있는 지 자랑해보는 기회를 마련했습니다.  처음 소개드릴 인공지능 모델로 무엇이 좋을까 생각해 보다가, 역시 저희의 모든 데이터의 근본을 담당하는 물체 인식, 즉 Object Detection 모델을 소개해드릴까 합니다.


1. Object Detection 소개

현재 인공지능 컴퓨터 비전 분야에서 가장 기초가 되는 연구 주제는 주어진 이미지에 대해서 해당하는 클래스(ex. 비행기, 의자 등)를 추정하는 이미지 분류 (Image Classification) 분야입니다. 딥러닝 관련 연구에 대해 접할 기회가 있으시다면, 특별한 이유가 있지 않는 한 대부분이 MNIST나 CIFAR10과 같은 이미지 분류용 데이터셋과 딥러닝 모델을 가지고 실험하는 것을 쉽게 확인하실 수 있으실 겁니다. 다르게 표현하자면, 이미지 분류는 인공지능 컴퓨터 비전 분야에서 가장 클래식한 분야라고 볼 수 있습니다.

그렇다면 이미지 분류 다음으로 클래식한 분야는 무엇이 있을까요? 여러 선택지가 있겠지만, 최소 그 중 하나로는 물체 인식(Object Detection)을 제시할 수 있을 것 같습니다. 물체 인식을 쉽게 설명드리자면, 어떠한 주어진 이미지에서 특정한 물체들을 찾아서 네모난 박스, 즉 바운딩 박스(bbox)로 위치를 표시해주는 일입니다. 이미지 분류와 비교했을 때, 이미지 분류는 주어진 이미지에 대해 하나의 클래스, 즉 라벨만 붙이면 되는 태스크라고 한다면 물체 인식은 라벨에 더해서 물체의 위치를 추가적으로 추정하는, 한 단계 더 복잡한 태스크라고 볼 수 있죠.

물체 인식의 활용처는 교통, 보안 뿐 아니라 패션(온라인 태깅 서비스) 등 매우 다양합니다. 현재 많은 관심을 받고 있는 자율 주행 분야에서도 물체 인식 기술을 활용하여 구현하곤 합니다.  mAsh에서도 물체 인식은 매우 중추적인 역할을 맡고 있는데요. 가장 기본적으로 이루어지는 방문객 인식 작업을 통해 오프라인 공간 분석이 가능하도록 mAy-I에서는 자체 개발한 물체 인식 딥러닝 모델을 사용하고 있습니다.  mAy-I의 물체 인식 모델에 대해서는 잠시 후에 더 자세히  소개하기로 하고,  현재 딥러닝 분야에서 대표적인 물체 인식 모델을 먼저 소개해드리는 시간을 가져볼까 합니다.


2. Object Detector 종류

물체 인식 모델, 즉 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로 알려져 있는데요. 작동 원리는 앞서 생각해봤던 작동 원리를 따릅니다.

1) 물체가 있을만한 위치를 제안하는 단계 (Region Proposal)
2) 해당 위치의 물체가 어떤 종류인지 알아내는 단계

총 두 단계로 나눠서 동작하기 때문에 two-stage라는 이름이 붙었습니다.

Faster-RCNN 모식도. 먼저 주어진 이미지에서 Region Proposal Network를 이용해 물체가 있을만한 부분들을 찾고, classifier를 이용해서 물체의 종류와 좀 더 자세한 위치를 파악함 (논문에서 발췌함)

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들이 등장하게 됩니다.

YOLO의 작동 원리 (논문에서 발췌함)

YOLO는 가장 대표적이고, 가장 유명한 One-stage object detector입니다. 자율 주행 데모 영상이라던가, 혹은 드론 촬영 영상에서의 물체 인식 데모를 보시는 경우 대부분이 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이라는 분야라는, 일반적인 상황에서의 보행자 분석과는 달리 집회나 행사 같은 매우 촘촘하게 모여있는 상황에서의 계수에 특화된 물체 인식 분야가 따로 있다는 점도 특기할만한 사항이라고 볼 수 있겠네요. 따라서 물체 인식 모델을 활용할 때, 무조건 동일한 모델을 사용하기 보다는 사용하려는 상황과 목적을 잘 이해하고 알맞은 모델을 사용하는 것이 중요합니다.


3. mAy-I의 Object Detector

앞의 내용에서 인공지능 분야의 일반적인 물체 인식 연구들에 대해 살펴봤다면, 마지막으로는 daram에서 사용되는 물체 인식 모델의 특징을 알려드리겠습니다.

속도

앞서 One-stage와 Two-stage Detector에 대해서 설명할 때 이미 눈치채신 분들도 있을 것 같은데, 일반적으로 물체 인식 성능과 추론 속도는 서로 반비례 관계에 있습니다 (사실 대다수의 인공지능 모델이 그렇습니다). daram의 속도는 여러가지 면에서 굉장히 주요하게 다뤄지는데요, 일단 특정 날짜의 영상 분석 결과를 다음 날에 확인할 수 있도록 하려면 업로드 등의 부분은 제외하고 전체 영상을 분석하는데에 사용될 수 있는 시간이 굉장히 한정적입니다. 단순히 영상 frame rate을 조금 넘기는 정도로는 매우 부족하죠. 또한 분석 속도는 영상 분석에 사용되는 클라우드 비용과도 연관이 있어, 메이아이에서는 Network Compression이나 모델 구조 개선, 추가적으로 다양한 엔지니어링 기법들을 이용해서 어느 정도의 성능을 유지하는 동시에 최대한 빠른 속도를 낼 수 있는 물체 인식 모델을 꾸준히 발전해나가고 있습니다. 아래 데모를 보시면 일반적인 물체 인식 API들과 비교해서 더 빠르고 정확하게 물체 인식을 수행하는 모습을 확인하실 수 있습니다.

FP (False Positive)

다음으로 저희의 물체 인식이 중요하게 다루고 있는 것은 물체 인식 False Positive 문제입니다. False Positive는 기존의 통계 용어에서 나온 성능 측정 개념인데요, 특정 통계 혹은 머신러닝 모델이 맞다(Positive)고 추정했지만 사실은 틀린(False) 케이스들을 뜻합니다. 예를 들면 마네킹이라던가, 혹은 거울에 비친 사람이라던가, 혹은 절묘하게 걸쳐진 옷들을 실제 사람으로 인식했다면 이들이 False Positive (FP)가 됩니다.

False Positive가 발생하면 데이터 분석 결과에도 영향을 주는데요, 예를 들면 특정 이벤트 분석 구역에서 마네킹으로 인해 FP가 발생한다면, 해당 구역에 등장한 사람에도 실제 존재하지 않았던 사람이 추가될 뿐더러 평균 체류 시간의 정확도에 큰 문제가 됩니다. 따라서 메이아이에서는 다양한 방법으로 FP를 없애고 있는데요, 가장 정석적인 방법은 우리의 물체 인식 모델이 이런 FP들을 Positive로 인식하지 않도록 데이터를 잘 구축해서 학습하는 것입니다. 다만 그럼에도 불구하고, 물체 인식 모델의 전반적인 성능을 위해 어떠한 FP들은 인식하지 않도록 학습하기 힘든 케이스들, 예를 들면 거울에 비친 사람과 같은 케이스들이 가끔씩 존재합니다. 따라서 모델 학습 이외에도, 움직임 여부 등을 이용한 추가적인 구별 방법 등을 적용하고 있습니다.

Pose Estimation

실제 방문객 분석을 할 때는 방문객의 위치 뿐 아니라, 좀 더 정확한 위치나 자세한 특성을 요구하는 경우가 많습니다. 따라서 저희의 물체 인식 모델에서는 bbox 이외에도 해당 방문자의 관절과 자세까지도 추정하고 있습니다. 일반적으로 자세 추정의 경우, 물체 인식 단계 이후에 관절을 추정하는 단계를 따로 수행하게 됩니다. 앞서 말씀드린 바와 같이 물체 인식 이후 관절 추정 단계를 별도로 수행할 경우에는 속도에서 문제가 발생하게 됩니다. 따라서 daram의 물체 인식 모델은 bbox를 뽑는 것과 동시에 자세를 추정하는 단계를 수행하여 최대한 속도를 유지하도록 개발을 진행했습니다. 또한 추가적으로 추정된 관절 위치의 정확도를 높이도록 추가적인 보정 방안들을 개발해서 적용하고 있습니다.

지금까지 물체 인식의 전반적인 내용과 함께, 메이아이의 인공지능 엔진 daram의 물체 인식 모델의 특징까지 소개해드렸습니다. 이 글을 통해 기존에 딥러닝과 친숙하지 않으셨던 분들도 물체 인식이라는 분야와 daram에 대해 조금 더 쉽게 다가갈 수 있는 기회가 되셨으면 좋겠네요.

다음 글에서는 물체 인식 이후, 이 물체들의 위치 변동을 추적하는 객체 추적 (Object Tracker) 기술에 대해 소개하는 시간을 가져보겠습니다.


인공지능 엔진 'daram'을 활용해
오프라인 방문객 데이터를 얻고 싶다면


mAsh에 대해 더욱 알고 싶다면, 아래 링크를 통해 궁금증을 해결해 보세요.

메이아이 | 영상 기반 방문객 행동 분석 솔루션
메이아이와 함께라면 오프라인 공간을 디지털화하여 데이터 기반의 안전하고 효율적인 오프라인 퍼포먼스 마케팅이 가능해 집니다.

오프라인 공간 분석 트랜드를 알고 싶다면 구독하세요!

메이아이 뉴스레터 구독신청
″영상처리 인공지능을 통해 오프라인 공간의 디지털 트랜스포메이션을 만들자” 오프라인 방문객 분석 트랜드, 메이아이의 인공지능 엔진 ‘daram’의 성장 이야기 그리고 메이아이의 다양한 소식을 만날 수 있습니다. 나날이 더욱 강력한 인공지능으로 거듭나고 있는 메이아이의 든든한 구독자가 되어 보세요!
You've successfully subscribed to Digitalize offline space with AI
Great! Next, complete checkout to get full access to all premium content.
Error! Could not sign up. invalid link.
Welcome back! You've successfully signed in.
Error! Could not sign in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.