안녕하세요! 저는 SW서포터즈 김동환입니다. 이번 달부터 한 텀 동안 SW마에스트로 과정에 있는 팀들의 기술을 조금씩 소개하려고 하는데요.
오늘은 SW마에스트로 7기 RapidCheck 팀의 기술을 소개하려고 합니다.
왜 RapidCheck일까요?
RapidCheck을 직역하면 “빠른 확인” 이라고 할 수 있습니다.
RapidCheck팀은 “영상기록물 속에서 원하는 대상을 빠르고 정확하게 찾아주는 서비스”를 제공합니다. 그리고 그것을 추적까지 해주죠.
RapidCheck 팀의 CI
그들은 어떻게 이런 서비스를 생각해 내었을까요?
21세기는 CCTV의 세상입니다. 계속되는 테러와 보안의 위협 속에서 사기업 뿐만 아니라 많은 기관들이 관제센터를 운영중이고,
이에 설치된 CCTV 수는 가히 상상을 초월하는 숫자입니다[관련기사].
CCTV숫자는 날로 증가하지만 사람의 수는 제한적이기 때문에 화면을 놓치면 원하는 대상을 놓쳐버릴 수 있습니다.
뿐만 아니라 나중에 CCTV를 확인할 때에도 수 초간 지속되는 대상을 찾기 위해 전체 영상을 모두 확인해야 하는 단점이 있습니다. 한마디로 굉장히 비효율적이라는 뜻입니다.
RapidCheck 팀은 IT 기술과 AI 기술을 융합하여 사람들에게 크게 이로운 기술을 개발하기 위한 목적으로 결성되었습니다.
프로젝트를 기획하는 단계에서 많은 사람들의 목소리에 귀를 귀울인 결과, CCTV 보안 산업에도 인공지능 기술이 필요하다는 것을 알게 되었고,
딥러닝(Deep Learning) 기술과 컴퓨터 비전(Computer Vision) 기술을 CCTV 산업에 적용하여
사회 안전망의 빈 구멍을 보충할 수 있는 "지능형 영상 분석" 기술 개발을 목표로 서비스 개발을 시작하였습니다.
“사회 안전망의 확대에 대한 수요가 증가함에 따라, 우리나라를 포함한 전세계의 많은 국가들이
안전한 시민사회를 보장하기 위해 CCTV와 같은 물리보안 인프라를 지속적으로 강화하고 있습니다.
하지만 CCTV 영상을 관리하고 분석하는 역할은 사람이 하고 있기 때문에, 나날이 늘어만 가는 CCTV 영상들을 감당하기에는 인력이 턱없이 부족합니다.
이로 인해 관제 요원들의 업무 효율까지 떨어져 사회적 문제가 야기되기도 합니다.” 오영진 팀장의 말이다.
RapidCheck 팀의 모습
이처럼 오영진(팀장), 이제형, 이준수, 그리고 강진범 멘토로 구성된 RapidCheck팀의 서비스는 Detection과 Tracking 그리고 Overlay&Display 의 3가지 핵심기술이
서로 긴밀하게 영향을 줌으로써 구성됩니다. 오늘은 이 3가지 기술에 대해서 중점적으로 다뤄보겠습니다.
데이터를 확보하라!
서비스를 시작하기에 앞서 가장 중요한 것이 있습니다. 바로 학습 데이터를 확보하는 것입니다. 데이터가 없으면 서비스 만들 수도, 모델을 학습시킬 수도 없습니다.
일반적으로 원하는 데이터를 얻기는 생각보다 쉽지 않습니다. 특히 CCTV라는 특수 도메인은 더더욱 어려운 일이었습니다.
RapidCheck 팀은 우선 연구목적으로 열려있는 Open Dataset 확보에 총력을 기울였습니다. 그들읕 특별히 Object Detection 관련 대회에서 제공되는 데이터에 주목했습니다.
2007년부터 2012년도까지 진행된 VOC Pascal Competition 대회는 사진에서 물체를 인식해 위치정보를 뽑아내는 대회입니다.
2007년 데이터만으로도 만장이상의 사진 속에서 2만개 이상의 객체 정보를 확보할 수 있었습니다. 또 MOT Benchmark에서 데이터를 확보하였습니다.
MOT 는 Multiple Object Tracking의 약자로, 객체 추적 분야의 Competition입니다.
MOT Benchmark에서 제공하는 영상과 Labeling 된 데이터를 사용하기 위하여, MOT 데이터 형식을 VOC 데이터 형식으로 변환해서 사용할 수 있도록 자체 모듈을 개발했습니다.
이로써 MOT Benchmark 의 방대한 영상 데이터를 전부 RapidCheck 서비스의 학습데이터로 이용할 수 있었습니다.
그러나 이것이 전부는 아니었습니다. 대량의 오픈데이터를 확보한 것은 좋으나, 결국 프로젝트에서 사용하고자 하는 도메인과 비슷한 환경의 학습데이터 확보가 필수적이었습니다.
도메인에 적합한 영상들을 youtube와 같은 다양한 채널을 이용하여 확보하거나, 실제와 근접한 가상환경을 구축하여 직접 촬영하였고,
이를 학습 데이터로 활용하기 위하여 자체적으로 Image Labeling system을 구축하여 데이터를 확보하였습니다.
특히나, RapidCheck 팀은 Labeling system을 웹 사이트 형태로 제작하여 외부에 공개할 계획입니다.
더 나아가, Object Detection 기술을 연구하는 전세계 모든 사람들이 간편하게 Data를 확보하고, 정보를 공유할 수 있는 플랫폼으로 확장시킬 계획입니다.
많은 유저들이 학습 데이터를 직접 제작하여 각자의 도메인에서 학습할 수 있도록 하여, 집단지성의 힘을 최대로 끌어올릴 수 있을 것으로 기대하고 있습니다. 정말 멋지죠?!
관제 요원과의 인터뷰!
객체 검술 기술에 앞서서 중요한 것이 하나 더 있습니다. 바로 객체를 정의하는 일입니다. 영상에는 수많은 객체들이 나옵니다.
사람부터, 동물, 자동차 등 여러 가지 객체가 등장합니다. 영상에 등장하는 모든 객체를 다 검출하면 좋겠지만, 꼭 그럴 필요는 없습니다.
필요한 객체만 데이터화 하는 것이 더 효과적이기 때문입니다.
RapidCheck 팀은 서비스 개발에 앞서 현업 관제 요원들과의 인터뷰를 통해서 CCTV관제의 근본적인 pain point를 수집하였습니다. 요약하면 크게 3가지였습니다.
1. 영상 속에서 원하는 대상을 찾기 어려움
2. 긴 시간의 영상을 확인해야 함
3. 빠른 배속 검색은 원하는 장면을 놓치기 쉽움
이러한 현업의 니즈를 잘 파악한 RapidCheck 팀은 다음과 같은 해결 방안을 제시하였습니다.
1. 영상을 분석하여 객체의 정보를 데이터화 함
2. 찾고자 하는 대상의 정보를 이용하여 검색이 가능토록 함
3. 검색 결과를 스냅샷의 형식으로 요약하여 시각화 함
4. 요약한 객체를 Overlay한 짧은 영상으로 만들어 시각화 함
해결방안만으로는 문제가 해결 될 수 없겠죠? 실제 서비스 제작을 위해 RapidCheck 팀은 가장 최신 기술인 Deep learning 기반의 기술을 적용하였습니다.
객체 검출
RapidCheck팀은 일반적인 Object Detection처럼 20가지 이상의 다양한 종류(Class)를 예측하는 것이 아니라, 도메인 목적에 알맞게 객체 검출 대상을 사람과 자동차에 집중시켰습니다.
이로써 정확도와 속도를 월등하게 증가시킴과 동시에 사용자들의 니즈를 만족시키는 1석 2조의 효과를 얻을 수 있습니다. 객체를 검출할 때는 Deep Neural Network 구조를 응용하였습니다.
*CNN
CNN(Convolutional Neural Network)은 현재 이미지 분석 분야에서 가장 핫한 모델입니다.
CNN은 딥러닝(Deep Learning)의 일종으로 인간의 시신경 구조를 모사하여 인간이 이미지를 처리하는 것을 흉내낸 것입니다.
이를 이용함으로써 다양한 크기, 각도, 자세, 환경등을 처리할 수 있게 되었습니다.
CNN은 신경망 구조에서 가장 이슈인 문제 중 하나인 over-fitting 문제를 모델의 complexity를 줄이는 방식으로 해결합니다.
CNN은 크게 convolution layer와 pooling layer라는 두 개의 핵심 구조를 가지고 있습니다.
이 두 개의 구조가 model parameter 개수를 효율적으로 줄여주게 되고, 결과적으로 전체 모델의 complexity가 감소하는 효과를 얻게 됩니다.
CNN의 구조
RapidCheck팀은 영상데이터를 일련의 이미지의 연속인 Frame으로 추출한 뒤에 구글의 Python 기반 Tensorflow DNN을 사용하여 단일 이미지(Frame)에 대한 Object Detection 작업을 수행합니다.
또 구현의 편의성과 유지보수의 효율성을 위해서 Tensorflow를 Backend로 삼는 Keras를 Wrapper 라이브러리로 응용하였습니다.
이때 Detection을 위한 DNN의 심층 구조를 다음과 같이 논리적인 2단계로 나눌 수 있습니다.
객체 특징 추출계층
RapidCheck의 RCNet 구조
위와 같은 Convolutional Layer는 대상의 특징(feature)을 조금씩 뽑아내고, Max Pooling 계층에서 뽑아진 특징들 중 강한 특징들만을 남겨서 다음 계층으로 넘기는 역할을 하게 됩니다.
이를 시각적으로 확인하게 되면 다음과 같은 이미지를 뽑아낼 수 있습니다.
아래 그림은 Conv1의 필터가 보는 값을 가시화 한 것입니다. 더 깊은 계층(layer)을 쌓을수록, 더 비선형적인 특징들을 구해낼 수 있습니다.
Conv1 filter 값을 가시적으로 projection한 결과
객체의 특징을 연결하는 검출 계층
RapidCheck의 RCNet 구조
검출 계층의 경우에는 Fully Connected Layer로 구성되었고, 가장 마지막 Detection Layer의 경우에만 Activation 함수를 달지 않고 Linear 값을 그대로 예측할 수 있도록 만들었습니다.
즉, RapidCheck의 서비스는 이미지에서 대상의 위치와 종류(Class)를 예측할 때, 일반적으로 사용되는 분류모델(Classification)이 아닌 회귀모델(Regression)로 예측합니다.
이렇게 하면 객체의 예상 위치를 먼저 뽑아낸 뒤, 분류 작업으로 객체를 검출하는 RCNN 계열에 비해서 단일 신경망으로 한방에(One-Shot Detection) 이 가능하기 때문에
다량의 데이터를 고속으로 처리할 수 있습니다. 이는 RapidCheck Detection 기술의 특징이기도 합니다.
향상된 RCNet 의 결과물
객체 추적 방법
RapidCheck의 Tracking 과정
객체 추적은 크게 Tracklet과 Trajectory를 만드는 2단계로 구성됩니다. 먼저 Tracklet은 짧은 구간에서의 경로를 의미하며,
본 프로젝트에서는 6개의 frame마다 Tracklet을 계산하였습니다.
Detection에서 각각의 frame에 객체가 ‘어디’ 있는지 분석을 한다면, Tracking 에서는 이 정보를 이용해서 객체 간의 ‘정체성’을 유지하는 역할을 합니다.
Tracklet 알고리즘
실제로 Detection을 수행해보면, 모든 객체를 정확히 잡아내진 못합니다. 예를 들어 위 그림에서는 빨간색 옷을 입은 여성이 다른 물체에 가려져 3, 4번째 Frame에서는 Detection되지 않았습니다.
이러한 정보가 주어지더라도, 한 객체의 경로를 올바르게 찾아내는 것이 Tracklet입니다.
Trajectory는 객체의 전체 구간 경로를 의미합니다. 앞에서 구한 Tracklet들을 적절히 이어나가는 방식으로 Trajectory를 구할 수 있습니다.
Tracklet을 Matching하기 위해서 Appearance model과 Motion model을 이용하여 유사도를 계산하였습니다.
아래 그림을 보면, 3번째 Frame의 Target과 일치하는 9번째 Frame의 tracklet이 가장 큰 유사도를 가지는 것을 확인할 수 있습니다.
RapidCheck의 Tracket Matching 알고리즘
실제 RapidCheck 서비스는 어떤 모습일까?
RapidCheck 서비스의 모습(가상)은 아래와 같습니다.
RapidCheck 서비스의 기능예시
Detection과 Tracking을 이용하여 영상을 분석한 데이터를 바탕으로 '사람'과 '차'의 정보를 뽑아내고, 사용자가 원하는 조건에 해당하는 대상들만을 overlay하여 영상을 재구성합니다.
예를 들어 1시간동안 영상에 나타난 차량만 확인하는 경우, 각기 다른 시간에 나타났던 차들을 동시에 보여주는 방식으로 영상을 3분짜리로 압축합니다.
RapidCheck팀은 특히 동시에 많은 대상을 최대한 겹치지 않게 보여주기 위하여 많은 고민을 하였습니다. 각 대상의 위치 정보를 바탕으로 Clustering을 하고,
Cluster 별로 Queue를 할당하여 overlay되는 대상들이 최대한 겹치지 않도록 적절히 순서를 조절하는 알고리즘을 구현하였습니다.
이런 방식을 채택하면 영상에서 많은 객체들이 존재할 때 유용하게 활용될 수 있습니다.
나가며
RapidCheck팀과의 인터뷰를 통해서 돈을 벌기 위한 서비스가 아니라 세상을 더 풍요롭게 하는 서비스를 개발하고 있다는 생각이 들었습니다.
특히 기술의 발달이 사람을 충분히 도울 수 있다는 생각도 많이 들었습니다. RapidCheck의 서비스를 기대해주시길 바라며, 다음 기사도 기대해주세요!