3 분 소요

프로젝트 설명

성균관대학교 로봇 및 지능 시스템 연구소(RISE LAB)에서 4개월간 연구실습을 수행했습니다.

주제

Robot vision using neural network training for real-time Instance Segmentation and Object Tracking

실습기관

로봇 및 지능시스템 연구소(RISE LAB)

실습기간

2022.02.23 - 2022.06.15

Github

choonghyun-park/yolact

Skills

Software stack

  • python
  • C++
  • ROS
  • Yolact
  • Kalman Filter
  • Deep Sort
  • Multi Object Tracking
  • Instance Segmentation

Hardware stack

  • Jetson nano
  • Depth Camera (Realsense D435i)

Technology

1. Background

1.1. Problem : Object Tracking with YOLO

Real-time detecting model로서 Object detection 영역에서 가장 많이 사용하는 YOLO(You-Only-Look-at-Once)는 neural network based model로, 학습한 물체 탐지한 후 물체의 bounding box 정보를 보여줍니다. YOLO는 빠른 탐지 성능과 정확성을 보이지만, Object Tracking에서 Detector로써 사용되는 것에는 한계점이 있습니다. 먼저, YOLO-Object-tracking에서는 Occulusion 현상이 발생하는데, 이는 하나의 대상이 다른 대상에 의해서 가려지는 현상입니다. 물체를 탐지한 후에 얻은 커다란 크기의 bounding box를 사용하여 Object Tracking을 진행하기 때문에 여러 물체가 겹쳐있는 경우 뒤에 있는 물체를 잘 인식하지 못하는 것입니다. 또한, Multi-object-tracking이 어려운 문제점을 가지는데, 여러 개의 물체가 이동하면서 서로 겹쳐지는 경우에 개별적인 Object Tracking이 이루어지지 않고, 같은 물체로 인식되는 문제가 있습니다.

1.2. Yolact instance segmentation model

Yolact는 neural network based model로서, 실시간으로 물체를 탐지하고, 탐지한 물체의 instance segmentation을 얻습니다. 따라서 물체가 실제로 존재하는 영역을 bounding box보다 더 정확하게 탐지할 수 있습니다.

Objective

본 프로젝트에서는 앞에서 언급한 기존 Object Tracking 모델의 문제점을 보완하기 위해서 instance segmentation기반의 Yolact detecting model을 사용한 보다 정확한 Object Tracking 알고리즘을 설계할 것입니다. 또한, depth camera를 이용해 물체의 position 정보를 얻고, position을 새롭게 mapping하여 multi-object-tracking 알고리즘 적용하는 것으로 더 나은 성능의 Object Tracking model을 제시할 것입니다.

Promotion Plan

Co-op 프로젝트의 진행 일정은 다음과 같습니다. 일정의 세부 내용은 Yolact, ROS communication system, depth camera, multi-object-tracking를 주제로 하여 전반적인 Object Tracking 알고리즘을 구현하는 과정으로 구성되었습니다.

Results

4.1. Custom Dataset

bject Tracking model을 새롭게 제시하는 것에 앞서서, 사람을 대상으로 Yolact를 학습하기 위해서 3000장의 사람 이미지를 포함한 데이터셋을 제작하였습니다. Yolact COCO annotation 기법의 데이터셋을 사용하며, 해당 annotation과 이미지를 얻기 위해서 Fiftyone을 사용하였습니다. 본 프로젝트를 진행하면서는 오픈소스 weight file을 사용하였고, 물체 탐지 후 사람 카테고리만을 선택하여 tracking을 진행하였습니다. 하지만 weight file을 더욱 경량화하고, 높은 정확도와 탐지속도를 얻기 위해서는 Custom Dataset을 통해 학습된 weight file이 필요할 것입니다(Future Work).

4.2. Segmentation center point and Position data

Object Tracking 이전에, Yolact의 Instance segmentation으로부터 중점을 찾고, depth camera를 이용해 position data를 얻는 알고리즘을 설계하였습니다. Instance Segmentation은 tensor형식의 mask 데이터이며, 무게중심을 찾는 알고리즘을 통해서 아래 사진과 같이 초록색 점으로 표시된 중점을 얻었습니다. 이후 depth camera에서 얻은 깊이 정보를 이용해 물체 중점의 위치값(x, y, z)를 얻을 수 있었습니다. 마지막으로 ROS custom message를 정의하고, MOT(multi-object-tracking) node로 위치 정보를 publish하였습니다.

  • Setment_Centers.msg

    Header header
    Int16 ID
    Int16 pixel_x
    Int16 pixel_y
    Float64 x
    Float64 y
    Float64 z

4.3. Mapping and Multi-object-tracking using Kalman Filter

Yolact와 depth camera를 이용해서 얻은 물체의 위치정보를 각각 Forward-view, Bird-eyed-view로 Mapping하였습니다. 이는 depth camera의 x, y, z축 기준으로 각각 x, y평면과 x, z 평면으로 탐지한 물체의 중점을 Mapping한 것입니다. 이후 중점을 따라서 tracking하는 Multi-object-tracking-using-Kalman_filter 알고리즘을 이용하여 탐지한 중점을 tracking하고 이전 tracking 점들과 비교하여 속도값을 얻었습니다. 전체 과정을 통해 얻은 position, velocity 정보는 새로운 custom message format으로 publish 됩니다.

< Original video & Forward-view-tracking >

< Bird-eyed-view-tracking >

< Position and Velocity message >

담당 역할 및 성과

4개월간 Co-op 실습으로 yoalct를 이용한 real-time object tracking 알고리즘을 개발하였습니다. 프로젝트 초기에, ROS workspace 및 communication system의 구조를 다루는 데에 능숙하지 않아서 어려운 점이 있었습니다. 하지만, 직접 Node를 만들고, custom message format을 빌드하여 사용하면서 ROS를 사용하는 능력이 많이 성장하였습니다. 또한 Deep learning 기반의 Object Detecting model을 깊게 사용해 본 것은 처음이었기 때문에 역시 많은 사전지식과 자료들을 찾아보며 공부하였습니다. 프로젝트를 진행하면서 가장 큰 성취감을 느꼈던 점은, 현재 존재하는 SOTA인 Deepsort 알고리즘이 bounding box기반의 detector(대표적으로 yolo)를 사용하면서 발생하는 한계점을 파악하고, 새로운 방식으로 tracking 알고리즘을 설계한 점이었습니다. 비디오 영상에서 tracking을 하는 관점에서 벗어나 position을 bird-eyed-view로 mapping하고, multi-object-tracking하는 것으로 occulusion, multi-object-tracking 문제를 모두 해결하였습니다. Robot vision영역에서 object detecting의 새로운 method를 제시한 것 같아 매우 만족하며 프로젝트를 마칠 수 있었습니다.

Reference

Algorithm Demo

yolact with multi object tracking in ROS map

Project Presentation

댓글남기기