1. 프로젝트 주제
1인 크리에이터나 Youtube와 같은 플랫폼에는 많은 제작자들이 있습니다. 그 중에서도 1인 또는 소규모 컨텐츠 제작자들이 많다는 것을 알 수 있습니다. 하지만 해당 제작자들은 초기 컨텐츠 제작을 시작할 때 사용할 수 있는 예산이 많지 않아 제작할 수 있는 컨텐츠의 종류가 제한이 된다는 어떤 하나의 흥미로 시작되었으며 좀더 다양하게 시도트랙킹 기술을 이용하면 카메라의 각도나 위치를 변경하지 않더라도 피사체를 중심으로 촬영이 가능하기 때문에 더욱 다양한 컨텐츠를 제작할 수 있습니다.
2. Tracking, Detection이란?
2.1 Object Detection이란?
우선 Faskter F-CNN은 object detection을 다룬 논문입니다. 그렇다면 object detection이란 무엇일까요?Object Detection이란 한 물체(single object)가 아닌 여러 물체(multiple objects)에 대해 어떤 사물인지 클래스를 분류하는 Classification 문제와 그 물체가 어디 있는지 Bounding box을 통해 위치 정보를 나타내는 Localization문제를 포함합니다. 즉, Object Detection은 Classification과 Localization을 하나로 합친 것이라고 생각할 수 있습니다.
Localization (Regional Proposal)은 Sliding Window와 Selective Search 방식이 있습니다.
Sliding Window는 특정 모양의 window를 이미지 좌측 상단에서 우측 하단으로 이동하면서 객체가 있을 만한 위치를 찾는 방법입니다. 하지만, 너무 많은 영역에 대하여 확인해야 하는 단점이 있습니다. 이때 모델마다 Window의 크기를 고정하는 경우와 다양한 스케일의 window를 사용하는 경우가 있습니다.
Selective Search 알고리즘은 픽셀의 색감(color), 질감(texture)의 유사성, 다른 물체에 애워 쌓여 있는지(enclosed) 여부 등을 측정하여 인접한 영역(region)의 유사한 픽셀끼리 묶어 물체의 위치를 파악할 수 있도록 하는 알고리즘입니다. Segmentation 분야에서 많이 쓰이는 알고리즘이다.
이와 같이 Sliding Window, Selective Search를 통해 bounding box를 생성하면 object detection에서는 한 객체에 대해 가장 신뢰도가 높은 하나의 bounding box만 남기고 그 객체와 관련된 나머지 bounding box를 없애는 NMS(Non-Maximum Suppression)같은 후 처리 과정(post-precessing)이 필요합니다.
2.2 Object Tracking이란?
Tracking은 프레임 간의 object 대응을 설정할 수 있기 때문에 object의 이해가 어느 정도의 추론을 통해 요구되는 비디오 응용 프로그램의 기본 작업입니다. Tracking은 자동 감시, 차량 내비게이션, 비디오 라벨링, 인간-컴퓨터 상호작용 및 활동 인식과 같은 다양한 시나리오에서 사용합니다. 비디오의 첫 번째 frame의 임의의 관심 target의 위치를 감안할 때, visual object tracking의 목적은 가능한 최고의 정확도로 모든 후속 frame에서 object의 위치를 추정하는 것입니다.
많은 응용 프로그램에서 video streaming하는 중에 tracking을 online에서 수행하는 것은 중요합니다. 즉, tracker는 물체의 현재 위치를 추론하기 위해 미래의 frame을 사용할 수 없습니다. 이것은 단순 축 정렬(axis-aligned) 또는 회전된 bounding box로 target object를 나타내는 visual object tracking bench-marks로 묘사된 시나리오입니다. 이러한 간단한 주석은 데이터 라벨링 비용을 낮게 유지하는데 도움을 줍니다. 또한, 사용자가 target을 빠르고 간단하게 초기화하도록 합니다.
2.3 Semi-Supervised Video Object Segmentation이란?
object tracking과 유사하게 semi-supervised video object segmentation은 비디오의 첫 번째 frame에 지정된 임의의 대상 위치 추정을 요구합니다. 하지만 이 경우 object 표현은 pixel이 target object에 속하는지 표현하는 binary segmentation mask로 구성된다. 이러한 상세한 표현은 비디오 편집 및 rotoscoping과 같은 pixel 수준 정보가 필요한 응용 프로그램에 더 바람직합니다. 당연히 pixel 수준의 추정치를 생성하려면 단순한 bounding box보다 더 많은 계산 작업이 필요합니다. 결과적으로 VOS(Visual Object Tracking) 방법은 전통적으로 느리고 종종 frame당 몇 초가 필요합니다. 최근에는 더 빠른 접근 방식에 대한 관심이 급증하고 있다. 하지만, 아무리 빨라도 여전히 실시간으로 작동할 수 없습니다.
3. 모델
3-1. 모델 선정 이유
1인 유튜브나 크리에이터같은 사람들의 영상을 저희는 실제의 카메라와 같이 객체를 잘탐지하면 빠른속도의 tracking이 되는것을 목표로 하고있습니다. 그러기위해서는 기존의 객체를 정확히 추정하는 Segmentation모델들은 픽셀단위로 객체 포함 여부를 확인하기 때문에 속도가 느리면 실시간 tracking을 하는데는 무리가 있다. 하지만 SiamMask모델은 SIamMask 알고리즘으로 인해 tracking으로 정확도를 개선과 segmentation 속도 개선으로 모든문제를 해결하였습니다..
3-2. SiamMask
SiamMask의 동작 과정을 보면 처음엔 tracking하고자 하는 object를 bounding box를 지정해줍니다. 그 후 네트워크는 다음 frame에서 지정해준 bounding box의 이미지를 해당 frame에서 찾는 과정이다. 이 때, 두 이미지 모두 같은 CNN인 을 통과해주어 각각의 feature map 사이의 depth wise cross correlation을 사용하여 17*17 RoW를 얻게 됩니다. (SiamFC)
이렇게 나온 을 사용하여 feature map을 구한 것을 를 사용하여 RoW당 1개의 w*h binary mask를 예측합니다.Segmentation 작업은 두 개의 1*1 conv layer로 이루어지는데 하나는 256개의 채널이고 다른 하나는 63*63채널로 구성되어 있다. 이를 통해 모든 픽셀 분류기가 전체 RoW에 포함된 정보를 활용할 수 있다. 이러한 방법은 모호한 인스턴스를 판단하는데 아주 중요한 역할을 합니다.
4. Jetson Nano
4.1 Jetson Nano란?
젯슨 나노 보드는 NVIDIA 에서 개발하여 2019년 6월에 처음 출시된 단일 보드 AI 키트라고 한다. 정식 명칭은 NVIDIA 홈페이지에서는 Jetson Nano Developer Kits 라고 되어 있다. 우리말로 젯슨 나노 개발자 키트가 되겠다. 이 보드를 이용하여 임베디드 인공지능 어플리케이션을 구현할 수 있기 때문에 '개발자 키트'라고 하지 않았나 생각한다.
4-2 Jeston Nano를 사용하는 이유
아두이노, 라즈베리파이, 오렌지보드 등 저희가 소현 컴퓨터라고 생각하면 바로 떠올릴 수 있는 여러 종류의 임베디드 기기들 중에서 저희가 jetson nano를 선택한 이유는 JetsonNano는 강력한 GPU를 기반으로 뛰어난 컴퓨팅 성능을 제공하여 빠른 딥러닝 연산이 가능합니다. 영상처리나 음성처리 물체감지에 용이합니다. 또한 경제적이기 때문에 Jetson Nano를 사용하기로 하였습니다
4.2 환경 setup
개발 환경 : jupyter notebook
Ubuntu : 18.04
Python : 3.6.1
torch : 1.10.2
torchvision : 1.11.3
numpy : 1.11.3
5. 결과
5.1 local video
origin video
result video
5.2 youtube short video
origin video
result video
6. 프로젝트를 마치며
object tracking 모델을 처음 보고 공부를 해본것에 정말 큰 의미를 두며 처음만져보는 리눅스 환경설정
하드웨어와 소프트웨어와의 합작 등 저에게 처음하는것이 많아 정말 경험적으로 도움이 많이 됬던 이번
프로젝트 였던것 같습니다. 이러한 무거운 모델이 pc환경에서만 추론 가능할 것이라고 생각했던 딥러닝 모델을 소형 컴퓨터인 jetson nano에 탑재하여 실행해보며, 임베디드 기기에 딥러닝 기술이 활용이 점차 넓어질 것이라고 생각했습니다.