知之者 不如好之者, 好之者 不如樂之者

기계처럼 살지 말고, 즐기는 인간이 되자

Project/Tracker (2023.11~2023.12)

Jetson Nano 에서 yolov7-tiny 를 이용한 물체 추적 카메라 거치대 개발

코방코 2023. 12. 23. 00:16
728x90

정말.. 이 블로그 자체에 들어와본지가 오래된 것 같다.

드디어 종강하고서야 글을 쓰게 되었다.

여태까지 쓴 글들도 정리하고, 보완하고 앞으로 쓸 글들을 기술적으로 잘 설명해야겠다는 생각이 들었다.

 

가장 먼저 정리를 시작할 것은 지난 학기 캡스톤 디자인 과목에서 간단하게 개발하였던 Tracker이다.

 


 

Tracker는 다음과 같은 특징을 지닌다.

 

1. GPU를 가진 Jetson Nano 4GB 모델 기반

2. GPU를 활용한 OpenCV 실시간 영상 처리

3. TensorRT를 사용한 yolov7 영상 분석 최적화

4. 모터 제어를 통한 타겟 물체 추적 

5. DeepSORT 찍먹

6. 임베디드 + Non - Internet 

 

이를 개발한 목적은 최근 숏폼, vlog와 같은 1인 미디어 영상이 증가하고 있는데,

이러한 영상 촬영을 위해 별도 촬영자가 있거나 여러 구도에서 촬영이 필요하다.

 

따라서 이를 개선시키기 위해서 촬영을 원하는 사람을 계속 추적하여 따라다니는 기능이 필요하다.

여기에는 여러 문제가 있다.

촬영하고 싶은 장소가 길거리라면?

그 때 사람이 여러 명이 보인다면?

 

이러한 문제는 기존 제품들로 해결할 수 없다.

따라서 완전히 임베디드된 시스템을 구현하고, DeepSORT 방식을 사용한 카메라 거치대를 개발하여

위 기능을 수행할 수 있도록 하였다.

이것들이 어떻게 가능하고 무엇을 의미하는지는 앞으로 글을 추가적으로 작성하면서 설명하도록 하겠다.

 

외관은 다음 사진과 같다.

웹캠을 통해 영상을 받아오고

이를 yolov7을 통해 분석한다.

시스템은 완전히 임베디드 되어있으며 네트워크를 사용하지 않는다.

작동이 시작되면 yolov7 - DeepSORT를 기반으로 가장 낮은 ID 물체를 화면 중심에 놓도록 모터를 제어한다.

 

 

 

그러나 다음과 같은 제한 사항이 있었다.

서보모터.... (피드백 불가)

미칠듯이 낮은 프레임 (TRT의 경우 17fps, No TRT DeepSORT의 경우 3fps)

죽을려고하는 RAM과 Swap memory 용량..

 

수많은 하드웨어 이슈와 yolov7 TRT를 DeepSORT로 구현하는 과정에서 실력 이슈가 발생했다.

그럼에도 많은 걸 배울 수 있는 프로젝트였다.

 

정말 어려움이 많았다.

여태까지 했던 여러 프로젝트들이 대부분 문제가

소프트웨어에서 구현했던 것들이 하드웨어에서 잘 수행이 안되었던 것인데, 

이건 애초에 Jetson Nano에 빌드를 쌓아올려나가는 과정에서 많이 헤맸다.

 

토탈 몇날 며칠을 새벽 늦게까지 학교에 앉아서 머리를 쥐어뜯었는지 모르겠다.

Jetson Nano는 CUDA 와의 호환을 위해서, 각 프로그램 버전에 따라서 정말 하나만 삔또가 상해도 안돌아갔다. 

그래서 가상환경에서 Yolov8을 써봤다가.. Yolov5 도 써봤다가.. Python 3.8도 써봤다가..

OpenCV를 cmake build 하는 것도.. 

기껏 build 한 opencv를 가상 환경에 대한 이해도가 부족해서 동적 링킹을 통해서 불러오는 뻘짓을 한다거나..

PyTorch와 torchvision을 적절한 버전을 골라 pip 가 아닌 방식으로 설치하는 것도..

 

저 17fps라는 감격적인 숫자를 얻기 위해 얼마나 헤매었는지 모르겠다.

물론 수많은 인터넷 사부님들이 도와주셨다.

 

 

내 실력이 부족해서 더 많이 헤매고 더 많이 성장한 것 같다.

그러나 아쉬운건 결과에서는 내가 얼마나 헤매고 힘들었는지 보이질 않는다.

아무도 저 17fps가 Jetson Nano 4GB에서 얼마나 감격스러운 숫자인지,

알게 무엇인가. 그냥 원래 그렇게 빠른 줄 알 것이다.

단 한 번만 라즈베리파이나, Jetson Nano에서 yolov.pt를 통해 실시간 영상 처리를 해보면 

얼마나 빠른 숫자인지 체감이 올 것이다.

 

그래서 그게 너무 아쉬워서 기록에 다 남기려고 한다.

내가 어디서 헤매고 실수했는지 복기도 되고 잘 정리해두면 또 언젠가 쓰게 될 것이다.

 

기회가 될 때마다 들어와서

환경 구성부터 시작해서 Tracker를 완전히 구현하는 것 까지 글로 쌓아 올려나가보겠다.

 

이어지는 글

 

Jetson Nano 에 yolov7 TensorRT 사전 환경 구성

Jetson Nano 4GB에서 yolov7-tiny 모델 기반으로 웹캠으로 들어온 실시간 영상 처리를 해보았습니다. 이 때 실시간 영상 처리 속도는 TensorRT를 사용하여 17fps 를 획득하였는데, 해당 과정에 대해서 설명

cobang.tistory.com

 

 

728x90
반응형